#
CMAKE_MINIMUM_REQUIRED(VERSION 2.8.12 FATAL_ERROR)
+if(POLICY CMP0065)
+ cmake_policy(SET CMP0065 NEW) #3.4 don't use `-rdynamic` with executables
+endif()
if(POLICY CMP0074)
cmake_policy(SET CMP0074 NEW) #3.12.0 `find_package()`` uses ``<PackageName>_ROOT`` variables.
endif()
SET(BSDCPIO_VERSION_STRING "${VERSION}")
SET(BSDTAR_VERSION_STRING "${VERSION}")
SET(BSDCAT_VERSION_STRING "${VERSION}")
+SET(BSDUNZIP_VERSION_STRING "${VERSION}")
SET(LIBARCHIVE_VERSION_NUMBER "${_version_number}")
SET(LIBARCHIVE_VERSION_STRING "${VERSION}")
# Especially for early development, we want to be a little
# aggressive about diagnosing build problems; this can get
# relaxed somewhat in final shipping versions.
-IF (CMAKE_C_COMPILER_ID MATCHES "^GNU$")
- SET(CMAKE_REQUIRED_FLAGS "-Wall -Wformat -Wformat-security")
- #################################################################
- # Set compile flags for all build types.
- SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wformat -Wformat-security")
- if (ENABLE_WERROR)
- SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror")
- endif ()
- #################################################################
- # Set compile flags for debug build.
- # This is added into CMAKE_C_FLAGS when CMAKE_BUILD_TYPE is "Debug"
- SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -Wextra")
- SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -Wunused")
- SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -Wshadow")
- SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -Wmissing-prototypes")
- SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -Wcast-qual")
-ENDIF (CMAKE_C_COMPILER_ID MATCHES "^GNU$")
-IF (CMAKE_C_COMPILER_ID MATCHES "^Clang$")
+IF (CMAKE_C_COMPILER_ID MATCHES "^GNU$" OR
+ CMAKE_C_COMPILER_ID MATCHES "^Clang$")
SET(CMAKE_REQUIRED_FLAGS "-Wall -Wformat -Wformat-security")
#################################################################
# Set compile flags for all build types.
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -Wshadow")
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -Wmissing-prototypes")
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -Wcast-qual")
-ENDIF (CMAKE_C_COMPILER_ID MATCHES "^Clang$")
+ # Ideally this will be a compile/link time check, yet there's no obvious way
+ # how considering how old our minimum required cmake version is. The official
+ # cmake.org side does not host the manual pages even. Normally we can use
+ # either of the following two, yet neither is supported as of 3.0.2
+ # - check_linker_flag - does not exist
+ # - try_compile - does not support linker flags
+ #
+ # The CI fails with this on MacOS
+ IF(NOT CMAKE_SYSTEM_NAME MATCHES "Darwin")
+ # Place the functions and data into separate sections, allowing the linker
+ # to garbage collect the unused ones.
+ SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -ffunction-sections -fdata-sections")
+ SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--gc-sections")
+ SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--gc-sections")
+ # Printing the discarded section is "too much", so enable on demand.
+ #SET(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} -Wl,--print-gc-sections")
+ #SET(CMAKE_SHARED_LINKER_FLAGS_DEBUG "${CMAKE_SHARED_LINKER_FLAGS_DEBUG} -Wl,--print-gc-sections")
+ ENDIF(NOT CMAKE_SYSTEM_NAME MATCHES "Darwin")
+ENDIF (CMAKE_C_COMPILER_ID MATCHES "^GNU$" OR
+ CMAKE_C_COMPILER_ID MATCHES "^Clang$")
IF (CMAKE_C_COMPILER_ID MATCHES "^XL$")
SET(CMAKE_C_COMPILER "xlc_r")
SET(CMAKE_REQUIRED_FLAGS "-qflag=e:e -qformat=sec")
# Enable CTest/CDash support
include(CTest)
+option(BUILD_SHARED_LIBS "Build shared libraries" ON)
+
OPTION(ENABLE_MBEDTLS "Enable use of mbed TLS" OFF)
OPTION(ENABLE_NETTLE "Enable use of Nettle" OFF)
OPTION(ENABLE_OPENSSL "Enable use of OpenSSL" ON)
OPTION(ENABLE_LIBXML2 "Enable the use of the system libxml2 library if found" ON)
OPTION(ENABLE_EXPAT "Enable the use of the system EXPAT library if found" ON)
OPTION(ENABLE_PCREPOSIX "Enable the use of the system PCREPOSIX library if found" ON)
-OPTION(ENABLE_LibGCC "Enable the use of the system LibGCC library if found" ON)
+OPTION(ENABLE_LIBGCC "Enable the use of the system LibGCC library if found" ON)
# CNG is used for encrypt/decrypt Zip archives on Windows.
OPTION(ENABLE_CNG "Enable the use of CNG(Crypto Next Generation)" ON)
OPTION(ENABLE_CPIO_SHARED "Enable dynamic build of cpio" FALSE)
OPTION(ENABLE_CAT "Enable cat building" ON)
OPTION(ENABLE_CAT_SHARED "Enable dynamic build of cat" FALSE)
+IF(WIN32 AND NOT CYGWIN)
+ SET(ENABLE_UNZIP FALSE)
+ SET(ENABLE_UNZIP_SHARED FALSE)
+ELSE()
+ OPTION(ENABLE_UNZIP "Enable unzip building" ON)
+ OPTION(ENABLE_UNZIP_SHARED "Enable dynamic build of unzip" FALSE)
+ENDIF()
OPTION(ENABLE_XATTR "Enable extended attribute support" ON)
OPTION(ENABLE_ACL "Enable ACL support" ON)
OPTION(ENABLE_ICONV "Enable iconv support" ON)
SET(POSIX_REGEX_LIB "AUTO" CACHE STRING "Choose what library should provide POSIX regular expression support")
SET(ENABLE_SAFESEH "AUTO" CACHE STRING "Enable use of /SAFESEH linker flag (MSVC only)")
-SET(WINDOWS_VERSION "WIN7" CACHE STRING "Set Windows version to use (Windows only)")
+SET(WINDOWS_VERSION "WIN10" CACHE STRING "Set Windows version to use (Windows only)")
IF(ENABLE_COVERAGE)
include(LibarchiveCodeCoverage)
ENDIF(ENABLE_TEST)
IF(WIN32)
- IF(WINDOWS_VERSION STREQUAL "WIN8")
+ IF(WINDOWS_VERSION STREQUAL "WIN10")
+ SET(NTDDI_VERSION 0x0A000000)
+ SET(_WIN32_WINNT 0x0A00)
+ SET(WINVER 0x0A00)
+ ELSEIF(WINDOWS_VERSION STREQUAL "WIN8")
SET(NTDDI_VERSION 0x06020000)
SET(_WIN32_WINNT 0x0602)
SET(WINVER 0x0602)
SET(NTDDI_VERSION 0x05010000)
SET(_WIN32_WINNT 0x0501)
SET(WINVER 0x0501)
- ELSE(WINDOWS_VERSION STREQUAL "WIN8")
+ ELSE(WINDOWS_VERSION STREQUAL "WIN10")
# Default to Windows Server 2003 API if we don't recognize the specifier
SET(NTDDI_VERSION 0x05020000)
SET(_WIN32_WINNT 0x0502)
SET(WINVER 0x0502)
- ENDIF(WINDOWS_VERSION STREQUAL "WIN8")
+ ENDIF(WINDOWS_VERSION STREQUAL "WIN10")
ENDIF(WIN32)
IF(MSVC)
IF(MINGW)
ADD_DEFINITIONS(-D__USE_MINGW_ANSI_STDIO)
+ ADD_DEFINITIONS(-D__MINGW_USE_VC2005_COMPAT)
ENDIF()
#
IF("${TRY_TYPE}" MATCHES "COMPILES")
CHECK_C_SOURCE_COMPILES("${SAMPLE_SOURCE}" ${VAR})
ELSEIF("${TRY_TYPE}" MATCHES "RUNS")
- CHECK_C_SOURCE_RUNS("${SAMPLE_SOURCE}" ${VAR})
+ IF(CMAKE_CROSSCOMPILING)
+ MESSAGE(WARNING "Cannot test run \"${VAR}\" when cross-compiling")
+ ELSE(CMAKE_CROSSCOMPILING)
+ CHECK_C_SOURCE_RUNS("${SAMPLE_SOURCE}" ${VAR})
+ ENDIF(CMAKE_CROSSCOMPILING)
ELSE("${TRY_TYPE}" MATCHES "COMPILES")
MESSAGE(FATAL_ERROR "UNKNOWN KEYWORD \"${TRY_TYPE}\" FOR TRY_TYPE")
ENDIF("${TRY_TYPE}" MATCHES "COMPILES")
COMPILES
"#include <lzma.h>\nint main() {return (int)lzma_version_number(); }"
"WITHOUT_LZMA_API_STATIC;LZMA_API_STATIC")
+ CHECK_C_SOURCE_COMPILES(
+ "#include <lzma.h>\n#if LZMA_VERSION < 50020000\n#error unsupported\n#endif\nint main(void){lzma_stream_encoder_mt(0, 0); return 0;}"
+ HAVE_LZMA_STREAM_ENCODER_MT)
IF(NOT WITHOUT_LZMA_API_STATIC AND LZMA_API_STATIC)
ADD_DEFINITIONS(-DLZMA_API_STATIC)
ENDIF(NOT WITHOUT_LZMA_API_STATIC AND LZMA_API_STATIC)
CMAKE_POP_CHECK_STATE()
ELSE(LIBLZMA_FOUND)
# LZMA not found and will not be used.
+ SET(HAVE_LZMA_STREAM_ENCODER_MT 0)
ENDIF(LIBLZMA_FOUND)
MARK_AS_ADVANCED(CLEAR LIBLZMA_INCLUDE_DIR)
MARK_AS_ADVANCED(CLEAR LIBLZMA_LIBRARY)
SET(HAVE_BLAKE2_H 1)
SET(ARCHIVE_BLAKE2 FALSE)
LIST(APPEND ADDITIONAL_LIBS ${LIBB2_LIBRARY})
+ INCLUDE_DIRECTORIES(${LIBB2_INCLUDE_DIR})
CMAKE_PUSH_CHECK_STATE()
SET(CMAKE_REQUIRED_LIBRARIES ${LIBB2_LIBRARY})
SET(CMAKE_REQUIRED_INCLUDES ${LIBB2_INCLUDE_DIR})
SET(ZSTD_FIND_QUIETLY TRUE)
ENDIF (ZSTD_INCLUDE_DIR)
- FIND_PATH(ZSTD_INCLUDE_DIR zstd.h)
- FIND_LIBRARY(ZSTD_LIBRARY NAMES zstd libzstd)
+ IF(UNIX)
+ FIND_PACKAGE(PkgConfig QUIET)
+ PKG_SEARCH_MODULE(PC_ZSTD libzstd)
+ ENDIF()
+
+ FIND_PATH(ZSTD_INCLUDE_DIR zstd.h HINTS ${PC_ZSTD_INCLUDEDIR} ${PC_ZSTD_INCLUDE_DIRS})
+ FIND_LIBRARY(ZSTD_LIBRARY NAMES zstd libzstd HINTS ${PC_ZSTD_LIBDIR} ${PC_ZSTD_LIBRARY_DIRS})
INCLUDE(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(ZSTD DEFAULT_MSG ZSTD_LIBRARY ZSTD_INCLUDE_DIR)
ELSE(ENABLE_ZSTD)
CMAKE_PUSH_CHECK_STATE()
SET(CMAKE_REQUIRED_LIBRARIES ${ZSTD_LIBRARY})
SET(CMAKE_REQUIRED_INCLUDES ${ZSTD_INCLUDE_DIR})
- CHECK_FUNCTION_EXISTS(ZSTD_compressStream HAVE_LIBZSTD)
+ CHECK_FUNCTION_EXISTS(ZSTD_decompressStream HAVE_LIBZSTD)
+ CHECK_FUNCTION_EXISTS(ZSTD_compressStream HAVE_LIBZSTD_COMPRESSOR)
#
# TODO: test for static library.
#
int main(void) { return EXT2_IOC_GETFLAGS; }" HAVE_WORKING_EXT2_IOC_GETFLAGS)
LA_CHECK_INCLUDE_FILE("fcntl.h" HAVE_FCNTL_H)
+LA_CHECK_INCLUDE_FILE("fnmatch.h" HAVE_FNMATCH_H)
LA_CHECK_INCLUDE_FILE("grp.h" HAVE_GRP_H)
LA_CHECK_INCLUDE_FILE("inttypes.h" HAVE_INTTYPES_H)
LA_CHECK_INCLUDE_FILE("io.h" HAVE_IO_H)
LA_CHECK_INCLUDE_FILE("sys/mount.h" HAVE_SYS_MOUNT_H)
LA_CHECK_INCLUDE_FILE("sys/param.h" HAVE_SYS_PARAM_H)
LA_CHECK_INCLUDE_FILE("sys/poll.h" HAVE_SYS_POLL_H)
+LA_CHECK_INCLUDE_FILE("sys/queue.h" HAVE_SYS_QUEUE_H)
LA_CHECK_INCLUDE_FILE("sys/richacl.h" HAVE_SYS_RICHACL_H)
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("wctype.h" HAVE_WCTYPE_H)
LA_CHECK_INCLUDE_FILE("windows.h" HAVE_WINDOWS_H)
IF(ENABLE_CNG)
- LA_CHECK_INCLUDE_FILE("Bcrypt.h" HAVE_BCRYPT_H)
+ LA_CHECK_INCLUDE_FILE("bcrypt.h" HAVE_BCRYPT_H)
IF(HAVE_BCRYPT_H)
- LIST(APPEND ADDITIONAL_LIBS "Bcrypt")
+ LIST(APPEND ADDITIONAL_LIBS "bcrypt")
ENDIF(HAVE_BCRYPT_H)
ELSE(ENABLE_CNG)
UNSET(HAVE_BCRYPT_H CACHE)
SET(HAVE_LIBCRYPTO 1)
INCLUDE_DIRECTORIES(${OPENSSL_INCLUDE_DIR})
LIST(APPEND ADDITIONAL_LIBS ${OPENSSL_CRYPTO_LIBRARY})
+ SET(CMAKE_REQUIRED_LIBRARIES ${OPENSSL_CRYPTO_LIBRARY})
+ SET(CMAKE_REQUIRED_INCLUDES ${OPENSSL_INCLUDE_DIR})
+ LA_CHECK_INCLUDE_FILE("openssl/evp.h" HAVE_OPENSSL_EVP_H)
+ CHECK_FUNCTION_EXISTS(PKCS5_PBKDF2_HMAC_SHA1 HAVE_PKCS5_PBKDF2_HMAC_SHA1)
ENDIF(OPENSSL_FOUND)
ELSE()
SET(OPENSSL_FOUND FALSE) # Override cached value
#
# If requested, try finding library for PCREPOSIX
#
- IF(ENABLE_LibGCC)
- FIND_PACKAGE(LibGCC)
+ IF(ENABLE_LIBGCC)
+ FIND_PACKAGE(LIBGCC)
ELSE()
+ MESSAGE(FATAL_ERROR "libgcc not found.")
SET(LIBGCC_FOUND FALSE) # Override cached value
ENDIF()
IF(ENABLE_PCREPOSIX)
CHECK_FUNCTION_EXISTS_GLIBC(fchown HAVE_FCHOWN)
CHECK_FUNCTION_EXISTS_GLIBC(fcntl HAVE_FCNTL)
CHECK_FUNCTION_EXISTS_GLIBC(fdopendir HAVE_FDOPENDIR)
+CHECK_FUNCTION_EXISTS_GLIBC(fnmatch HAVE_FNMATCH)
CHECK_FUNCTION_EXISTS_GLIBC(fork HAVE_FORK)
CHECK_FUNCTION_EXISTS_GLIBC(fstat HAVE_FSTAT)
CHECK_FUNCTION_EXISTS_GLIBC(fstatat HAVE_FSTATAT)
CHECK_FUNCTION_EXISTS_GLIBC(geteuid HAVE_GETEUID)
CHECK_FUNCTION_EXISTS_GLIBC(getgrgid_r HAVE_GETGRGID_R)
CHECK_FUNCTION_EXISTS_GLIBC(getgrnam_r HAVE_GETGRNAM_R)
+CHECK_FUNCTION_EXISTS_GLIBC(getline HAVE_GETLINE)
CHECK_FUNCTION_EXISTS_GLIBC(getpwnam_r HAVE_GETPWNAM_R)
CHECK_FUNCTION_EXISTS_GLIBC(getpwuid_r HAVE_GETPWUID_R)
CHECK_FUNCTION_EXISTS_GLIBC(getpid HAVE_GETPID)
CHECK_FUNCTION_EXISTS_GLIBC(wcscpy HAVE_WCSCPY)
CHECK_FUNCTION_EXISTS_GLIBC(wcslen HAVE_WCSLEN)
CHECK_FUNCTION_EXISTS_GLIBC(wctomb HAVE_WCTOMB)
-CHECK_FUNCTION_EXISTS_GLIBC(_ctime64_s HAVE__CTIME64_S)
CHECK_FUNCTION_EXISTS_GLIBC(_fseeki64 HAVE__FSEEKI64)
CHECK_FUNCTION_EXISTS_GLIBC(_get_timezone HAVE__GET_TIMEZONE)
-CHECK_FUNCTION_EXISTS_GLIBC(_gmtime64_s HAVE__GMTIME64_S)
-CHECK_FUNCTION_EXISTS_GLIBC(_localtime64_s HAVE__LOCALTIME64_S)
-CHECK_FUNCTION_EXISTS_GLIBC(_mkgmtime64 HAVE__MKGMTIME64)
+CHECK_SYMBOL_EXISTS(ctime_s "time.h" HAVE_CTIME_S)
+CHECK_SYMBOL_EXISTS(gmtime_s "time.h" HAVE_GMTIME_S)
+CHECK_SYMBOL_EXISTS(localtime_s "time.h" HAVE_LOCALTIME_S)
+CHECK_SYMBOL_EXISTS(_mkgmtime "time.h" HAVE__MKGMTIME)
SET(CMAKE_REQUIRED_LIBRARIES "")
CHECK_FUNCTION_EXISTS(cygwin_conv_path HAVE_CYGWIN_CONV_PATH)
"#include <fcntl.h>\n#include <unistd.h>\nint main() {char buf[10]; return readlinkat(AT_FDCWD, \"\", buf, 0);}"
HAVE_READLINKAT)
-
# To verify major(), we need to both include the header
# of interest and verify that the result can be linked.
# CHECK_FUNCTION_EXISTS doesn't accept a header argument,
"#include <sys/sysmacros.h>\nint main() { return major(256); }"
MAJOR_IN_SYSMACROS)
-IF(ENABLE_LZMA)
-CHECK_C_SOURCE_COMPILES(
- "#include <lzma.h>\n#if LZMA_VERSION < 50020000\n#error unsupported\n#endif\nint main(void){lzma_stream_encoder_mt(0, 0); return 0;}"
- HAVE_LZMA_STREAM_ENCODER_MT)
-ELSE()
- SET(HAVE_LZMA_STREAM_ENCODER_MT 0)
-ENDIF(ENABLE_LZMA)
-
IF(HAVE_STRERROR_R)
SET(HAVE_DECL_STRERROR_R 1)
ENDIF(HAVE_STRERROR_R)
#
#
CHECK_STRUCT_HAS_MEMBER("struct tm" tm_sec
- "sys/types.h;sys/time.h;time.h" TIME_WITH_SYS_TIME)
+ "sys/types.h;sys/time.h;time.h" HAVE_SYS_TIME_H)
#
# Check for integer types
#
#
-CHECK_TYPE_SIZE("short" SIZE_OF_SHORT)
-CHECK_TYPE_SIZE("int" SIZE_OF_INT)
-CHECK_TYPE_SIZE("long" SIZE_OF_LONG)
-CHECK_TYPE_SIZE("long long" SIZE_OF_LONG_LONG)
+CHECK_TYPE_SIZE("short" SIZEOF_SHORT)
+CHECK_TYPE_SIZE("int" SIZEOF_INT)
+CHECK_TYPE_SIZE("long" SIZEOF_LONG)
+CHECK_TYPE_SIZE("long long" SIZEOF_LONG_LONG)
-CHECK_TYPE_SIZE("unsigned short" SIZE_OF_UNSIGNED_SHORT)
-CHECK_TYPE_SIZE("unsigned" SIZE_OF_UNSIGNED)
-CHECK_TYPE_SIZE("unsigned long" SIZE_OF_UNSIGNED_LONG)
-CHECK_TYPE_SIZE("unsigned long long" SIZE_OF_UNSIGNED_LONG_LONG)
+CHECK_TYPE_SIZE("unsigned short" SIZEOF_UNSIGNED_SHORT)
+CHECK_TYPE_SIZE("unsigned" SIZEOF_UNSIGNED)
+CHECK_TYPE_SIZE("unsigned long" SIZEOF_UNSIGNED_LONG)
+CHECK_TYPE_SIZE("unsigned long long" SIZEOF_UNSIGNED_LONG_LONG)
CHECK_TYPE_SIZE("__int64" __INT64)
CHECK_TYPE_SIZE("unsigned __int64" UNSIGNED___INT64)
CHECK_CRYPTO_WIN("MD5;SHA1;SHA256;SHA384;SHA512")
+# Check visibility annotations
+SET(OLD_CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS}")
+SET(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -fvisibility=hidden -Werror")
+CHECK_C_SOURCE_COMPILES("void __attribute__((visibility(\"default\"))) foo(void);
+int main() { return 0; }" HAVE_VISIBILITY_ATTR)
+IF (HAVE_VISIBILITY_ATTR)
+ SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fvisibility=hidden")
+ ADD_DEFINITIONS(-D__LIBARCHIVE_ENABLE_VISIBILITY)
+ENDIF(HAVE_VISIBILITY_ATTR)
+SET(CMAKE_REQUIRED_FLAGS "${OLD_CMAKE_REQUIRED_FLAGS}")
+
# Generate "config.h" from "build/cmake/config.h.in"
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/build/cmake/config.h.in
${CMAKE_CURRENT_BINARY_DIR}/config.h)
add_subdirectory(cat)
add_subdirectory(tar)
add_subdirectory(cpio)
+add_subdirectory(unzip)
#
lib_LTLIBRARIES= libarchive.la
noinst_LTLIBRARIES= libarchive_fe.la
-bin_PROGRAMS= $(bsdtar_programs) $(bsdcpio_programs) $(bsdcat_programs)
-man_MANS= $(libarchive_man_MANS) $(bsdtar_man_MANS) $(bsdcpio_man_MANS) $(bsdcat_man_MANS)
-BUILT_SOURCES= libarchive/test/list.h tar/test/list.h cpio/test/list.h cat/test/list.h
+bin_PROGRAMS= $(bsdtar_programs) $(bsdcpio_programs) $(bsdcat_programs) $(bsdunzip_programs)
+man_MANS= $(libarchive_man_MANS) $(bsdtar_man_MANS) $(bsdcpio_man_MANS) $(bsdcat_man_MANS) $(bsdunzip_man_MANS)
+BUILT_SOURCES= libarchive/test/list.h tar/test/list.h cpio/test/list.h cat/test/list.h unzip/test/list.h
#
# What to test: We always test libarchive, test bsdtar and bsdcpio only
# if we built them.
#
-check_PROGRAMS= libarchive_test $(bsdtar_test_programs) $(bsdcpio_test_programs) $(bsdcat_test_programs)
-TESTS= libarchive_test $(bsdtar_test_programs) $(bsdcpio_test_programs) $(bsdcat_test_programs)
-TESTS_ENVIRONMENT= $(libarchive_TESTS_ENVIRONMENT) $(bsdtar_TESTS_ENVIRONMENT) $(bsdcpio_TESTS_ENVIRONMENT) $(bsdcat_TESTS_ENVIRONMENT)
+check_PROGRAMS= libarchive_test $(bsdtar_test_programs) $(bsdcpio_test_programs) $(bsdcat_test_programs) $(bsdunzip_test_programs)
+TESTS= libarchive_test $(bsdtar_test_programs) $(bsdcpio_test_programs) $(bsdcat_test_programs) $(bsdunzip_test_programs)
+TESTS_ENVIRONMENT= $(libarchive_TESTS_ENVIRONMENT) $(bsdtar_TESTS_ENVIRONMENT) $(bsdcpio_TESTS_ENVIRONMENT) $(bsdcat_TESTS_ENVIRONMENT) $(bsdunzip_TESTS_ENVIRONMENT)
# Always build and test both bsdtar and bsdcpio as part of 'distcheck'
DISTCHECK_CONFIGURE_FLAGS = --enable-bsdtar --enable-bsdcpio
# The next line is commented out by default in shipping libarchive releases.
$(bsdcpio_EXTRA_DIST) \
$(bsdcpio_test_EXTRA_DIST) \
$(bsdcat_EXTRA_DIST) \
- $(bsdcat_test_EXTRA_DIST)
+ $(bsdcat_test_EXTRA_DIST) \
+ $(bsdunzip_EXTRA_DIST) \
+ $(bsdunzip_test_EXTRA_DIST)
# a) Clean out some unneeded files and directories
# b) Collect all documentation and format it for distribution.
libarchive/test/list.h \
tar/test/list.h \
cpio/test/list.h \
- cat/test/list.h
+ cat/test/list.h \
+ unzip/test/list.h
distclean-local:
-rm -rf .ref
-[ -f cpio/Makefile ] && cd cpio && make clean
-[ -f cpio/test/Makefile ] && cd cpio/test && make clean
-[ -f cat/Makefile ] && cd cat && make clean
- -[ -f cpio/test/Makefile ] && cd cat/test && make clean
+ -[ -f cat/test/Makefile ] && cd cat/test && make clean
+ -[ -f unzip/Makefile ] && cd unzip && make clean
+ -[ -f unzip/test/Makefile ] && cd unzip/test && make clean
#
# Libarchive headers, source, etc.
# -no-undefined marks that libarchive doesn't rely on symbols
# defined in the application. This is mandatory for cygwin.
-libarchive_la_LDFLAGS= -no-undefined -version-info $(ARCHIVE_LIBTOOL_VERSION)
+libarchive_la_LDFLAGS= -no-undefined -version-info $(ARCHIVE_LIBTOOL_VERSION) $(GC_SECTIONS)
libarchive_la_LIBADD= $(LTLIBICONV)
# Manpages to install
libarchive/test/test_compat_solaris_tar_acl.c \
libarchive/test/test_compat_solaris_pax_sparse.c \
libarchive/test/test_compat_star_acl.c \
+ libarchive/test/test_compat_tar_directory.c \
libarchive/test/test_compat_tar_hardlink.c \
libarchive/test/test_compat_uudecode.c \
libarchive/test/test_compat_uudecode_large.c \
libarchive/test/test_read_filter_program.c \
libarchive/test/test_read_filter_program_signature.c \
libarchive/test/test_read_filter_uudecode.c \
+ libarchive/test/test_read_filter_uudecode_raw.c \
libarchive/test/test_read_format_7zip.c \
libarchive/test/test_read_format_7zip_encryption_data.c \
libarchive/test/test_read_format_7zip_encryption_partially.c \
libarchive/test/test_read_format_rar_encryption_data.c \
libarchive/test/test_read_format_rar_encryption_partially.c \
libarchive/test/test_read_format_rar_encryption_header.c \
+ libarchive/test/test_read_format_rar_filter.c \
libarchive/test/test_read_format_rar_invalid1.c \
libarchive/test/test_read_format_rar5.c \
libarchive/test/test_read_format_raw.c \
libarchive/test/test_read_format_tar_empty_filename.c \
libarchive/test/test_read_format_tar_empty_with_gnulabel.c \
libarchive/test/test_read_format_tar_filename.c \
+ libarchive/test/test_read_format_tar_invalid_pax_size.c \
libarchive/test/test_read_format_tbz.c \
libarchive/test/test_read_format_tgz.c \
libarchive/test/test_read_format_tlz.c \
libarchive/test/test_write_format_xar_empty.c \
libarchive/test/test_write_format_zip.c \
libarchive/test/test_write_format_zip_compression_store.c \
+ libarchive/test/test_write_format_zip_entry_size_unset.c \
libarchive/test/test_write_format_zip_empty.c \
libarchive/test/test_write_format_zip_empty_zip64.c \
libarchive/test/test_write_format_zip_file.c \
libarchive/test/test_compat_solaris_tar_acl.tar.uu \
libarchive/test/test_compat_star_acl_nfs4.tar.uu \
libarchive/test/test_compat_star_acl_posix1e.tar.uu \
+ libarchive/test/test_compat_tar_directory_1.tar.uu \
libarchive/test/test_compat_tar_hardlink_1.tar.uu \
libarchive/test/test_compat_uudecode_large.tar.Z.uu \
libarchive/test/test_compat_xz_1.txz.uu \
libarchive/test/test_read_filter_lrzip.tar.lrz.uu \
libarchive/test/test_read_filter_lzop.tar.lzo.uu \
libarchive/test/test_read_filter_lzop_multiple_parts.tar.lzo.uu \
+ libarchive/test/test_read_filter_uudecode_raw.uu \
+ libarchive/test/test_read_filter_uudecode_base64_raw.uu \
libarchive/test/test_read_format_mtree_crash747.mtree.bz2.uu \
libarchive/test/test_read_format_mtree_noprint.mtree.uu \
libarchive/test/test_read_format_7zip_bcj2_bzip2.7z.uu \
libarchive/test/test_read_format_7zip_copy.7z.uu \
libarchive/test/test_read_format_7zip_copy_2.7z.uu \
libarchive/test/test_read_format_7zip_deflate.7z.uu \
+ libarchive/test/test_read_format_7zip_deflate_arm64.7z.uu \
libarchive/test/test_read_format_7zip_delta_lzma1.7z.uu \
libarchive/test/test_read_format_7zip_delta4_lzma1.7z.uu \
libarchive/test/test_read_format_7zip_delta_lzma2.7z.uu \
libarchive/test/test_read_format_7zip_lzma1_2.7z.uu \
libarchive/test/test_read_format_7zip_lzma1_lzma2.7z.uu \
libarchive/test/test_read_format_7zip_lzma2.7z.uu \
+ libarchive/test/test_read_format_7zip_lzma2_arm64.7z.uu \
+ libarchive/test/test_read_format_7zip_lzma2_arm.7z.uu \
libarchive/test/test_read_format_7zip_malformed.7z.uu \
libarchive/test/test_read_format_7zip_malformed2.7z.uu \
libarchive/test/test_read_format_7zip_packinfo_digests.7z.uu \
libarchive/test/test_read_format_7zip_ppmd.7z.uu \
+ libarchive/test/test_read_format_7zip_solid_zstd.7z.uu \
libarchive/test/test_read_format_7zip_symbolic_name.7z.uu \
+ libarchive/test/test_read_format_7zip_win_attrib.7z.uu \
+ libarchive/test/test_read_format_7zip_zstd_arm.7z.uu \
+ libarchive/test/test_read_format_7zip_zstd_bcj.7z.uu \
+ libarchive/test/test_read_format_7zip_zstd_nobcj.7z.uu \
+ libarchive/test/test_read_format_7zip_zstd.7z.uu \
libarchive/test/test_read_format_ar.ar.uu \
libarchive/test/test_read_format_cab_1.cab.uu \
libarchive/test/test_read_format_cab_2.cab.uu \
libarchive/test/test_read_format_rar_encryption_data.rar.uu \
libarchive/test/test_read_format_rar_encryption_header.rar.uu \
libarchive/test/test_read_format_rar_encryption_partially.rar.uu \
+ libarchive/test/test_read_format_rar_filter.rar.uu \
libarchive/test/test_read_format_rar_invalid1.rar.uu \
libarchive/test/test_read_format_rar_multi_lzss_blocks.rar.uu \
libarchive/test/test_read_format_rar_multivolume.part0001.rar.uu \
libarchive/test/test_read_format_rar5_nonempty_dir_stream.rar.uu \
libarchive/test/test_read_format_rar5_owner.rar.uu \
libarchive/test/test_read_format_rar5_readtables_overflow.rar.uu \
+ libarchive/test/test_read_format_rar5_sfx.exe.uu \
libarchive/test/test_read_format_rar5_solid.rar.uu \
libarchive/test/test_read_format_rar5_stored.rar.uu \
libarchive/test/test_read_format_rar5_stored_manyfiles.rar.uu \
libarchive/test/test_read_format_rar5_arm_filter_on_window_boundary.rar.uu \
libarchive/test/test_read_format_rar5_different_winsize_on_merge.rar.uu \
libarchive/test/test_read_format_rar5_block_size_is_too_small.rar.uu \
+ libarchive/test/test_read_format_rar5_decode_number_out_of_bounds_read.rar.uu \
+ libarchive/test/test_read_format_rar5_window_buf_and_size_desync.rar.uu \
+ libarchive/test/test_read_format_rar5_bad_window_sz_in_mltarc_file.rar.uu \
libarchive/test/test_read_format_raw.bufr.uu \
libarchive/test/test_read_format_raw.data.gz.uu \
libarchive/test/test_read_format_raw.data.Z.uu \
libarchive/test/test_read_format_tar_empty_with_gnulabel.tar.uu \
libarchive/test/test_read_format_tar_empty_pax.tar.Z.uu \
libarchive/test/test_read_format_tar_filename_koi8r.tar.Z.uu \
+ libarchive/test/test_read_format_tar_invalid_pax_size.tar.uu \
libarchive/test/test_read_format_ustar_filename_cp866.tar.Z.uu \
libarchive/test/test_read_format_ustar_filename_eucjp.tar.Z.uu \
libarchive/test/test_read_format_ustar_filename_koi8r.tar.Z.uu \
libarchive/test/test_read_format_zip_xz_multi.zipx.uu \
libarchive/test/test_read_format_zip_zip64a.zip.uu \
libarchive/test/test_read_format_zip_zip64b.zip.uu \
+ libarchive/test/test_read_format_zip_zstd.zipx.uu \
+ libarchive/test/test_read_format_zip_zstd_multi.zipx.uu \
libarchive/test/test_read_large_splitted_rar_aa.uu \
libarchive/test/test_read_large_splitted_rar_ab.uu \
libarchive/test/test_read_large_splitted_rar_ac.uu \
bsdtar_LDADD= libarchive.la libarchive_fe.la $(LTLIBICONV)
bsdtar_CPPFLAGS= -I$(top_srcdir)/libarchive -I$(top_srcdir)/libarchive_fe $(bsdtar_ccstatic) $(PLATFORMCPPFLAGS)
-bsdtar_LDFLAGS= $(bsdtar_ldstatic)
+bsdtar_LDFLAGS= $(bsdtar_ldstatic) $(GC_SECTIONS)
bsdtar_EXTRA_DIST= \
tar/bsdtar.1 \
tar/test/test_option_fflags.c \
tar/test/test_option_gid_gname.c \
tar/test/test_option_grzip.c \
+ tar/test/test_option_ignore_zeros.c \
tar/test/test_option_j.c \
tar/test/test_option_k.c \
tar/test/test_option_keep_newer_files.c \
bsdcpio_LDADD= libarchive_fe.la libarchive.la $(LTLIBICONV)
bsdcpio_CPPFLAGS= -I$(top_srcdir)/libarchive -I$(top_srcdir)/libarchive_fe $(bsdcpio_ccstatic) $(PLATFORMCPPFLAGS)
-bsdcpio_LDFLAGS= $(bsdcpio_ldstatic)
+bsdcpio_LDFLAGS= $(bsdcpio_ldstatic) $(GC_SECTIONS)
bsdcpio_EXTRA_DIST= \
cpio/bsdcpio.1 \
bsdcat_LDADD= libarchive_fe.la libarchive.la $(LTLIBICONV)
bsdcat_CPPFLAGS= -I$(top_srcdir)/libarchive -I$(top_srcdir)/libarchive_fe $(bsdcat_ccstatic) $(PLATFORMCPPFLAGS)
-bsdcat_LDFLAGS= $(bsdcat_ldstatic)
+bsdcat_LDFLAGS= $(bsdcat_ldstatic) $(GC_SECTIONS)
bsdcat_EXTRA_DIST= \
cat/bsdcat.1 \
bsdcat_test_LDADD=libarchive_fe.la
cat/test/list.h: Makefile
+ $(MKDIR_P) cat/test
cat $(top_srcdir)/cat/test/test_*.c | grep '^DEFINE_TEST' > cat/test/list.h
if BUILD_BSDCAT
cat/test/test_expand.plain.uu \
cat/test/test_expand.xz.uu \
cat/test/CMakeLists.txt
+
+#
+#
+# bsdunzip source, docs, etc.
+#
+#
+
+bsdunzip_SOURCES= \
+ unzip/bsdunzip.c \
+ unzip/bsdunzip.h \
+ unzip/bsdunzip_platform.h \
+ unzip/cmdline.c \
+ unzip/la_getline.c \
+ unzip/la_queue.h
+
+if INC_WINDOWS_FILES
+bsdunzip_SOURCES+=
+endif
+
+bsdunzip_DEPENDENCIES = libarchive.la libarchive_fe.la
+
+
+if STATIC_BSDUNZIP
+bsdunzip_ldstatic= -static
+bsdunzip_ccstatic= -DLIBARCHIVE_STATIC
+else
+bsdunzip_ldstatic=
+bsdunzip_ccstatic=
+endif
+
+bsdunzip_LDADD= libarchive_fe.la libarchive.la $(LTLIBICONV)
+bsdunzip_CPPFLAGS= -I$(top_srcdir)/libarchive -I$(top_srcdir)/libarchive_fe $(bsdunzip_ccstatic) $(PLATFORMCPPFLAGS)
+bsdunzip_LDFLAGS= $(bsdunzip_ldstatic) $(GC_SECTIONS)
+
+bsdunzip_EXTRA_DIST= \
+ unzip/bsdunzip.1 \
+ unzip/CMakeLists.txt
+
+
+if BUILD_BSDUNZIP
+# Manpages to install
+bsdunzip_man_MANS= unzip/bsdunzip.1
+bsdunzip_programs= bsdunzip
+else
+bsdunzip_man_MANS=
+bsdunzip_programs=
+endif
+
+#
+# bsdunzip_test
+#
+
+bsdunzip_test_SOURCES= \
+ $(test_utils_SOURCES) \
+ unzip/test/test.h \
+ unzip/test/test_0.c \
+ unzip/test/test_basic.c \
+ unzip/test/test_glob.c \
+ unzip/test/test_not_exist.c \
+ unzip/test/test_singlefile.c \
+ unzip/test/test_C.c \
+ unzip/test/test_p.c \
+ unzip/test/test_d.c \
+ unzip/test/test_j.c \
+ unzip/test/test_L.c \
+ unzip/test/test_n.c \
+ unzip/test/test_o.c \
+ unzip/test/test_q.c \
+ unzip/test/test_t.c \
+ unzip/test/test_t_bad.c \
+ unzip/test/test_version.c \
+ unzip/test/test_x.c \
+ unzip/test/test_Z1.c \
+ unzip/test/test_P_encryption.c
+
+bsdunzip_test_CPPFLAGS= \
+ -I$(top_srcdir)/libarchive -I$(top_srcdir)/libarchive_fe \
+ -I$(top_srcdir)/test_utils \
+ -I$(top_srcdir)/unzip -I$(top_srcdir)/unzip/test \
+ -I$(top_builddir)/unzip/test \
+ $(PLATFORMCPPFLAGS)
+bsdunzip_test_LDADD=libarchive_fe.la
+
+unzip/test/list.h: Makefile
+ $(MKDIR_P) unzip/test
+ cat $(top_srcdir)/unzip/test/test_*.c | grep '^DEFINE_TEST' > unzip/test/list.h
+
+if BUILD_BSDUNZIP
+bsdunzip_test_programs= bsdunzip_test
+bsdunzip_TESTS_ENVIRONMENT= BSDUNZIP=`cd $(top_builddir);/bin/pwd`/bsdunzip$(EXEEXT) BSDUNZIP_TEST_FILES=`cd $(top_srcdir);/bin/pwd`/unzip/test
+else
+bsdunzip_test_programs=
+bsdunzip_TESTS_ENVIRONMENT=
+endif
+
+bsdunzip_test_EXTRA_DIST= \
+ unzip/test/list.h \
+ unzip/test/test_basic.zip.uu \
+ unzip/test/test_encrypted.zip.uu \
+ unzip/test/test_singlefile.zip.uu \
+ unzip/test/test_t_bad.zip.uu \
+ unzip/test/CMakeLists.txt
-# Makefile.in generated by automake 1.16.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.5 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2018 Free Software Foundation, Inc.
+# Copyright (C) 1994-2021 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
-bin_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3)
-check_PROGRAMS = libarchive_test$(EXEEXT) $(am__EXEEXT_4) \
- $(am__EXEEXT_5) $(am__EXEEXT_6)
-TESTS = libarchive_test$(EXEEXT) $(am__EXEEXT_4) $(am__EXEEXT_5) \
- $(am__EXEEXT_6)
+bin_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
+ $(am__EXEEXT_4)
+check_PROGRAMS = libarchive_test$(EXEEXT) $(am__EXEEXT_5) \
+ $(am__EXEEXT_6) $(am__EXEEXT_7) $(am__EXEEXT_8)
+TESTS = libarchive_test$(EXEEXT) $(am__EXEEXT_5) $(am__EXEEXT_6) \
+ $(am__EXEEXT_7) $(am__EXEEXT_8)
@INC_WINDOWS_FILES_TRUE@am__append_1 = \
@INC_WINDOWS_FILES_TRUE@ libarchive/archive_entry_copy_bhfi.c \
@INC_WINDOWS_FILES_TRUE@ libarchive/archive_read_disk_windows.c \
@INC_WINDOWS_FILES_TRUE@ cpio/cpio_windows.c
@INC_WINDOWS_FILES_TRUE@am__append_9 =
+@INC_WINDOWS_FILES_TRUE@am__append_10 =
subdir = .
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = \
$(top_srcdir)/build/autoconf/lib-ld.m4 \
$(top_srcdir)/build/autoconf/lib-link.m4 \
$(top_srcdir)/build/autoconf/lib-prefix.m4 \
+ $(top_srcdir)/build/autoconf/m4_ax_compile_check_sizeof.m4 \
$(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
@BUILD_BSDTAR_TRUE@am__EXEEXT_1 = bsdtar$(EXEEXT)
@BUILD_BSDCPIO_TRUE@am__EXEEXT_2 = bsdcpio$(EXEEXT)
@BUILD_BSDCAT_TRUE@am__EXEEXT_3 = bsdcat$(EXEEXT)
+@BUILD_BSDUNZIP_TRUE@am__EXEEXT_4 = bsdunzip$(EXEEXT)
am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(libdir)" \
"$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man3dir)" \
"$(DESTDIR)$(man5dir)" "$(DESTDIR)$(pkgconfigdir)" \
"$(DESTDIR)$(includedir)"
-@BUILD_BSDTAR_TRUE@am__EXEEXT_4 = bsdtar_test$(EXEEXT)
-@BUILD_BSDCPIO_TRUE@am__EXEEXT_5 = bsdcpio_test$(EXEEXT)
-@BUILD_BSDCAT_TRUE@am__EXEEXT_6 = bsdcat_test$(EXEEXT)
+@BUILD_BSDTAR_TRUE@am__EXEEXT_5 = bsdtar_test$(EXEEXT)
+@BUILD_BSDCPIO_TRUE@am__EXEEXT_6 = bsdcpio_test$(EXEEXT)
+@BUILD_BSDCAT_TRUE@am__EXEEXT_7 = bsdcat_test$(EXEEXT)
+@BUILD_BSDUNZIP_TRUE@am__EXEEXT_8 = bsdunzip_test$(EXEEXT)
PROGRAMS = $(bin_PROGRAMS)
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
tar/test/bsdtar_test-test_option_fflags.$(OBJEXT) \
tar/test/bsdtar_test-test_option_gid_gname.$(OBJEXT) \
tar/test/bsdtar_test-test_option_grzip.$(OBJEXT) \
+ tar/test/bsdtar_test-test_option_ignore_zeros.$(OBJEXT) \
tar/test/bsdtar_test-test_option_j.$(OBJEXT) \
tar/test/bsdtar_test-test_option_k.$(OBJEXT) \
tar/test/bsdtar_test-test_option_keep_newer_files.$(OBJEXT) \
tar/test/bsdtar_test-test_windows.$(OBJEXT)
bsdtar_test_OBJECTS = $(am_bsdtar_test_OBJECTS)
bsdtar_test_LDADD = $(LDADD)
+am_bsdunzip_OBJECTS = unzip/bsdunzip-bsdunzip.$(OBJEXT) \
+ unzip/bsdunzip-cmdline.$(OBJEXT) \
+ unzip/bsdunzip-la_getline.$(OBJEXT) $(am__objects_7)
+bsdunzip_OBJECTS = $(am_bsdunzip_OBJECTS)
+bsdunzip_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(bsdunzip_LDFLAGS) $(LDFLAGS) -o $@
+am__objects_13 = test_utils/bsdunzip_test-test_utils.$(OBJEXT) \
+ test_utils/bsdunzip_test-test_main.$(OBJEXT)
+am_bsdunzip_test_OBJECTS = $(am__objects_13) \
+ unzip/test/bsdunzip_test-test_0.$(OBJEXT) \
+ unzip/test/bsdunzip_test-test_basic.$(OBJEXT) \
+ unzip/test/bsdunzip_test-test_glob.$(OBJEXT) \
+ unzip/test/bsdunzip_test-test_not_exist.$(OBJEXT) \
+ unzip/test/bsdunzip_test-test_singlefile.$(OBJEXT) \
+ unzip/test/bsdunzip_test-test_C.$(OBJEXT) \
+ unzip/test/bsdunzip_test-test_p.$(OBJEXT) \
+ unzip/test/bsdunzip_test-test_d.$(OBJEXT) \
+ unzip/test/bsdunzip_test-test_j.$(OBJEXT) \
+ unzip/test/bsdunzip_test-test_L.$(OBJEXT) \
+ unzip/test/bsdunzip_test-test_n.$(OBJEXT) \
+ unzip/test/bsdunzip_test-test_o.$(OBJEXT) \
+ unzip/test/bsdunzip_test-test_q.$(OBJEXT) \
+ unzip/test/bsdunzip_test-test_t.$(OBJEXT) \
+ unzip/test/bsdunzip_test-test_t_bad.$(OBJEXT) \
+ unzip/test/bsdunzip_test-test_version.$(OBJEXT) \
+ unzip/test/bsdunzip_test-test_x.$(OBJEXT) \
+ unzip/test/bsdunzip_test-test_Z1.$(OBJEXT) \
+ unzip/test/bsdunzip_test-test_P_encryption.$(OBJEXT)
+bsdunzip_test_OBJECTS = $(am_bsdunzip_test_OBJECTS)
+bsdunzip_test_DEPENDENCIES = libarchive_fe.la
am__libarchive_test_SOURCES_DIST = libarchive/archive_acl.c \
libarchive/archive_acl_private.h \
libarchive/archive_check_magic.c libarchive/archive_cmdline.c \
libarchive/test/test_compat_solaris_tar_acl.c \
libarchive/test/test_compat_solaris_pax_sparse.c \
libarchive/test/test_compat_star_acl.c \
+ libarchive/test/test_compat_tar_directory.c \
libarchive/test/test_compat_tar_hardlink.c \
libarchive/test/test_compat_uudecode.c \
libarchive/test/test_compat_uudecode_large.c \
libarchive/test/test_read_filter_program.c \
libarchive/test/test_read_filter_program_signature.c \
libarchive/test/test_read_filter_uudecode.c \
+ libarchive/test/test_read_filter_uudecode_raw.c \
libarchive/test/test_read_format_7zip.c \
libarchive/test/test_read_format_7zip_encryption_data.c \
libarchive/test/test_read_format_7zip_encryption_partially.c \
libarchive/test/test_read_format_rar_encryption_data.c \
libarchive/test/test_read_format_rar_encryption_partially.c \
libarchive/test/test_read_format_rar_encryption_header.c \
+ libarchive/test/test_read_format_rar_filter.c \
libarchive/test/test_read_format_rar_invalid1.c \
libarchive/test/test_read_format_rar5.c \
libarchive/test/test_read_format_raw.c \
libarchive/test/test_read_format_tar_empty_filename.c \
libarchive/test/test_read_format_tar_empty_with_gnulabel.c \
libarchive/test/test_read_format_tar_filename.c \
+ libarchive/test/test_read_format_tar_invalid_pax_size.c \
libarchive/test/test_read_format_tbz.c \
libarchive/test/test_read_format_tgz.c \
libarchive/test/test_read_format_tlz.c \
libarchive/test/test_write_format_xar_empty.c \
libarchive/test/test_write_format_zip.c \
libarchive/test/test_write_format_zip_compression_store.c \
+ libarchive/test/test_write_format_zip_entry_size_unset.c \
libarchive/test/test_write_format_zip_empty.c \
libarchive/test/test_write_format_zip_empty_zip64.c \
libarchive/test/test_write_format_zip_file.c \
libarchive/test/test_write_read_format_zip.c \
libarchive/test/test_xattr_platform.c \
libarchive/test/test_zip_filename_encoding.c
-@INC_WINDOWS_FILES_TRUE@am__objects_13 = libarchive/test-archive_entry_copy_bhfi.$(OBJEXT) \
+@INC_WINDOWS_FILES_TRUE@am__objects_14 = libarchive/test-archive_entry_copy_bhfi.$(OBJEXT) \
@INC_WINDOWS_FILES_TRUE@ libarchive/test-archive_read_disk_windows.$(OBJEXT) \
@INC_WINDOWS_FILES_TRUE@ libarchive/test-archive_windows.$(OBJEXT) \
@INC_WINDOWS_FILES_TRUE@ libarchive/test-archive_write_disk_windows.$(OBJEXT) \
@INC_WINDOWS_FILES_TRUE@ libarchive/test-filter_fork_windows.$(OBJEXT)
-@INC_BLAKE2_TRUE@am__objects_14 = libarchive/test-archive_blake2s_ref.$(OBJEXT) \
+@INC_BLAKE2_TRUE@am__objects_15 = libarchive/test-archive_blake2s_ref.$(OBJEXT) \
@INC_BLAKE2_TRUE@ libarchive/test-archive_blake2sp_ref.$(OBJEXT)
-@INC_LINUX_ACL_TRUE@am__objects_15 = libarchive/test-archive_disk_acl_linux.$(OBJEXT)
-@INC_LINUX_ACL_FALSE@@INC_SUNOS_ACL_TRUE@am__objects_16 = libarchive/test-archive_disk_acl_sunos.$(OBJEXT)
-@INC_DARWIN_ACL_TRUE@@INC_LINUX_ACL_FALSE@@INC_SUNOS_ACL_FALSE@am__objects_17 = libarchive/test-archive_disk_acl_darwin.$(OBJEXT)
-@INC_DARWIN_ACL_FALSE@@INC_FREEBSD_ACL_TRUE@@INC_LINUX_ACL_FALSE@@INC_SUNOS_ACL_FALSE@am__objects_18 = libarchive/test-archive_disk_acl_freebsd.$(OBJEXT)
-am__objects_19 = libarchive/test-archive_acl.$(OBJEXT) \
+@INC_LINUX_ACL_TRUE@am__objects_16 = libarchive/test-archive_disk_acl_linux.$(OBJEXT)
+@INC_LINUX_ACL_FALSE@@INC_SUNOS_ACL_TRUE@am__objects_17 = libarchive/test-archive_disk_acl_sunos.$(OBJEXT)
+@INC_DARWIN_ACL_TRUE@@INC_LINUX_ACL_FALSE@@INC_SUNOS_ACL_FALSE@am__objects_18 = libarchive/test-archive_disk_acl_darwin.$(OBJEXT)
+@INC_DARWIN_ACL_FALSE@@INC_FREEBSD_ACL_TRUE@@INC_LINUX_ACL_FALSE@@INC_SUNOS_ACL_FALSE@am__objects_19 = libarchive/test-archive_disk_acl_freebsd.$(OBJEXT)
+am__objects_20 = libarchive/test-archive_acl.$(OBJEXT) \
libarchive/test-archive_check_magic.$(OBJEXT) \
libarchive/test-archive_cmdline.$(OBJEXT) \
libarchive/test-archive_cryptor.$(OBJEXT) \
libarchive/test-archive_write_set_options.$(OBJEXT) \
libarchive/test-archive_write_set_passphrase.$(OBJEXT) \
libarchive/test-filter_fork_posix.$(OBJEXT) \
- libarchive/test-xxhash.$(OBJEXT) $(am__objects_13) \
- $(am__objects_14) $(am__objects_15) $(am__objects_16) \
- $(am__objects_17) $(am__objects_18)
-am__objects_20 = test_utils/libarchive_test-test_utils.$(OBJEXT) \
+ libarchive/test-xxhash.$(OBJEXT) $(am__objects_14) \
+ $(am__objects_15) $(am__objects_16) $(am__objects_17) \
+ $(am__objects_18) $(am__objects_19)
+am__objects_21 = test_utils/libarchive_test-test_utils.$(OBJEXT) \
test_utils/libarchive_test-test_main.$(OBJEXT)
-am_libarchive_test_OBJECTS = $(am__objects_19) $(am__objects_20) \
+am_libarchive_test_OBJECTS = $(am__objects_20) $(am__objects_21) \
libarchive/test/test-read_open_memory.$(OBJEXT) \
libarchive/test/test-test_acl_nfs4.$(OBJEXT) \
libarchive/test/test-test_acl_pax.$(OBJEXT) \
libarchive/test/test-test_compat_solaris_tar_acl.$(OBJEXT) \
libarchive/test/test-test_compat_solaris_pax_sparse.$(OBJEXT) \
libarchive/test/test-test_compat_star_acl.$(OBJEXT) \
+ libarchive/test/test-test_compat_tar_directory.$(OBJEXT) \
libarchive/test/test-test_compat_tar_hardlink.$(OBJEXT) \
libarchive/test/test-test_compat_uudecode.$(OBJEXT) \
libarchive/test/test-test_compat_uudecode_large.$(OBJEXT) \
libarchive/test/test-test_read_filter_program.$(OBJEXT) \
libarchive/test/test-test_read_filter_program_signature.$(OBJEXT) \
libarchive/test/test-test_read_filter_uudecode.$(OBJEXT) \
+ libarchive/test/test-test_read_filter_uudecode_raw.$(OBJEXT) \
libarchive/test/test-test_read_format_7zip.$(OBJEXT) \
libarchive/test/test-test_read_format_7zip_encryption_data.$(OBJEXT) \
libarchive/test/test-test_read_format_7zip_encryption_partially.$(OBJEXT) \
libarchive/test/test-test_read_format_rar_encryption_data.$(OBJEXT) \
libarchive/test/test-test_read_format_rar_encryption_partially.$(OBJEXT) \
libarchive/test/test-test_read_format_rar_encryption_header.$(OBJEXT) \
+ libarchive/test/test-test_read_format_rar_filter.$(OBJEXT) \
libarchive/test/test-test_read_format_rar_invalid1.$(OBJEXT) \
libarchive/test/test-test_read_format_rar5.$(OBJEXT) \
libarchive/test/test-test_read_format_raw.$(OBJEXT) \
libarchive/test/test-test_read_format_tar_empty_filename.$(OBJEXT) \
libarchive/test/test-test_read_format_tar_empty_with_gnulabel.$(OBJEXT) \
libarchive/test/test-test_read_format_tar_filename.$(OBJEXT) \
+ libarchive/test/test-test_read_format_tar_invalid_pax_size.$(OBJEXT) \
libarchive/test/test-test_read_format_tbz.$(OBJEXT) \
libarchive/test/test-test_read_format_tgz.$(OBJEXT) \
libarchive/test/test-test_read_format_tlz.$(OBJEXT) \
libarchive/test/test-test_write_format_xar_empty.$(OBJEXT) \
libarchive/test/test-test_write_format_zip.$(OBJEXT) \
libarchive/test/test-test_write_format_zip_compression_store.$(OBJEXT) \
+ libarchive/test/test-test_write_format_zip_entry_size_unset.$(OBJEXT) \
libarchive/test/test-test_write_format_zip_empty.$(OBJEXT) \
libarchive/test/test-test_write_format_zip_empty_zip64.$(OBJEXT) \
libarchive/test/test-test_write_format_zip_file.$(OBJEXT) \
libarchive/test/$(DEPDIR)/test-test_compat_solaris_pax_sparse.Po \
libarchive/test/$(DEPDIR)/test-test_compat_solaris_tar_acl.Po \
libarchive/test/$(DEPDIR)/test-test_compat_star_acl.Po \
+ libarchive/test/$(DEPDIR)/test-test_compat_tar_directory.Po \
libarchive/test/$(DEPDIR)/test-test_compat_tar_hardlink.Po \
libarchive/test/$(DEPDIR)/test-test_compat_uudecode.Po \
libarchive/test/$(DEPDIR)/test-test_compat_uudecode_large.Po \
libarchive/test/$(DEPDIR)/test-test_read_filter_program.Po \
libarchive/test/$(DEPDIR)/test-test_read_filter_program_signature.Po \
libarchive/test/$(DEPDIR)/test-test_read_filter_uudecode.Po \
+ libarchive/test/$(DEPDIR)/test-test_read_filter_uudecode_raw.Po \
libarchive/test/$(DEPDIR)/test-test_read_format_7zip.Po \
libarchive/test/$(DEPDIR)/test-test_read_format_7zip_encryption_data.Po \
libarchive/test/$(DEPDIR)/test-test_read_format_7zip_encryption_header.Po \
libarchive/test/$(DEPDIR)/test-test_read_format_rar_encryption_data.Po \
libarchive/test/$(DEPDIR)/test-test_read_format_rar_encryption_header.Po \
libarchive/test/$(DEPDIR)/test-test_read_format_rar_encryption_partially.Po \
+ libarchive/test/$(DEPDIR)/test-test_read_format_rar_filter.Po \
libarchive/test/$(DEPDIR)/test-test_read_format_rar_invalid1.Po \
libarchive/test/$(DEPDIR)/test-test_read_format_raw.Po \
libarchive/test/$(DEPDIR)/test-test_read_format_tar.Po \
libarchive/test/$(DEPDIR)/test-test_read_format_tar_empty_pax.Po \
libarchive/test/$(DEPDIR)/test-test_read_format_tar_empty_with_gnulabel.Po \
libarchive/test/$(DEPDIR)/test-test_read_format_tar_filename.Po \
+ libarchive/test/$(DEPDIR)/test-test_read_format_tar_invalid_pax_size.Po \
libarchive/test/$(DEPDIR)/test-test_read_format_tbz.Po \
libarchive/test/$(DEPDIR)/test-test_read_format_tgz.Po \
libarchive/test/$(DEPDIR)/test-test_read_format_tlz.Po \
libarchive/test/$(DEPDIR)/test-test_write_format_zip_compression_store.Po \
libarchive/test/$(DEPDIR)/test-test_write_format_zip_empty.Po \
libarchive/test/$(DEPDIR)/test-test_write_format_zip_empty_zip64.Po \
+ libarchive/test/$(DEPDIR)/test-test_write_format_zip_entry_size_unset.Po \
libarchive/test/$(DEPDIR)/test-test_write_format_zip_file.Po \
libarchive/test/$(DEPDIR)/test-test_write_format_zip_file_zip64.Po \
libarchive/test/$(DEPDIR)/test-test_write_format_zip_large.Po \
tar/test/$(DEPDIR)/bsdtar_test-test_option_fflags.Po \
tar/test/$(DEPDIR)/bsdtar_test-test_option_gid_gname.Po \
tar/test/$(DEPDIR)/bsdtar_test-test_option_grzip.Po \
+ tar/test/$(DEPDIR)/bsdtar_test-test_option_ignore_zeros.Po \
tar/test/$(DEPDIR)/bsdtar_test-test_option_j.Po \
tar/test/$(DEPDIR)/bsdtar_test-test_option_k.Po \
tar/test/$(DEPDIR)/bsdtar_test-test_option_keep_newer_files.Po \
test_utils/$(DEPDIR)/bsdcpio_test-test_utils.Po \
test_utils/$(DEPDIR)/bsdtar_test-test_main.Po \
test_utils/$(DEPDIR)/bsdtar_test-test_utils.Po \
+ test_utils/$(DEPDIR)/bsdunzip_test-test_main.Po \
+ test_utils/$(DEPDIR)/bsdunzip_test-test_utils.Po \
test_utils/$(DEPDIR)/libarchive_test-test_main.Po \
- test_utils/$(DEPDIR)/libarchive_test-test_utils.Po
+ test_utils/$(DEPDIR)/libarchive_test-test_utils.Po \
+ unzip/$(DEPDIR)/bsdunzip-bsdunzip.Po \
+ unzip/$(DEPDIR)/bsdunzip-cmdline.Po \
+ unzip/$(DEPDIR)/bsdunzip-la_getline.Po \
+ unzip/test/$(DEPDIR)/bsdunzip_test-test_0.Po \
+ unzip/test/$(DEPDIR)/bsdunzip_test-test_C.Po \
+ unzip/test/$(DEPDIR)/bsdunzip_test-test_L.Po \
+ unzip/test/$(DEPDIR)/bsdunzip_test-test_P_encryption.Po \
+ unzip/test/$(DEPDIR)/bsdunzip_test-test_Z1.Po \
+ unzip/test/$(DEPDIR)/bsdunzip_test-test_basic.Po \
+ unzip/test/$(DEPDIR)/bsdunzip_test-test_d.Po \
+ unzip/test/$(DEPDIR)/bsdunzip_test-test_glob.Po \
+ unzip/test/$(DEPDIR)/bsdunzip_test-test_j.Po \
+ unzip/test/$(DEPDIR)/bsdunzip_test-test_n.Po \
+ unzip/test/$(DEPDIR)/bsdunzip_test-test_not_exist.Po \
+ unzip/test/$(DEPDIR)/bsdunzip_test-test_o.Po \
+ unzip/test/$(DEPDIR)/bsdunzip_test-test_p.Po \
+ unzip/test/$(DEPDIR)/bsdunzip_test-test_q.Po \
+ unzip/test/$(DEPDIR)/bsdunzip_test-test_singlefile.Po \
+ unzip/test/$(DEPDIR)/bsdunzip_test-test_t.Po \
+ unzip/test/$(DEPDIR)/bsdunzip_test-test_t_bad.Po \
+ unzip/test/$(DEPDIR)/bsdunzip_test-test_version.Po \
+ unzip/test/$(DEPDIR)/bsdunzip_test-test_x.Po
am__mv = mv -f
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
SOURCES = $(libarchive_la_SOURCES) $(libarchive_fe_la_SOURCES) \
$(bsdcat_SOURCES) $(bsdcat_test_SOURCES) $(bsdcpio_SOURCES) \
$(bsdcpio_test_SOURCES) $(bsdtar_SOURCES) \
- $(bsdtar_test_SOURCES) $(libarchive_test_SOURCES)
+ $(bsdtar_test_SOURCES) $(bsdunzip_SOURCES) \
+ $(bsdunzip_test_SOURCES) $(libarchive_test_SOURCES)
DIST_SOURCES = $(am__libarchive_la_SOURCES_DIST) \
$(libarchive_fe_la_SOURCES) $(bsdcat_SOURCES) \
$(bsdcat_test_SOURCES) $(am__bsdcpio_SOURCES_DIST) \
$(bsdcpio_test_SOURCES) $(am__bsdtar_SOURCES_DIST) \
- $(bsdtar_test_SOURCES) $(am__libarchive_test_SOURCES_DIST)
+ $(bsdtar_test_SOURCES) $(bsdunzip_SOURCES) \
+ $(bsdunzip_test_SOURCES) $(am__libarchive_test_SOURCES_DIST)
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \
MANS = $(man_MANS)
DATA = $(pkgconfig_DATA)
HEADERS = $(include_HEADERS)
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \
- $(LISP)config.h.in
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) \
+ config.h.in
# Read a list of newline-separated strings from the standard input,
# and print each of them once, without duplicates. Input order is
# *not* preserved.
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
-CSCOPE = cscope
AM_RECURSIVE_TARGETS = cscope check recheck
am__tty_colors_dummy = \
mgn= red= grn= lgn= blu= brg= std=; \
bases='$(TEST_LOGS)'; \
bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
bases=`echo $$bases`
+AM_TESTSUITE_SUMMARY_HEADER = ' for $(PACKAGE_STRING)'
RECHECK_LOGS = $(TEST_LOGS)
TEST_SUITE_LOG = test-suite.log
TEST_EXTENSIONS = @EXEEXT@ .test
$(top_srcdir)/build/autoconf/missing \
$(top_srcdir)/build/autoconf/test-driver \
$(top_srcdir)/build/pkgconfig/libarchive.pc.in COPYING INSTALL \
- NEWS build/autoconf/compile build/autoconf/config.guess \
- build/autoconf/config.rpath build/autoconf/config.sub \
- build/autoconf/depcomp build/autoconf/install-sh \
- build/autoconf/ltmain.sh build/autoconf/missing
+ NEWS README.md build/autoconf/compile \
+ build/autoconf/config.guess build/autoconf/config.rpath \
+ build/autoconf/config.sub build/autoconf/depcomp \
+ build/autoconf/install-sh build/autoconf/ltmain.sh \
+ build/autoconf/missing
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
distdir = $(PACKAGE)-$(VERSION)
top_distdir = $(distdir)
DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.xz $(distdir).zip
GZIP_ENV = --best
DIST_TARGETS = dist-xz dist-gzip dist-zip
+# Exists only to be overridden by the user if desired.
+AM_DISTCHECK_DVI_TARGET = dvi
distuninstallcheck_listfiles = find . -type f -print
am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
| sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
BSDCAT_VERSION_STRING = @BSDCAT_VERSION_STRING@
BSDCPIO_VERSION_STRING = @BSDCPIO_VERSION_STRING@
BSDTAR_VERSION_STRING = @BSDTAR_VERSION_STRING@
+BSDUNZIP_VERSION_STRING = @BSDUNZIP_VERSION_STRING@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CSCOPE = @CSCOPE@
+CTAGS = @CTAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
+ETAGS = @ETAGS@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
+GC_SECTIONS = @GC_SECTIONS@
GREP = @GREP@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
LIBICONV = @LIBICONV@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
+LIBSREQUIRED = @LIBSREQUIRED@
LIBTOOL = @LIBTOOL@
LIBXML2_PC_CFLAGS = @LIBXML2_PC_CFLAGS@
LIBXML2_PC_LIBS = @LIBXML2_PC_LIBS@
#
lib_LTLIBRARIES = libarchive.la
noinst_LTLIBRARIES = libarchive_fe.la
-man_MANS = $(libarchive_man_MANS) $(bsdtar_man_MANS) $(bsdcpio_man_MANS) $(bsdcat_man_MANS)
-BUILT_SOURCES = libarchive/test/list.h tar/test/list.h cpio/test/list.h cat/test/list.h
-TESTS_ENVIRONMENT = $(libarchive_TESTS_ENVIRONMENT) $(bsdtar_TESTS_ENVIRONMENT) $(bsdcpio_TESTS_ENVIRONMENT) $(bsdcat_TESTS_ENVIRONMENT)
+man_MANS = $(libarchive_man_MANS) $(bsdtar_man_MANS) $(bsdcpio_man_MANS) $(bsdcat_man_MANS) $(bsdunzip_man_MANS)
+BUILT_SOURCES = libarchive/test/list.h tar/test/list.h cpio/test/list.h cat/test/list.h unzip/test/list.h
+TESTS_ENVIRONMENT = $(libarchive_TESTS_ENVIRONMENT) $(bsdtar_TESTS_ENVIRONMENT) $(bsdcpio_TESTS_ENVIRONMENT) $(bsdcat_TESTS_ENVIRONMENT) $(bsdunzip_TESTS_ENVIRONMENT)
# Always build and test both bsdtar and bsdcpio as part of 'distcheck'
DISTCHECK_CONFIGURE_FLAGS = --enable-bsdtar --enable-bsdcpio
# The next line is commented out by default in shipping libarchive releases.
$(bsdcpio_EXTRA_DIST) \
$(bsdcpio_test_EXTRA_DIST) \
$(bsdcat_EXTRA_DIST) \
- $(bsdcat_test_EXTRA_DIST)
+ $(bsdcat_test_EXTRA_DIST) \
+ $(bsdunzip_EXTRA_DIST) \
+ $(bsdunzip_test_EXTRA_DIST)
#
libarchive/test/list.h \
tar/test/list.h \
cpio/test/list.h \
- cat/test/list.h
+ cat/test/list.h \
+ unzip/test/list.h
#
# -no-undefined marks that libarchive doesn't rely on symbols
# defined in the application. This is mandatory for cygwin.
-libarchive_la_LDFLAGS = -no-undefined -version-info $(ARCHIVE_LIBTOOL_VERSION)
+libarchive_la_LDFLAGS = -no-undefined -version-info $(ARCHIVE_LIBTOOL_VERSION) $(GC_SECTIONS)
libarchive_la_LIBADD = $(LTLIBICONV)
# Manpages to install
libarchive/test/test_compat_solaris_tar_acl.c \
libarchive/test/test_compat_solaris_pax_sparse.c \
libarchive/test/test_compat_star_acl.c \
+ libarchive/test/test_compat_tar_directory.c \
libarchive/test/test_compat_tar_hardlink.c \
libarchive/test/test_compat_uudecode.c \
libarchive/test/test_compat_uudecode_large.c \
libarchive/test/test_read_filter_program.c \
libarchive/test/test_read_filter_program_signature.c \
libarchive/test/test_read_filter_uudecode.c \
+ libarchive/test/test_read_filter_uudecode_raw.c \
libarchive/test/test_read_format_7zip.c \
libarchive/test/test_read_format_7zip_encryption_data.c \
libarchive/test/test_read_format_7zip_encryption_partially.c \
libarchive/test/test_read_format_rar_encryption_data.c \
libarchive/test/test_read_format_rar_encryption_partially.c \
libarchive/test/test_read_format_rar_encryption_header.c \
+ libarchive/test/test_read_format_rar_filter.c \
libarchive/test/test_read_format_rar_invalid1.c \
libarchive/test/test_read_format_rar5.c \
libarchive/test/test_read_format_raw.c \
libarchive/test/test_read_format_tar_empty_filename.c \
libarchive/test/test_read_format_tar_empty_with_gnulabel.c \
libarchive/test/test_read_format_tar_filename.c \
+ libarchive/test/test_read_format_tar_invalid_pax_size.c \
libarchive/test/test_read_format_tbz.c \
libarchive/test/test_read_format_tgz.c \
libarchive/test/test_read_format_tlz.c \
libarchive/test/test_write_format_xar_empty.c \
libarchive/test/test_write_format_zip.c \
libarchive/test/test_write_format_zip_compression_store.c \
+ libarchive/test/test_write_format_zip_entry_size_unset.c \
libarchive/test/test_write_format_zip_empty.c \
libarchive/test/test_write_format_zip_empty_zip64.c \
libarchive/test/test_write_format_zip_file.c \
libarchive/test/test_compat_solaris_tar_acl.tar.uu \
libarchive/test/test_compat_star_acl_nfs4.tar.uu \
libarchive/test/test_compat_star_acl_posix1e.tar.uu \
+ libarchive/test/test_compat_tar_directory_1.tar.uu \
libarchive/test/test_compat_tar_hardlink_1.tar.uu \
libarchive/test/test_compat_uudecode_large.tar.Z.uu \
libarchive/test/test_compat_xz_1.txz.uu \
libarchive/test/test_read_filter_lrzip.tar.lrz.uu \
libarchive/test/test_read_filter_lzop.tar.lzo.uu \
libarchive/test/test_read_filter_lzop_multiple_parts.tar.lzo.uu \
+ libarchive/test/test_read_filter_uudecode_raw.uu \
+ libarchive/test/test_read_filter_uudecode_base64_raw.uu \
libarchive/test/test_read_format_mtree_crash747.mtree.bz2.uu \
libarchive/test/test_read_format_mtree_noprint.mtree.uu \
libarchive/test/test_read_format_7zip_bcj2_bzip2.7z.uu \
libarchive/test/test_read_format_7zip_copy.7z.uu \
libarchive/test/test_read_format_7zip_copy_2.7z.uu \
libarchive/test/test_read_format_7zip_deflate.7z.uu \
+ libarchive/test/test_read_format_7zip_deflate_arm64.7z.uu \
libarchive/test/test_read_format_7zip_delta_lzma1.7z.uu \
libarchive/test/test_read_format_7zip_delta4_lzma1.7z.uu \
libarchive/test/test_read_format_7zip_delta_lzma2.7z.uu \
libarchive/test/test_read_format_7zip_lzma1_2.7z.uu \
libarchive/test/test_read_format_7zip_lzma1_lzma2.7z.uu \
libarchive/test/test_read_format_7zip_lzma2.7z.uu \
+ libarchive/test/test_read_format_7zip_lzma2_arm64.7z.uu \
+ libarchive/test/test_read_format_7zip_lzma2_arm.7z.uu \
libarchive/test/test_read_format_7zip_malformed.7z.uu \
libarchive/test/test_read_format_7zip_malformed2.7z.uu \
libarchive/test/test_read_format_7zip_packinfo_digests.7z.uu \
libarchive/test/test_read_format_7zip_ppmd.7z.uu \
+ libarchive/test/test_read_format_7zip_solid_zstd.7z.uu \
libarchive/test/test_read_format_7zip_symbolic_name.7z.uu \
+ libarchive/test/test_read_format_7zip_win_attrib.7z.uu \
+ libarchive/test/test_read_format_7zip_zstd_arm.7z.uu \
+ libarchive/test/test_read_format_7zip_zstd_bcj.7z.uu \
+ libarchive/test/test_read_format_7zip_zstd_nobcj.7z.uu \
+ libarchive/test/test_read_format_7zip_zstd.7z.uu \
libarchive/test/test_read_format_ar.ar.uu \
libarchive/test/test_read_format_cab_1.cab.uu \
libarchive/test/test_read_format_cab_2.cab.uu \
libarchive/test/test_read_format_rar_encryption_data.rar.uu \
libarchive/test/test_read_format_rar_encryption_header.rar.uu \
libarchive/test/test_read_format_rar_encryption_partially.rar.uu \
+ libarchive/test/test_read_format_rar_filter.rar.uu \
libarchive/test/test_read_format_rar_invalid1.rar.uu \
libarchive/test/test_read_format_rar_multi_lzss_blocks.rar.uu \
libarchive/test/test_read_format_rar_multivolume.part0001.rar.uu \
libarchive/test/test_read_format_rar5_nonempty_dir_stream.rar.uu \
libarchive/test/test_read_format_rar5_owner.rar.uu \
libarchive/test/test_read_format_rar5_readtables_overflow.rar.uu \
+ libarchive/test/test_read_format_rar5_sfx.exe.uu \
libarchive/test/test_read_format_rar5_solid.rar.uu \
libarchive/test/test_read_format_rar5_stored.rar.uu \
libarchive/test/test_read_format_rar5_stored_manyfiles.rar.uu \
libarchive/test/test_read_format_rar5_arm_filter_on_window_boundary.rar.uu \
libarchive/test/test_read_format_rar5_different_winsize_on_merge.rar.uu \
libarchive/test/test_read_format_rar5_block_size_is_too_small.rar.uu \
+ libarchive/test/test_read_format_rar5_decode_number_out_of_bounds_read.rar.uu \
+ libarchive/test/test_read_format_rar5_window_buf_and_size_desync.rar.uu \
+ libarchive/test/test_read_format_rar5_bad_window_sz_in_mltarc_file.rar.uu \
libarchive/test/test_read_format_raw.bufr.uu \
libarchive/test/test_read_format_raw.data.gz.uu \
libarchive/test/test_read_format_raw.data.Z.uu \
libarchive/test/test_read_format_tar_empty_with_gnulabel.tar.uu \
libarchive/test/test_read_format_tar_empty_pax.tar.Z.uu \
libarchive/test/test_read_format_tar_filename_koi8r.tar.Z.uu \
+ libarchive/test/test_read_format_tar_invalid_pax_size.tar.uu \
libarchive/test/test_read_format_ustar_filename_cp866.tar.Z.uu \
libarchive/test/test_read_format_ustar_filename_eucjp.tar.Z.uu \
libarchive/test/test_read_format_ustar_filename_koi8r.tar.Z.uu \
libarchive/test/test_read_format_zip_xz_multi.zipx.uu \
libarchive/test/test_read_format_zip_zip64a.zip.uu \
libarchive/test/test_read_format_zip_zip64b.zip.uu \
+ libarchive/test/test_read_format_zip_zstd.zipx.uu \
+ libarchive/test/test_read_format_zip_zstd_multi.zipx.uu \
libarchive/test/test_read_large_splitted_rar_aa.uu \
libarchive/test/test_read_large_splitted_rar_ab.uu \
libarchive/test/test_read_large_splitted_rar_ac.uu \
@STATIC_BSDTAR_TRUE@bsdtar_ccstatic = -DLIBARCHIVE_STATIC
bsdtar_LDADD = libarchive.la libarchive_fe.la $(LTLIBICONV)
bsdtar_CPPFLAGS = -I$(top_srcdir)/libarchive -I$(top_srcdir)/libarchive_fe $(bsdtar_ccstatic) $(PLATFORMCPPFLAGS)
-bsdtar_LDFLAGS = $(bsdtar_ldstatic)
+bsdtar_LDFLAGS = $(bsdtar_ldstatic) $(GC_SECTIONS)
bsdtar_EXTRA_DIST = \
tar/bsdtar.1 \
tar/bsdtar_windows.h \
tar/test/test_option_fflags.c \
tar/test/test_option_gid_gname.c \
tar/test/test_option_grzip.c \
+ tar/test/test_option_ignore_zeros.c \
tar/test/test_option_j.c \
tar/test/test_option_k.c \
tar/test/test_option_keep_newer_files.c \
@STATIC_BSDCPIO_TRUE@bsdcpio_ccstatic = -DLIBARCHIVE_STATIC
bsdcpio_LDADD = libarchive_fe.la libarchive.la $(LTLIBICONV)
bsdcpio_CPPFLAGS = -I$(top_srcdir)/libarchive -I$(top_srcdir)/libarchive_fe $(bsdcpio_ccstatic) $(PLATFORMCPPFLAGS)
-bsdcpio_LDFLAGS = $(bsdcpio_ldstatic)
+bsdcpio_LDFLAGS = $(bsdcpio_ldstatic) $(GC_SECTIONS)
bsdcpio_EXTRA_DIST = \
cpio/bsdcpio.1 \
cpio/cpio_windows.h \
@STATIC_BSDCAT_TRUE@bsdcat_ccstatic = -DLIBARCHIVE_STATIC
bsdcat_LDADD = libarchive_fe.la libarchive.la $(LTLIBICONV)
bsdcat_CPPFLAGS = -I$(top_srcdir)/libarchive -I$(top_srcdir)/libarchive_fe $(bsdcat_ccstatic) $(PLATFORMCPPFLAGS)
-bsdcat_LDFLAGS = $(bsdcat_ldstatic)
+bsdcat_LDFLAGS = $(bsdcat_ldstatic) $(GC_SECTIONS)
bsdcat_EXTRA_DIST = \
cat/bsdcat.1 \
cat/CMakeLists.txt
cat/test/test_expand.xz.uu \
cat/test/CMakeLists.txt
+
+#
+#
+# bsdunzip source, docs, etc.
+#
+#
+bsdunzip_SOURCES = unzip/bsdunzip.c unzip/bsdunzip.h \
+ unzip/bsdunzip_platform.h unzip/cmdline.c unzip/la_getline.c \
+ unzip/la_queue.h $(am__append_10)
+bsdunzip_DEPENDENCIES = libarchive.la libarchive_fe.la
+@STATIC_BSDUNZIP_FALSE@bsdunzip_ldstatic =
+@STATIC_BSDUNZIP_TRUE@bsdunzip_ldstatic = -static
+@STATIC_BSDUNZIP_FALSE@bsdunzip_ccstatic =
+@STATIC_BSDUNZIP_TRUE@bsdunzip_ccstatic = -DLIBARCHIVE_STATIC
+bsdunzip_LDADD = libarchive_fe.la libarchive.la $(LTLIBICONV)
+bsdunzip_CPPFLAGS = -I$(top_srcdir)/libarchive -I$(top_srcdir)/libarchive_fe $(bsdunzip_ccstatic) $(PLATFORMCPPFLAGS)
+bsdunzip_LDFLAGS = $(bsdunzip_ldstatic) $(GC_SECTIONS)
+bsdunzip_EXTRA_DIST = \
+ unzip/bsdunzip.1 \
+ unzip/CMakeLists.txt
+
+@BUILD_BSDUNZIP_FALSE@bsdunzip_man_MANS =
+
+# Manpages to install
+@BUILD_BSDUNZIP_TRUE@bsdunzip_man_MANS = unzip/bsdunzip.1
+@BUILD_BSDUNZIP_FALSE@bsdunzip_programs =
+@BUILD_BSDUNZIP_TRUE@bsdunzip_programs = bsdunzip
+
+#
+# bsdunzip_test
+#
+bsdunzip_test_SOURCES = \
+ $(test_utils_SOURCES) \
+ unzip/test/test.h \
+ unzip/test/test_0.c \
+ unzip/test/test_basic.c \
+ unzip/test/test_glob.c \
+ unzip/test/test_not_exist.c \
+ unzip/test/test_singlefile.c \
+ unzip/test/test_C.c \
+ unzip/test/test_p.c \
+ unzip/test/test_d.c \
+ unzip/test/test_j.c \
+ unzip/test/test_L.c \
+ unzip/test/test_n.c \
+ unzip/test/test_o.c \
+ unzip/test/test_q.c \
+ unzip/test/test_t.c \
+ unzip/test/test_t_bad.c \
+ unzip/test/test_version.c \
+ unzip/test/test_x.c \
+ unzip/test/test_Z1.c \
+ unzip/test/test_P_encryption.c
+
+bsdunzip_test_CPPFLAGS = \
+ -I$(top_srcdir)/libarchive -I$(top_srcdir)/libarchive_fe \
+ -I$(top_srcdir)/test_utils \
+ -I$(top_srcdir)/unzip -I$(top_srcdir)/unzip/test \
+ -I$(top_builddir)/unzip/test \
+ $(PLATFORMCPPFLAGS)
+
+bsdunzip_test_LDADD = libarchive_fe.la
+@BUILD_BSDUNZIP_FALSE@bsdunzip_test_programs =
+@BUILD_BSDUNZIP_TRUE@bsdunzip_test_programs = bsdunzip_test
+@BUILD_BSDUNZIP_FALSE@bsdunzip_TESTS_ENVIRONMENT =
+@BUILD_BSDUNZIP_TRUE@bsdunzip_TESTS_ENVIRONMENT = BSDUNZIP=`cd $(top_builddir);/bin/pwd`/bsdunzip$(EXEEXT) BSDUNZIP_TEST_FILES=`cd $(top_srcdir);/bin/pwd`/unzip/test
+bsdunzip_test_EXTRA_DIST = \
+ unzip/test/list.h \
+ unzip/test/test_basic.zip.uu \
+ unzip/test/test_encrypted.zip.uu \
+ unzip/test/test_singlefile.zip.uu \
+ unzip/test/test_t_bad.zip.uu \
+ unzip/test/CMakeLists.txt
+
all: $(BUILT_SOURCES) config.h
$(MAKE) $(AM_MAKEFLAGS) all-am
tar/test/$(am__dirstamp) tar/test/$(DEPDIR)/$(am__dirstamp)
tar/test/bsdtar_test-test_option_grzip.$(OBJEXT): \
tar/test/$(am__dirstamp) tar/test/$(DEPDIR)/$(am__dirstamp)
+tar/test/bsdtar_test-test_option_ignore_zeros.$(OBJEXT): \
+ tar/test/$(am__dirstamp) tar/test/$(DEPDIR)/$(am__dirstamp)
tar/test/bsdtar_test-test_option_j.$(OBJEXT): \
tar/test/$(am__dirstamp) tar/test/$(DEPDIR)/$(am__dirstamp)
tar/test/bsdtar_test-test_option_k.$(OBJEXT): \
bsdtar_test$(EXEEXT): $(bsdtar_test_OBJECTS) $(bsdtar_test_DEPENDENCIES) $(EXTRA_bsdtar_test_DEPENDENCIES)
@rm -f bsdtar_test$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(bsdtar_test_OBJECTS) $(bsdtar_test_LDADD) $(LIBS)
+unzip/$(am__dirstamp):
+ @$(MKDIR_P) unzip
+ @: > unzip/$(am__dirstamp)
+unzip/$(DEPDIR)/$(am__dirstamp):
+ @$(MKDIR_P) unzip/$(DEPDIR)
+ @: > unzip/$(DEPDIR)/$(am__dirstamp)
+unzip/bsdunzip-bsdunzip.$(OBJEXT): unzip/$(am__dirstamp) \
+ unzip/$(DEPDIR)/$(am__dirstamp)
+unzip/bsdunzip-cmdline.$(OBJEXT): unzip/$(am__dirstamp) \
+ unzip/$(DEPDIR)/$(am__dirstamp)
+unzip/bsdunzip-la_getline.$(OBJEXT): unzip/$(am__dirstamp) \
+ unzip/$(DEPDIR)/$(am__dirstamp)
+
+bsdunzip$(EXEEXT): $(bsdunzip_OBJECTS) $(bsdunzip_DEPENDENCIES) $(EXTRA_bsdunzip_DEPENDENCIES)
+ @rm -f bsdunzip$(EXEEXT)
+ $(AM_V_CCLD)$(bsdunzip_LINK) $(bsdunzip_OBJECTS) $(bsdunzip_LDADD) $(LIBS)
+test_utils/bsdunzip_test-test_utils.$(OBJEXT): \
+ test_utils/$(am__dirstamp) \
+ test_utils/$(DEPDIR)/$(am__dirstamp)
+test_utils/bsdunzip_test-test_main.$(OBJEXT): \
+ test_utils/$(am__dirstamp) \
+ test_utils/$(DEPDIR)/$(am__dirstamp)
+unzip/test/$(am__dirstamp):
+ @$(MKDIR_P) unzip/test
+ @: > unzip/test/$(am__dirstamp)
+unzip/test/$(DEPDIR)/$(am__dirstamp):
+ @$(MKDIR_P) unzip/test/$(DEPDIR)
+ @: > unzip/test/$(DEPDIR)/$(am__dirstamp)
+unzip/test/bsdunzip_test-test_0.$(OBJEXT): unzip/test/$(am__dirstamp) \
+ unzip/test/$(DEPDIR)/$(am__dirstamp)
+unzip/test/bsdunzip_test-test_basic.$(OBJEXT): \
+ unzip/test/$(am__dirstamp) \
+ unzip/test/$(DEPDIR)/$(am__dirstamp)
+unzip/test/bsdunzip_test-test_glob.$(OBJEXT): \
+ unzip/test/$(am__dirstamp) \
+ unzip/test/$(DEPDIR)/$(am__dirstamp)
+unzip/test/bsdunzip_test-test_not_exist.$(OBJEXT): \
+ unzip/test/$(am__dirstamp) \
+ unzip/test/$(DEPDIR)/$(am__dirstamp)
+unzip/test/bsdunzip_test-test_singlefile.$(OBJEXT): \
+ unzip/test/$(am__dirstamp) \
+ unzip/test/$(DEPDIR)/$(am__dirstamp)
+unzip/test/bsdunzip_test-test_C.$(OBJEXT): unzip/test/$(am__dirstamp) \
+ unzip/test/$(DEPDIR)/$(am__dirstamp)
+unzip/test/bsdunzip_test-test_p.$(OBJEXT): unzip/test/$(am__dirstamp) \
+ unzip/test/$(DEPDIR)/$(am__dirstamp)
+unzip/test/bsdunzip_test-test_d.$(OBJEXT): unzip/test/$(am__dirstamp) \
+ unzip/test/$(DEPDIR)/$(am__dirstamp)
+unzip/test/bsdunzip_test-test_j.$(OBJEXT): unzip/test/$(am__dirstamp) \
+ unzip/test/$(DEPDIR)/$(am__dirstamp)
+unzip/test/bsdunzip_test-test_L.$(OBJEXT): unzip/test/$(am__dirstamp) \
+ unzip/test/$(DEPDIR)/$(am__dirstamp)
+unzip/test/bsdunzip_test-test_n.$(OBJEXT): unzip/test/$(am__dirstamp) \
+ unzip/test/$(DEPDIR)/$(am__dirstamp)
+unzip/test/bsdunzip_test-test_o.$(OBJEXT): unzip/test/$(am__dirstamp) \
+ unzip/test/$(DEPDIR)/$(am__dirstamp)
+unzip/test/bsdunzip_test-test_q.$(OBJEXT): unzip/test/$(am__dirstamp) \
+ unzip/test/$(DEPDIR)/$(am__dirstamp)
+unzip/test/bsdunzip_test-test_t.$(OBJEXT): unzip/test/$(am__dirstamp) \
+ unzip/test/$(DEPDIR)/$(am__dirstamp)
+unzip/test/bsdunzip_test-test_t_bad.$(OBJEXT): \
+ unzip/test/$(am__dirstamp) \
+ unzip/test/$(DEPDIR)/$(am__dirstamp)
+unzip/test/bsdunzip_test-test_version.$(OBJEXT): \
+ unzip/test/$(am__dirstamp) \
+ unzip/test/$(DEPDIR)/$(am__dirstamp)
+unzip/test/bsdunzip_test-test_x.$(OBJEXT): unzip/test/$(am__dirstamp) \
+ unzip/test/$(DEPDIR)/$(am__dirstamp)
+unzip/test/bsdunzip_test-test_Z1.$(OBJEXT): \
+ unzip/test/$(am__dirstamp) \
+ unzip/test/$(DEPDIR)/$(am__dirstamp)
+unzip/test/bsdunzip_test-test_P_encryption.$(OBJEXT): \
+ unzip/test/$(am__dirstamp) \
+ unzip/test/$(DEPDIR)/$(am__dirstamp)
+
+bsdunzip_test$(EXEEXT): $(bsdunzip_test_OBJECTS) $(bsdunzip_test_DEPENDENCIES) $(EXTRA_bsdunzip_test_DEPENDENCIES)
+ @rm -f bsdunzip_test$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(bsdunzip_test_OBJECTS) $(bsdunzip_test_LDADD) $(LIBS)
libarchive/test-archive_acl.$(OBJEXT): libarchive/$(am__dirstamp) \
libarchive/$(DEPDIR)/$(am__dirstamp)
libarchive/test-archive_check_magic.$(OBJEXT): \
libarchive/test/test-test_compat_star_acl.$(OBJEXT): \
libarchive/test/$(am__dirstamp) \
libarchive/test/$(DEPDIR)/$(am__dirstamp)
+libarchive/test/test-test_compat_tar_directory.$(OBJEXT): \
+ libarchive/test/$(am__dirstamp) \
+ libarchive/test/$(DEPDIR)/$(am__dirstamp)
libarchive/test/test-test_compat_tar_hardlink.$(OBJEXT): \
libarchive/test/$(am__dirstamp) \
libarchive/test/$(DEPDIR)/$(am__dirstamp)
libarchive/test/test-test_read_filter_uudecode.$(OBJEXT): \
libarchive/test/$(am__dirstamp) \
libarchive/test/$(DEPDIR)/$(am__dirstamp)
+libarchive/test/test-test_read_filter_uudecode_raw.$(OBJEXT): \
+ libarchive/test/$(am__dirstamp) \
+ libarchive/test/$(DEPDIR)/$(am__dirstamp)
libarchive/test/test-test_read_format_7zip.$(OBJEXT): \
libarchive/test/$(am__dirstamp) \
libarchive/test/$(DEPDIR)/$(am__dirstamp)
libarchive/test/test-test_read_format_rar_encryption_header.$(OBJEXT): \
libarchive/test/$(am__dirstamp) \
libarchive/test/$(DEPDIR)/$(am__dirstamp)
+libarchive/test/test-test_read_format_rar_filter.$(OBJEXT): \
+ libarchive/test/$(am__dirstamp) \
+ libarchive/test/$(DEPDIR)/$(am__dirstamp)
libarchive/test/test-test_read_format_rar_invalid1.$(OBJEXT): \
libarchive/test/$(am__dirstamp) \
libarchive/test/$(DEPDIR)/$(am__dirstamp)
libarchive/test/test-test_read_format_tar_filename.$(OBJEXT): \
libarchive/test/$(am__dirstamp) \
libarchive/test/$(DEPDIR)/$(am__dirstamp)
+libarchive/test/test-test_read_format_tar_invalid_pax_size.$(OBJEXT): \
+ libarchive/test/$(am__dirstamp) \
+ libarchive/test/$(DEPDIR)/$(am__dirstamp)
libarchive/test/test-test_read_format_tbz.$(OBJEXT): \
libarchive/test/$(am__dirstamp) \
libarchive/test/$(DEPDIR)/$(am__dirstamp)
libarchive/test/test-test_write_format_zip_compression_store.$(OBJEXT): \
libarchive/test/$(am__dirstamp) \
libarchive/test/$(DEPDIR)/$(am__dirstamp)
+libarchive/test/test-test_write_format_zip_entry_size_unset.$(OBJEXT): \
+ libarchive/test/$(am__dirstamp) \
+ libarchive/test/$(DEPDIR)/$(am__dirstamp)
libarchive/test/test-test_write_format_zip_empty.$(OBJEXT): \
libarchive/test/$(am__dirstamp) \
libarchive/test/$(DEPDIR)/$(am__dirstamp)
-rm -f tar/*.$(OBJEXT)
-rm -f tar/test/*.$(OBJEXT)
-rm -f test_utils/*.$(OBJEXT)
+ -rm -f unzip/*.$(OBJEXT)
+ -rm -f unzip/test/*.$(OBJEXT)
distclean-compile:
-rm -f *.tab.c
@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/test-test_compat_solaris_pax_sparse.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/test-test_compat_solaris_tar_acl.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/test-test_compat_star_acl.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/test-test_compat_tar_directory.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/test-test_compat_tar_hardlink.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/test-test_compat_uudecode.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/test-test_compat_uudecode_large.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/test-test_read_filter_program.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/test-test_read_filter_program_signature.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/test-test_read_filter_uudecode.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/test-test_read_filter_uudecode_raw.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/test-test_read_format_7zip.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/test-test_read_format_7zip_encryption_data.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/test-test_read_format_7zip_encryption_header.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/test-test_read_format_rar_encryption_data.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/test-test_read_format_rar_encryption_header.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/test-test_read_format_rar_encryption_partially.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/test-test_read_format_rar_filter.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/test-test_read_format_rar_invalid1.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/test-test_read_format_raw.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/test-test_read_format_tar.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/test-test_read_format_tar_empty_pax.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/test-test_read_format_tar_empty_with_gnulabel.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/test-test_read_format_tar_filename.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/test-test_read_format_tar_invalid_pax_size.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/test-test_read_format_tbz.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/test-test_read_format_tgz.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/test-test_read_format_tlz.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/test-test_write_format_zip_compression_store.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/test-test_write_format_zip_empty.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/test-test_write_format_zip_empty_zip64.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/test-test_write_format_zip_entry_size_unset.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/test-test_write_format_zip_file.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/test-test_write_format_zip_file_zip64.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/test-test_write_format_zip_large.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@tar/test/$(DEPDIR)/bsdtar_test-test_option_fflags.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@tar/test/$(DEPDIR)/bsdtar_test-test_option_gid_gname.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@tar/test/$(DEPDIR)/bsdtar_test-test_option_grzip.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@tar/test/$(DEPDIR)/bsdtar_test-test_option_ignore_zeros.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@tar/test/$(DEPDIR)/bsdtar_test-test_option_j.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@tar/test/$(DEPDIR)/bsdtar_test-test_option_k.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@tar/test/$(DEPDIR)/bsdtar_test-test_option_keep_newer_files.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@test_utils/$(DEPDIR)/bsdcpio_test-test_utils.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@test_utils/$(DEPDIR)/bsdtar_test-test_main.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@test_utils/$(DEPDIR)/bsdtar_test-test_utils.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@test_utils/$(DEPDIR)/bsdunzip_test-test_main.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@test_utils/$(DEPDIR)/bsdunzip_test-test_utils.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@test_utils/$(DEPDIR)/libarchive_test-test_main.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@test_utils/$(DEPDIR)/libarchive_test-test_utils.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unzip/$(DEPDIR)/bsdunzip-bsdunzip.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unzip/$(DEPDIR)/bsdunzip-cmdline.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unzip/$(DEPDIR)/bsdunzip-la_getline.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unzip/test/$(DEPDIR)/bsdunzip_test-test_0.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unzip/test/$(DEPDIR)/bsdunzip_test-test_C.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unzip/test/$(DEPDIR)/bsdunzip_test-test_L.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unzip/test/$(DEPDIR)/bsdunzip_test-test_P_encryption.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unzip/test/$(DEPDIR)/bsdunzip_test-test_Z1.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unzip/test/$(DEPDIR)/bsdunzip_test-test_basic.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unzip/test/$(DEPDIR)/bsdunzip_test-test_d.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unzip/test/$(DEPDIR)/bsdunzip_test-test_glob.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unzip/test/$(DEPDIR)/bsdunzip_test-test_j.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unzip/test/$(DEPDIR)/bsdunzip_test-test_n.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unzip/test/$(DEPDIR)/bsdunzip_test-test_not_exist.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unzip/test/$(DEPDIR)/bsdunzip_test-test_o.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unzip/test/$(DEPDIR)/bsdunzip_test-test_p.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unzip/test/$(DEPDIR)/bsdunzip_test-test_q.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unzip/test/$(DEPDIR)/bsdunzip_test-test_singlefile.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unzip/test/$(DEPDIR)/bsdunzip_test-test_t.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unzip/test/$(DEPDIR)/bsdunzip_test-test_t_bad.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unzip/test/$(DEPDIR)/bsdunzip_test-test_version.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unzip/test/$(DEPDIR)/bsdunzip_test-test_x.Po@am__quote@ # am--include-marker
$(am__depfiles_remade):
@$(MKDIR_P) $(@D)
@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_grzip.obj `if test -f 'tar/test/test_option_grzip.c'; then $(CYGPATH_W) 'tar/test/test_option_grzip.c'; else $(CYGPATH_W) '$(srcdir)/tar/test/test_option_grzip.c'; fi`
+tar/test/bsdtar_test-test_option_ignore_zeros.o: tar/test/test_option_ignore_zeros.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_ignore_zeros.o -MD -MP -MF tar/test/$(DEPDIR)/bsdtar_test-test_option_ignore_zeros.Tpo -c -o tar/test/bsdtar_test-test_option_ignore_zeros.o `test -f 'tar/test/test_option_ignore_zeros.c' || echo '$(srcdir)/'`tar/test/test_option_ignore_zeros.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) tar/test/$(DEPDIR)/bsdtar_test-test_option_ignore_zeros.Tpo tar/test/$(DEPDIR)/bsdtar_test-test_option_ignore_zeros.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tar/test/test_option_ignore_zeros.c' object='tar/test/bsdtar_test-test_option_ignore_zeros.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_ignore_zeros.o `test -f 'tar/test/test_option_ignore_zeros.c' || echo '$(srcdir)/'`tar/test/test_option_ignore_zeros.c
+
+tar/test/bsdtar_test-test_option_ignore_zeros.obj: tar/test/test_option_ignore_zeros.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_ignore_zeros.obj -MD -MP -MF tar/test/$(DEPDIR)/bsdtar_test-test_option_ignore_zeros.Tpo -c -o tar/test/bsdtar_test-test_option_ignore_zeros.obj `if test -f 'tar/test/test_option_ignore_zeros.c'; then $(CYGPATH_W) 'tar/test/test_option_ignore_zeros.c'; else $(CYGPATH_W) '$(srcdir)/tar/test/test_option_ignore_zeros.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) tar/test/$(DEPDIR)/bsdtar_test-test_option_ignore_zeros.Tpo tar/test/$(DEPDIR)/bsdtar_test-test_option_ignore_zeros.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tar/test/test_option_ignore_zeros.c' object='tar/test/bsdtar_test-test_option_ignore_zeros.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_ignore_zeros.obj `if test -f 'tar/test/test_option_ignore_zeros.c'; then $(CYGPATH_W) 'tar/test/test_option_ignore_zeros.c'; else $(CYGPATH_W) '$(srcdir)/tar/test/test_option_ignore_zeros.c'; fi`
+
tar/test/bsdtar_test-test_option_j.o: tar/test/test_option_j.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_j.o -MD -MP -MF tar/test/$(DEPDIR)/bsdtar_test-test_option_j.Tpo -c -o tar/test/bsdtar_test-test_option_j.o `test -f 'tar/test/test_option_j.c' || echo '$(srcdir)/'`tar/test/test_option_j.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) tar/test/$(DEPDIR)/bsdtar_test-test_option_j.Tpo tar/test/$(DEPDIR)/bsdtar_test-test_option_j.Po
@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_windows.obj `if test -f 'tar/test/test_windows.c'; then $(CYGPATH_W) 'tar/test/test_windows.c'; else $(CYGPATH_W) '$(srcdir)/tar/test/test_windows.c'; fi`
+unzip/bsdunzip-bsdunzip.o: unzip/bsdunzip.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdunzip_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unzip/bsdunzip-bsdunzip.o -MD -MP -MF unzip/$(DEPDIR)/bsdunzip-bsdunzip.Tpo -c -o unzip/bsdunzip-bsdunzip.o `test -f 'unzip/bsdunzip.c' || echo '$(srcdir)/'`unzip/bsdunzip.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unzip/$(DEPDIR)/bsdunzip-bsdunzip.Tpo unzip/$(DEPDIR)/bsdunzip-bsdunzip.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unzip/bsdunzip.c' object='unzip/bsdunzip-bsdunzip.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) $(bsdunzip_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unzip/bsdunzip-bsdunzip.o `test -f 'unzip/bsdunzip.c' || echo '$(srcdir)/'`unzip/bsdunzip.c
+
+unzip/bsdunzip-bsdunzip.obj: unzip/bsdunzip.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdunzip_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unzip/bsdunzip-bsdunzip.obj -MD -MP -MF unzip/$(DEPDIR)/bsdunzip-bsdunzip.Tpo -c -o unzip/bsdunzip-bsdunzip.obj `if test -f 'unzip/bsdunzip.c'; then $(CYGPATH_W) 'unzip/bsdunzip.c'; else $(CYGPATH_W) '$(srcdir)/unzip/bsdunzip.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unzip/$(DEPDIR)/bsdunzip-bsdunzip.Tpo unzip/$(DEPDIR)/bsdunzip-bsdunzip.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unzip/bsdunzip.c' object='unzip/bsdunzip-bsdunzip.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) $(bsdunzip_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unzip/bsdunzip-bsdunzip.obj `if test -f 'unzip/bsdunzip.c'; then $(CYGPATH_W) 'unzip/bsdunzip.c'; else $(CYGPATH_W) '$(srcdir)/unzip/bsdunzip.c'; fi`
+
+unzip/bsdunzip-cmdline.o: unzip/cmdline.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdunzip_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unzip/bsdunzip-cmdline.o -MD -MP -MF unzip/$(DEPDIR)/bsdunzip-cmdline.Tpo -c -o unzip/bsdunzip-cmdline.o `test -f 'unzip/cmdline.c' || echo '$(srcdir)/'`unzip/cmdline.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unzip/$(DEPDIR)/bsdunzip-cmdline.Tpo unzip/$(DEPDIR)/bsdunzip-cmdline.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unzip/cmdline.c' object='unzip/bsdunzip-cmdline.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdunzip_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unzip/bsdunzip-cmdline.o `test -f 'unzip/cmdline.c' || echo '$(srcdir)/'`unzip/cmdline.c
+
+unzip/bsdunzip-cmdline.obj: unzip/cmdline.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdunzip_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unzip/bsdunzip-cmdline.obj -MD -MP -MF unzip/$(DEPDIR)/bsdunzip-cmdline.Tpo -c -o unzip/bsdunzip-cmdline.obj `if test -f 'unzip/cmdline.c'; then $(CYGPATH_W) 'unzip/cmdline.c'; else $(CYGPATH_W) '$(srcdir)/unzip/cmdline.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unzip/$(DEPDIR)/bsdunzip-cmdline.Tpo unzip/$(DEPDIR)/bsdunzip-cmdline.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unzip/cmdline.c' object='unzip/bsdunzip-cmdline.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdunzip_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unzip/bsdunzip-cmdline.obj `if test -f 'unzip/cmdline.c'; then $(CYGPATH_W) 'unzip/cmdline.c'; else $(CYGPATH_W) '$(srcdir)/unzip/cmdline.c'; fi`
+
+unzip/bsdunzip-la_getline.o: unzip/la_getline.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdunzip_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unzip/bsdunzip-la_getline.o -MD -MP -MF unzip/$(DEPDIR)/bsdunzip-la_getline.Tpo -c -o unzip/bsdunzip-la_getline.o `test -f 'unzip/la_getline.c' || echo '$(srcdir)/'`unzip/la_getline.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unzip/$(DEPDIR)/bsdunzip-la_getline.Tpo unzip/$(DEPDIR)/bsdunzip-la_getline.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unzip/la_getline.c' object='unzip/bsdunzip-la_getline.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) $(bsdunzip_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unzip/bsdunzip-la_getline.o `test -f 'unzip/la_getline.c' || echo '$(srcdir)/'`unzip/la_getline.c
+
+unzip/bsdunzip-la_getline.obj: unzip/la_getline.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdunzip_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unzip/bsdunzip-la_getline.obj -MD -MP -MF unzip/$(DEPDIR)/bsdunzip-la_getline.Tpo -c -o unzip/bsdunzip-la_getline.obj `if test -f 'unzip/la_getline.c'; then $(CYGPATH_W) 'unzip/la_getline.c'; else $(CYGPATH_W) '$(srcdir)/unzip/la_getline.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unzip/$(DEPDIR)/bsdunzip-la_getline.Tpo unzip/$(DEPDIR)/bsdunzip-la_getline.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unzip/la_getline.c' object='unzip/bsdunzip-la_getline.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) $(bsdunzip_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unzip/bsdunzip-la_getline.obj `if test -f 'unzip/la_getline.c'; then $(CYGPATH_W) 'unzip/la_getline.c'; else $(CYGPATH_W) '$(srcdir)/unzip/la_getline.c'; fi`
+
+test_utils/bsdunzip_test-test_utils.o: test_utils/test_utils.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_utils/bsdunzip_test-test_utils.o -MD -MP -MF test_utils/$(DEPDIR)/bsdunzip_test-test_utils.Tpo -c -o test_utils/bsdunzip_test-test_utils.o `test -f 'test_utils/test_utils.c' || echo '$(srcdir)/'`test_utils/test_utils.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) test_utils/$(DEPDIR)/bsdunzip_test-test_utils.Tpo test_utils/$(DEPDIR)/bsdunzip_test-test_utils.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test_utils/test_utils.c' object='test_utils/bsdunzip_test-test_utils.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_utils/bsdunzip_test-test_utils.o `test -f 'test_utils/test_utils.c' || echo '$(srcdir)/'`test_utils/test_utils.c
+
+test_utils/bsdunzip_test-test_utils.obj: test_utils/test_utils.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_utils/bsdunzip_test-test_utils.obj -MD -MP -MF test_utils/$(DEPDIR)/bsdunzip_test-test_utils.Tpo -c -o test_utils/bsdunzip_test-test_utils.obj `if test -f 'test_utils/test_utils.c'; then $(CYGPATH_W) 'test_utils/test_utils.c'; else $(CYGPATH_W) '$(srcdir)/test_utils/test_utils.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) test_utils/$(DEPDIR)/bsdunzip_test-test_utils.Tpo test_utils/$(DEPDIR)/bsdunzip_test-test_utils.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test_utils/test_utils.c' object='test_utils/bsdunzip_test-test_utils.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_utils/bsdunzip_test-test_utils.obj `if test -f 'test_utils/test_utils.c'; then $(CYGPATH_W) 'test_utils/test_utils.c'; else $(CYGPATH_W) '$(srcdir)/test_utils/test_utils.c'; fi`
+
+test_utils/bsdunzip_test-test_main.o: test_utils/test_main.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_utils/bsdunzip_test-test_main.o -MD -MP -MF test_utils/$(DEPDIR)/bsdunzip_test-test_main.Tpo -c -o test_utils/bsdunzip_test-test_main.o `test -f 'test_utils/test_main.c' || echo '$(srcdir)/'`test_utils/test_main.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) test_utils/$(DEPDIR)/bsdunzip_test-test_main.Tpo test_utils/$(DEPDIR)/bsdunzip_test-test_main.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test_utils/test_main.c' object='test_utils/bsdunzip_test-test_main.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_utils/bsdunzip_test-test_main.o `test -f 'test_utils/test_main.c' || echo '$(srcdir)/'`test_utils/test_main.c
+
+test_utils/bsdunzip_test-test_main.obj: test_utils/test_main.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_utils/bsdunzip_test-test_main.obj -MD -MP -MF test_utils/$(DEPDIR)/bsdunzip_test-test_main.Tpo -c -o test_utils/bsdunzip_test-test_main.obj `if test -f 'test_utils/test_main.c'; then $(CYGPATH_W) 'test_utils/test_main.c'; else $(CYGPATH_W) '$(srcdir)/test_utils/test_main.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) test_utils/$(DEPDIR)/bsdunzip_test-test_main.Tpo test_utils/$(DEPDIR)/bsdunzip_test-test_main.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test_utils/test_main.c' object='test_utils/bsdunzip_test-test_main.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_utils/bsdunzip_test-test_main.obj `if test -f 'test_utils/test_main.c'; then $(CYGPATH_W) 'test_utils/test_main.c'; else $(CYGPATH_W) '$(srcdir)/test_utils/test_main.c'; fi`
+
+unzip/test/bsdunzip_test-test_0.o: unzip/test/test_0.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unzip/test/bsdunzip_test-test_0.o -MD -MP -MF unzip/test/$(DEPDIR)/bsdunzip_test-test_0.Tpo -c -o unzip/test/bsdunzip_test-test_0.o `test -f 'unzip/test/test_0.c' || echo '$(srcdir)/'`unzip/test/test_0.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unzip/test/$(DEPDIR)/bsdunzip_test-test_0.Tpo unzip/test/$(DEPDIR)/bsdunzip_test-test_0.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unzip/test/test_0.c' object='unzip/test/bsdunzip_test-test_0.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unzip/test/bsdunzip_test-test_0.o `test -f 'unzip/test/test_0.c' || echo '$(srcdir)/'`unzip/test/test_0.c
+
+unzip/test/bsdunzip_test-test_0.obj: unzip/test/test_0.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unzip/test/bsdunzip_test-test_0.obj -MD -MP -MF unzip/test/$(DEPDIR)/bsdunzip_test-test_0.Tpo -c -o unzip/test/bsdunzip_test-test_0.obj `if test -f 'unzip/test/test_0.c'; then $(CYGPATH_W) 'unzip/test/test_0.c'; else $(CYGPATH_W) '$(srcdir)/unzip/test/test_0.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unzip/test/$(DEPDIR)/bsdunzip_test-test_0.Tpo unzip/test/$(DEPDIR)/bsdunzip_test-test_0.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unzip/test/test_0.c' object='unzip/test/bsdunzip_test-test_0.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unzip/test/bsdunzip_test-test_0.obj `if test -f 'unzip/test/test_0.c'; then $(CYGPATH_W) 'unzip/test/test_0.c'; else $(CYGPATH_W) '$(srcdir)/unzip/test/test_0.c'; fi`
+
+unzip/test/bsdunzip_test-test_basic.o: unzip/test/test_basic.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unzip/test/bsdunzip_test-test_basic.o -MD -MP -MF unzip/test/$(DEPDIR)/bsdunzip_test-test_basic.Tpo -c -o unzip/test/bsdunzip_test-test_basic.o `test -f 'unzip/test/test_basic.c' || echo '$(srcdir)/'`unzip/test/test_basic.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unzip/test/$(DEPDIR)/bsdunzip_test-test_basic.Tpo unzip/test/$(DEPDIR)/bsdunzip_test-test_basic.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unzip/test/test_basic.c' object='unzip/test/bsdunzip_test-test_basic.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) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unzip/test/bsdunzip_test-test_basic.o `test -f 'unzip/test/test_basic.c' || echo '$(srcdir)/'`unzip/test/test_basic.c
+
+unzip/test/bsdunzip_test-test_basic.obj: unzip/test/test_basic.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unzip/test/bsdunzip_test-test_basic.obj -MD -MP -MF unzip/test/$(DEPDIR)/bsdunzip_test-test_basic.Tpo -c -o unzip/test/bsdunzip_test-test_basic.obj `if test -f 'unzip/test/test_basic.c'; then $(CYGPATH_W) 'unzip/test/test_basic.c'; else $(CYGPATH_W) '$(srcdir)/unzip/test/test_basic.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unzip/test/$(DEPDIR)/bsdunzip_test-test_basic.Tpo unzip/test/$(DEPDIR)/bsdunzip_test-test_basic.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unzip/test/test_basic.c' object='unzip/test/bsdunzip_test-test_basic.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) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unzip/test/bsdunzip_test-test_basic.obj `if test -f 'unzip/test/test_basic.c'; then $(CYGPATH_W) 'unzip/test/test_basic.c'; else $(CYGPATH_W) '$(srcdir)/unzip/test/test_basic.c'; fi`
+
+unzip/test/bsdunzip_test-test_glob.o: unzip/test/test_glob.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unzip/test/bsdunzip_test-test_glob.o -MD -MP -MF unzip/test/$(DEPDIR)/bsdunzip_test-test_glob.Tpo -c -o unzip/test/bsdunzip_test-test_glob.o `test -f 'unzip/test/test_glob.c' || echo '$(srcdir)/'`unzip/test/test_glob.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unzip/test/$(DEPDIR)/bsdunzip_test-test_glob.Tpo unzip/test/$(DEPDIR)/bsdunzip_test-test_glob.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unzip/test/test_glob.c' object='unzip/test/bsdunzip_test-test_glob.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) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unzip/test/bsdunzip_test-test_glob.o `test -f 'unzip/test/test_glob.c' || echo '$(srcdir)/'`unzip/test/test_glob.c
+
+unzip/test/bsdunzip_test-test_glob.obj: unzip/test/test_glob.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unzip/test/bsdunzip_test-test_glob.obj -MD -MP -MF unzip/test/$(DEPDIR)/bsdunzip_test-test_glob.Tpo -c -o unzip/test/bsdunzip_test-test_glob.obj `if test -f 'unzip/test/test_glob.c'; then $(CYGPATH_W) 'unzip/test/test_glob.c'; else $(CYGPATH_W) '$(srcdir)/unzip/test/test_glob.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unzip/test/$(DEPDIR)/bsdunzip_test-test_glob.Tpo unzip/test/$(DEPDIR)/bsdunzip_test-test_glob.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unzip/test/test_glob.c' object='unzip/test/bsdunzip_test-test_glob.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) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unzip/test/bsdunzip_test-test_glob.obj `if test -f 'unzip/test/test_glob.c'; then $(CYGPATH_W) 'unzip/test/test_glob.c'; else $(CYGPATH_W) '$(srcdir)/unzip/test/test_glob.c'; fi`
+
+unzip/test/bsdunzip_test-test_not_exist.o: unzip/test/test_not_exist.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unzip/test/bsdunzip_test-test_not_exist.o -MD -MP -MF unzip/test/$(DEPDIR)/bsdunzip_test-test_not_exist.Tpo -c -o unzip/test/bsdunzip_test-test_not_exist.o `test -f 'unzip/test/test_not_exist.c' || echo '$(srcdir)/'`unzip/test/test_not_exist.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unzip/test/$(DEPDIR)/bsdunzip_test-test_not_exist.Tpo unzip/test/$(DEPDIR)/bsdunzip_test-test_not_exist.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unzip/test/test_not_exist.c' object='unzip/test/bsdunzip_test-test_not_exist.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) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unzip/test/bsdunzip_test-test_not_exist.o `test -f 'unzip/test/test_not_exist.c' || echo '$(srcdir)/'`unzip/test/test_not_exist.c
+
+unzip/test/bsdunzip_test-test_not_exist.obj: unzip/test/test_not_exist.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unzip/test/bsdunzip_test-test_not_exist.obj -MD -MP -MF unzip/test/$(DEPDIR)/bsdunzip_test-test_not_exist.Tpo -c -o unzip/test/bsdunzip_test-test_not_exist.obj `if test -f 'unzip/test/test_not_exist.c'; then $(CYGPATH_W) 'unzip/test/test_not_exist.c'; else $(CYGPATH_W) '$(srcdir)/unzip/test/test_not_exist.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unzip/test/$(DEPDIR)/bsdunzip_test-test_not_exist.Tpo unzip/test/$(DEPDIR)/bsdunzip_test-test_not_exist.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unzip/test/test_not_exist.c' object='unzip/test/bsdunzip_test-test_not_exist.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) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unzip/test/bsdunzip_test-test_not_exist.obj `if test -f 'unzip/test/test_not_exist.c'; then $(CYGPATH_W) 'unzip/test/test_not_exist.c'; else $(CYGPATH_W) '$(srcdir)/unzip/test/test_not_exist.c'; fi`
+
+unzip/test/bsdunzip_test-test_singlefile.o: unzip/test/test_singlefile.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unzip/test/bsdunzip_test-test_singlefile.o -MD -MP -MF unzip/test/$(DEPDIR)/bsdunzip_test-test_singlefile.Tpo -c -o unzip/test/bsdunzip_test-test_singlefile.o `test -f 'unzip/test/test_singlefile.c' || echo '$(srcdir)/'`unzip/test/test_singlefile.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unzip/test/$(DEPDIR)/bsdunzip_test-test_singlefile.Tpo unzip/test/$(DEPDIR)/bsdunzip_test-test_singlefile.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unzip/test/test_singlefile.c' object='unzip/test/bsdunzip_test-test_singlefile.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) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unzip/test/bsdunzip_test-test_singlefile.o `test -f 'unzip/test/test_singlefile.c' || echo '$(srcdir)/'`unzip/test/test_singlefile.c
+
+unzip/test/bsdunzip_test-test_singlefile.obj: unzip/test/test_singlefile.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unzip/test/bsdunzip_test-test_singlefile.obj -MD -MP -MF unzip/test/$(DEPDIR)/bsdunzip_test-test_singlefile.Tpo -c -o unzip/test/bsdunzip_test-test_singlefile.obj `if test -f 'unzip/test/test_singlefile.c'; then $(CYGPATH_W) 'unzip/test/test_singlefile.c'; else $(CYGPATH_W) '$(srcdir)/unzip/test/test_singlefile.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unzip/test/$(DEPDIR)/bsdunzip_test-test_singlefile.Tpo unzip/test/$(DEPDIR)/bsdunzip_test-test_singlefile.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unzip/test/test_singlefile.c' object='unzip/test/bsdunzip_test-test_singlefile.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) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unzip/test/bsdunzip_test-test_singlefile.obj `if test -f 'unzip/test/test_singlefile.c'; then $(CYGPATH_W) 'unzip/test/test_singlefile.c'; else $(CYGPATH_W) '$(srcdir)/unzip/test/test_singlefile.c'; fi`
+
+unzip/test/bsdunzip_test-test_C.o: unzip/test/test_C.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unzip/test/bsdunzip_test-test_C.o -MD -MP -MF unzip/test/$(DEPDIR)/bsdunzip_test-test_C.Tpo -c -o unzip/test/bsdunzip_test-test_C.o `test -f 'unzip/test/test_C.c' || echo '$(srcdir)/'`unzip/test/test_C.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unzip/test/$(DEPDIR)/bsdunzip_test-test_C.Tpo unzip/test/$(DEPDIR)/bsdunzip_test-test_C.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unzip/test/test_C.c' object='unzip/test/bsdunzip_test-test_C.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) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unzip/test/bsdunzip_test-test_C.o `test -f 'unzip/test/test_C.c' || echo '$(srcdir)/'`unzip/test/test_C.c
+
+unzip/test/bsdunzip_test-test_C.obj: unzip/test/test_C.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unzip/test/bsdunzip_test-test_C.obj -MD -MP -MF unzip/test/$(DEPDIR)/bsdunzip_test-test_C.Tpo -c -o unzip/test/bsdunzip_test-test_C.obj `if test -f 'unzip/test/test_C.c'; then $(CYGPATH_W) 'unzip/test/test_C.c'; else $(CYGPATH_W) '$(srcdir)/unzip/test/test_C.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unzip/test/$(DEPDIR)/bsdunzip_test-test_C.Tpo unzip/test/$(DEPDIR)/bsdunzip_test-test_C.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unzip/test/test_C.c' object='unzip/test/bsdunzip_test-test_C.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) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unzip/test/bsdunzip_test-test_C.obj `if test -f 'unzip/test/test_C.c'; then $(CYGPATH_W) 'unzip/test/test_C.c'; else $(CYGPATH_W) '$(srcdir)/unzip/test/test_C.c'; fi`
+
+unzip/test/bsdunzip_test-test_p.o: unzip/test/test_p.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unzip/test/bsdunzip_test-test_p.o -MD -MP -MF unzip/test/$(DEPDIR)/bsdunzip_test-test_p.Tpo -c -o unzip/test/bsdunzip_test-test_p.o `test -f 'unzip/test/test_p.c' || echo '$(srcdir)/'`unzip/test/test_p.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unzip/test/$(DEPDIR)/bsdunzip_test-test_p.Tpo unzip/test/$(DEPDIR)/bsdunzip_test-test_p.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unzip/test/test_p.c' object='unzip/test/bsdunzip_test-test_p.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) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unzip/test/bsdunzip_test-test_p.o `test -f 'unzip/test/test_p.c' || echo '$(srcdir)/'`unzip/test/test_p.c
+
+unzip/test/bsdunzip_test-test_p.obj: unzip/test/test_p.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unzip/test/bsdunzip_test-test_p.obj -MD -MP -MF unzip/test/$(DEPDIR)/bsdunzip_test-test_p.Tpo -c -o unzip/test/bsdunzip_test-test_p.obj `if test -f 'unzip/test/test_p.c'; then $(CYGPATH_W) 'unzip/test/test_p.c'; else $(CYGPATH_W) '$(srcdir)/unzip/test/test_p.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unzip/test/$(DEPDIR)/bsdunzip_test-test_p.Tpo unzip/test/$(DEPDIR)/bsdunzip_test-test_p.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unzip/test/test_p.c' object='unzip/test/bsdunzip_test-test_p.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) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unzip/test/bsdunzip_test-test_p.obj `if test -f 'unzip/test/test_p.c'; then $(CYGPATH_W) 'unzip/test/test_p.c'; else $(CYGPATH_W) '$(srcdir)/unzip/test/test_p.c'; fi`
+
+unzip/test/bsdunzip_test-test_d.o: unzip/test/test_d.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unzip/test/bsdunzip_test-test_d.o -MD -MP -MF unzip/test/$(DEPDIR)/bsdunzip_test-test_d.Tpo -c -o unzip/test/bsdunzip_test-test_d.o `test -f 'unzip/test/test_d.c' || echo '$(srcdir)/'`unzip/test/test_d.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unzip/test/$(DEPDIR)/bsdunzip_test-test_d.Tpo unzip/test/$(DEPDIR)/bsdunzip_test-test_d.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unzip/test/test_d.c' object='unzip/test/bsdunzip_test-test_d.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) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unzip/test/bsdunzip_test-test_d.o `test -f 'unzip/test/test_d.c' || echo '$(srcdir)/'`unzip/test/test_d.c
+
+unzip/test/bsdunzip_test-test_d.obj: unzip/test/test_d.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unzip/test/bsdunzip_test-test_d.obj -MD -MP -MF unzip/test/$(DEPDIR)/bsdunzip_test-test_d.Tpo -c -o unzip/test/bsdunzip_test-test_d.obj `if test -f 'unzip/test/test_d.c'; then $(CYGPATH_W) 'unzip/test/test_d.c'; else $(CYGPATH_W) '$(srcdir)/unzip/test/test_d.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unzip/test/$(DEPDIR)/bsdunzip_test-test_d.Tpo unzip/test/$(DEPDIR)/bsdunzip_test-test_d.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unzip/test/test_d.c' object='unzip/test/bsdunzip_test-test_d.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) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unzip/test/bsdunzip_test-test_d.obj `if test -f 'unzip/test/test_d.c'; then $(CYGPATH_W) 'unzip/test/test_d.c'; else $(CYGPATH_W) '$(srcdir)/unzip/test/test_d.c'; fi`
+
+unzip/test/bsdunzip_test-test_j.o: unzip/test/test_j.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unzip/test/bsdunzip_test-test_j.o -MD -MP -MF unzip/test/$(DEPDIR)/bsdunzip_test-test_j.Tpo -c -o unzip/test/bsdunzip_test-test_j.o `test -f 'unzip/test/test_j.c' || echo '$(srcdir)/'`unzip/test/test_j.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unzip/test/$(DEPDIR)/bsdunzip_test-test_j.Tpo unzip/test/$(DEPDIR)/bsdunzip_test-test_j.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unzip/test/test_j.c' object='unzip/test/bsdunzip_test-test_j.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) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unzip/test/bsdunzip_test-test_j.o `test -f 'unzip/test/test_j.c' || echo '$(srcdir)/'`unzip/test/test_j.c
+
+unzip/test/bsdunzip_test-test_j.obj: unzip/test/test_j.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unzip/test/bsdunzip_test-test_j.obj -MD -MP -MF unzip/test/$(DEPDIR)/bsdunzip_test-test_j.Tpo -c -o unzip/test/bsdunzip_test-test_j.obj `if test -f 'unzip/test/test_j.c'; then $(CYGPATH_W) 'unzip/test/test_j.c'; else $(CYGPATH_W) '$(srcdir)/unzip/test/test_j.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unzip/test/$(DEPDIR)/bsdunzip_test-test_j.Tpo unzip/test/$(DEPDIR)/bsdunzip_test-test_j.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unzip/test/test_j.c' object='unzip/test/bsdunzip_test-test_j.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) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unzip/test/bsdunzip_test-test_j.obj `if test -f 'unzip/test/test_j.c'; then $(CYGPATH_W) 'unzip/test/test_j.c'; else $(CYGPATH_W) '$(srcdir)/unzip/test/test_j.c'; fi`
+
+unzip/test/bsdunzip_test-test_L.o: unzip/test/test_L.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unzip/test/bsdunzip_test-test_L.o -MD -MP -MF unzip/test/$(DEPDIR)/bsdunzip_test-test_L.Tpo -c -o unzip/test/bsdunzip_test-test_L.o `test -f 'unzip/test/test_L.c' || echo '$(srcdir)/'`unzip/test/test_L.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unzip/test/$(DEPDIR)/bsdunzip_test-test_L.Tpo unzip/test/$(DEPDIR)/bsdunzip_test-test_L.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unzip/test/test_L.c' object='unzip/test/bsdunzip_test-test_L.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) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unzip/test/bsdunzip_test-test_L.o `test -f 'unzip/test/test_L.c' || echo '$(srcdir)/'`unzip/test/test_L.c
+
+unzip/test/bsdunzip_test-test_L.obj: unzip/test/test_L.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unzip/test/bsdunzip_test-test_L.obj -MD -MP -MF unzip/test/$(DEPDIR)/bsdunzip_test-test_L.Tpo -c -o unzip/test/bsdunzip_test-test_L.obj `if test -f 'unzip/test/test_L.c'; then $(CYGPATH_W) 'unzip/test/test_L.c'; else $(CYGPATH_W) '$(srcdir)/unzip/test/test_L.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unzip/test/$(DEPDIR)/bsdunzip_test-test_L.Tpo unzip/test/$(DEPDIR)/bsdunzip_test-test_L.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unzip/test/test_L.c' object='unzip/test/bsdunzip_test-test_L.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) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unzip/test/bsdunzip_test-test_L.obj `if test -f 'unzip/test/test_L.c'; then $(CYGPATH_W) 'unzip/test/test_L.c'; else $(CYGPATH_W) '$(srcdir)/unzip/test/test_L.c'; fi`
+
+unzip/test/bsdunzip_test-test_n.o: unzip/test/test_n.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unzip/test/bsdunzip_test-test_n.o -MD -MP -MF unzip/test/$(DEPDIR)/bsdunzip_test-test_n.Tpo -c -o unzip/test/bsdunzip_test-test_n.o `test -f 'unzip/test/test_n.c' || echo '$(srcdir)/'`unzip/test/test_n.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unzip/test/$(DEPDIR)/bsdunzip_test-test_n.Tpo unzip/test/$(DEPDIR)/bsdunzip_test-test_n.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unzip/test/test_n.c' object='unzip/test/bsdunzip_test-test_n.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) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unzip/test/bsdunzip_test-test_n.o `test -f 'unzip/test/test_n.c' || echo '$(srcdir)/'`unzip/test/test_n.c
+
+unzip/test/bsdunzip_test-test_n.obj: unzip/test/test_n.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unzip/test/bsdunzip_test-test_n.obj -MD -MP -MF unzip/test/$(DEPDIR)/bsdunzip_test-test_n.Tpo -c -o unzip/test/bsdunzip_test-test_n.obj `if test -f 'unzip/test/test_n.c'; then $(CYGPATH_W) 'unzip/test/test_n.c'; else $(CYGPATH_W) '$(srcdir)/unzip/test/test_n.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unzip/test/$(DEPDIR)/bsdunzip_test-test_n.Tpo unzip/test/$(DEPDIR)/bsdunzip_test-test_n.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unzip/test/test_n.c' object='unzip/test/bsdunzip_test-test_n.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) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unzip/test/bsdunzip_test-test_n.obj `if test -f 'unzip/test/test_n.c'; then $(CYGPATH_W) 'unzip/test/test_n.c'; else $(CYGPATH_W) '$(srcdir)/unzip/test/test_n.c'; fi`
+
+unzip/test/bsdunzip_test-test_o.o: unzip/test/test_o.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unzip/test/bsdunzip_test-test_o.o -MD -MP -MF unzip/test/$(DEPDIR)/bsdunzip_test-test_o.Tpo -c -o unzip/test/bsdunzip_test-test_o.o `test -f 'unzip/test/test_o.c' || echo '$(srcdir)/'`unzip/test/test_o.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unzip/test/$(DEPDIR)/bsdunzip_test-test_o.Tpo unzip/test/$(DEPDIR)/bsdunzip_test-test_o.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unzip/test/test_o.c' object='unzip/test/bsdunzip_test-test_o.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) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unzip/test/bsdunzip_test-test_o.o `test -f 'unzip/test/test_o.c' || echo '$(srcdir)/'`unzip/test/test_o.c
+
+unzip/test/bsdunzip_test-test_o.obj: unzip/test/test_o.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unzip/test/bsdunzip_test-test_o.obj -MD -MP -MF unzip/test/$(DEPDIR)/bsdunzip_test-test_o.Tpo -c -o unzip/test/bsdunzip_test-test_o.obj `if test -f 'unzip/test/test_o.c'; then $(CYGPATH_W) 'unzip/test/test_o.c'; else $(CYGPATH_W) '$(srcdir)/unzip/test/test_o.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unzip/test/$(DEPDIR)/bsdunzip_test-test_o.Tpo unzip/test/$(DEPDIR)/bsdunzip_test-test_o.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unzip/test/test_o.c' object='unzip/test/bsdunzip_test-test_o.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) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unzip/test/bsdunzip_test-test_o.obj `if test -f 'unzip/test/test_o.c'; then $(CYGPATH_W) 'unzip/test/test_o.c'; else $(CYGPATH_W) '$(srcdir)/unzip/test/test_o.c'; fi`
+
+unzip/test/bsdunzip_test-test_q.o: unzip/test/test_q.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unzip/test/bsdunzip_test-test_q.o -MD -MP -MF unzip/test/$(DEPDIR)/bsdunzip_test-test_q.Tpo -c -o unzip/test/bsdunzip_test-test_q.o `test -f 'unzip/test/test_q.c' || echo '$(srcdir)/'`unzip/test/test_q.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unzip/test/$(DEPDIR)/bsdunzip_test-test_q.Tpo unzip/test/$(DEPDIR)/bsdunzip_test-test_q.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unzip/test/test_q.c' object='unzip/test/bsdunzip_test-test_q.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) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unzip/test/bsdunzip_test-test_q.o `test -f 'unzip/test/test_q.c' || echo '$(srcdir)/'`unzip/test/test_q.c
+
+unzip/test/bsdunzip_test-test_q.obj: unzip/test/test_q.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unzip/test/bsdunzip_test-test_q.obj -MD -MP -MF unzip/test/$(DEPDIR)/bsdunzip_test-test_q.Tpo -c -o unzip/test/bsdunzip_test-test_q.obj `if test -f 'unzip/test/test_q.c'; then $(CYGPATH_W) 'unzip/test/test_q.c'; else $(CYGPATH_W) '$(srcdir)/unzip/test/test_q.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unzip/test/$(DEPDIR)/bsdunzip_test-test_q.Tpo unzip/test/$(DEPDIR)/bsdunzip_test-test_q.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unzip/test/test_q.c' object='unzip/test/bsdunzip_test-test_q.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) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unzip/test/bsdunzip_test-test_q.obj `if test -f 'unzip/test/test_q.c'; then $(CYGPATH_W) 'unzip/test/test_q.c'; else $(CYGPATH_W) '$(srcdir)/unzip/test/test_q.c'; fi`
+
+unzip/test/bsdunzip_test-test_t.o: unzip/test/test_t.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unzip/test/bsdunzip_test-test_t.o -MD -MP -MF unzip/test/$(DEPDIR)/bsdunzip_test-test_t.Tpo -c -o unzip/test/bsdunzip_test-test_t.o `test -f 'unzip/test/test_t.c' || echo '$(srcdir)/'`unzip/test/test_t.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unzip/test/$(DEPDIR)/bsdunzip_test-test_t.Tpo unzip/test/$(DEPDIR)/bsdunzip_test-test_t.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unzip/test/test_t.c' object='unzip/test/bsdunzip_test-test_t.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) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unzip/test/bsdunzip_test-test_t.o `test -f 'unzip/test/test_t.c' || echo '$(srcdir)/'`unzip/test/test_t.c
+
+unzip/test/bsdunzip_test-test_t.obj: unzip/test/test_t.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unzip/test/bsdunzip_test-test_t.obj -MD -MP -MF unzip/test/$(DEPDIR)/bsdunzip_test-test_t.Tpo -c -o unzip/test/bsdunzip_test-test_t.obj `if test -f 'unzip/test/test_t.c'; then $(CYGPATH_W) 'unzip/test/test_t.c'; else $(CYGPATH_W) '$(srcdir)/unzip/test/test_t.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unzip/test/$(DEPDIR)/bsdunzip_test-test_t.Tpo unzip/test/$(DEPDIR)/bsdunzip_test-test_t.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unzip/test/test_t.c' object='unzip/test/bsdunzip_test-test_t.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) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unzip/test/bsdunzip_test-test_t.obj `if test -f 'unzip/test/test_t.c'; then $(CYGPATH_W) 'unzip/test/test_t.c'; else $(CYGPATH_W) '$(srcdir)/unzip/test/test_t.c'; fi`
+
+unzip/test/bsdunzip_test-test_t_bad.o: unzip/test/test_t_bad.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unzip/test/bsdunzip_test-test_t_bad.o -MD -MP -MF unzip/test/$(DEPDIR)/bsdunzip_test-test_t_bad.Tpo -c -o unzip/test/bsdunzip_test-test_t_bad.o `test -f 'unzip/test/test_t_bad.c' || echo '$(srcdir)/'`unzip/test/test_t_bad.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unzip/test/$(DEPDIR)/bsdunzip_test-test_t_bad.Tpo unzip/test/$(DEPDIR)/bsdunzip_test-test_t_bad.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unzip/test/test_t_bad.c' object='unzip/test/bsdunzip_test-test_t_bad.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) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unzip/test/bsdunzip_test-test_t_bad.o `test -f 'unzip/test/test_t_bad.c' || echo '$(srcdir)/'`unzip/test/test_t_bad.c
+
+unzip/test/bsdunzip_test-test_t_bad.obj: unzip/test/test_t_bad.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unzip/test/bsdunzip_test-test_t_bad.obj -MD -MP -MF unzip/test/$(DEPDIR)/bsdunzip_test-test_t_bad.Tpo -c -o unzip/test/bsdunzip_test-test_t_bad.obj `if test -f 'unzip/test/test_t_bad.c'; then $(CYGPATH_W) 'unzip/test/test_t_bad.c'; else $(CYGPATH_W) '$(srcdir)/unzip/test/test_t_bad.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unzip/test/$(DEPDIR)/bsdunzip_test-test_t_bad.Tpo unzip/test/$(DEPDIR)/bsdunzip_test-test_t_bad.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unzip/test/test_t_bad.c' object='unzip/test/bsdunzip_test-test_t_bad.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) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unzip/test/bsdunzip_test-test_t_bad.obj `if test -f 'unzip/test/test_t_bad.c'; then $(CYGPATH_W) 'unzip/test/test_t_bad.c'; else $(CYGPATH_W) '$(srcdir)/unzip/test/test_t_bad.c'; fi`
+
+unzip/test/bsdunzip_test-test_version.o: unzip/test/test_version.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unzip/test/bsdunzip_test-test_version.o -MD -MP -MF unzip/test/$(DEPDIR)/bsdunzip_test-test_version.Tpo -c -o unzip/test/bsdunzip_test-test_version.o `test -f 'unzip/test/test_version.c' || echo '$(srcdir)/'`unzip/test/test_version.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unzip/test/$(DEPDIR)/bsdunzip_test-test_version.Tpo unzip/test/$(DEPDIR)/bsdunzip_test-test_version.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unzip/test/test_version.c' object='unzip/test/bsdunzip_test-test_version.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unzip/test/bsdunzip_test-test_version.o `test -f 'unzip/test/test_version.c' || echo '$(srcdir)/'`unzip/test/test_version.c
+
+unzip/test/bsdunzip_test-test_version.obj: unzip/test/test_version.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unzip/test/bsdunzip_test-test_version.obj -MD -MP -MF unzip/test/$(DEPDIR)/bsdunzip_test-test_version.Tpo -c -o unzip/test/bsdunzip_test-test_version.obj `if test -f 'unzip/test/test_version.c'; then $(CYGPATH_W) 'unzip/test/test_version.c'; else $(CYGPATH_W) '$(srcdir)/unzip/test/test_version.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unzip/test/$(DEPDIR)/bsdunzip_test-test_version.Tpo unzip/test/$(DEPDIR)/bsdunzip_test-test_version.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unzip/test/test_version.c' object='unzip/test/bsdunzip_test-test_version.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unzip/test/bsdunzip_test-test_version.obj `if test -f 'unzip/test/test_version.c'; then $(CYGPATH_W) 'unzip/test/test_version.c'; else $(CYGPATH_W) '$(srcdir)/unzip/test/test_version.c'; fi`
+
+unzip/test/bsdunzip_test-test_x.o: unzip/test/test_x.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unzip/test/bsdunzip_test-test_x.o -MD -MP -MF unzip/test/$(DEPDIR)/bsdunzip_test-test_x.Tpo -c -o unzip/test/bsdunzip_test-test_x.o `test -f 'unzip/test/test_x.c' || echo '$(srcdir)/'`unzip/test/test_x.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unzip/test/$(DEPDIR)/bsdunzip_test-test_x.Tpo unzip/test/$(DEPDIR)/bsdunzip_test-test_x.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unzip/test/test_x.c' object='unzip/test/bsdunzip_test-test_x.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) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unzip/test/bsdunzip_test-test_x.o `test -f 'unzip/test/test_x.c' || echo '$(srcdir)/'`unzip/test/test_x.c
+
+unzip/test/bsdunzip_test-test_x.obj: unzip/test/test_x.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unzip/test/bsdunzip_test-test_x.obj -MD -MP -MF unzip/test/$(DEPDIR)/bsdunzip_test-test_x.Tpo -c -o unzip/test/bsdunzip_test-test_x.obj `if test -f 'unzip/test/test_x.c'; then $(CYGPATH_W) 'unzip/test/test_x.c'; else $(CYGPATH_W) '$(srcdir)/unzip/test/test_x.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unzip/test/$(DEPDIR)/bsdunzip_test-test_x.Tpo unzip/test/$(DEPDIR)/bsdunzip_test-test_x.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unzip/test/test_x.c' object='unzip/test/bsdunzip_test-test_x.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) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unzip/test/bsdunzip_test-test_x.obj `if test -f 'unzip/test/test_x.c'; then $(CYGPATH_W) 'unzip/test/test_x.c'; else $(CYGPATH_W) '$(srcdir)/unzip/test/test_x.c'; fi`
+
+unzip/test/bsdunzip_test-test_Z1.o: unzip/test/test_Z1.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unzip/test/bsdunzip_test-test_Z1.o -MD -MP -MF unzip/test/$(DEPDIR)/bsdunzip_test-test_Z1.Tpo -c -o unzip/test/bsdunzip_test-test_Z1.o `test -f 'unzip/test/test_Z1.c' || echo '$(srcdir)/'`unzip/test/test_Z1.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unzip/test/$(DEPDIR)/bsdunzip_test-test_Z1.Tpo unzip/test/$(DEPDIR)/bsdunzip_test-test_Z1.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unzip/test/test_Z1.c' object='unzip/test/bsdunzip_test-test_Z1.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) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unzip/test/bsdunzip_test-test_Z1.o `test -f 'unzip/test/test_Z1.c' || echo '$(srcdir)/'`unzip/test/test_Z1.c
+
+unzip/test/bsdunzip_test-test_Z1.obj: unzip/test/test_Z1.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unzip/test/bsdunzip_test-test_Z1.obj -MD -MP -MF unzip/test/$(DEPDIR)/bsdunzip_test-test_Z1.Tpo -c -o unzip/test/bsdunzip_test-test_Z1.obj `if test -f 'unzip/test/test_Z1.c'; then $(CYGPATH_W) 'unzip/test/test_Z1.c'; else $(CYGPATH_W) '$(srcdir)/unzip/test/test_Z1.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unzip/test/$(DEPDIR)/bsdunzip_test-test_Z1.Tpo unzip/test/$(DEPDIR)/bsdunzip_test-test_Z1.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unzip/test/test_Z1.c' object='unzip/test/bsdunzip_test-test_Z1.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) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unzip/test/bsdunzip_test-test_Z1.obj `if test -f 'unzip/test/test_Z1.c'; then $(CYGPATH_W) 'unzip/test/test_Z1.c'; else $(CYGPATH_W) '$(srcdir)/unzip/test/test_Z1.c'; fi`
+
+unzip/test/bsdunzip_test-test_P_encryption.o: unzip/test/test_P_encryption.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unzip/test/bsdunzip_test-test_P_encryption.o -MD -MP -MF unzip/test/$(DEPDIR)/bsdunzip_test-test_P_encryption.Tpo -c -o unzip/test/bsdunzip_test-test_P_encryption.o `test -f 'unzip/test/test_P_encryption.c' || echo '$(srcdir)/'`unzip/test/test_P_encryption.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unzip/test/$(DEPDIR)/bsdunzip_test-test_P_encryption.Tpo unzip/test/$(DEPDIR)/bsdunzip_test-test_P_encryption.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unzip/test/test_P_encryption.c' object='unzip/test/bsdunzip_test-test_P_encryption.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) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unzip/test/bsdunzip_test-test_P_encryption.o `test -f 'unzip/test/test_P_encryption.c' || echo '$(srcdir)/'`unzip/test/test_P_encryption.c
+
+unzip/test/bsdunzip_test-test_P_encryption.obj: unzip/test/test_P_encryption.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unzip/test/bsdunzip_test-test_P_encryption.obj -MD -MP -MF unzip/test/$(DEPDIR)/bsdunzip_test-test_P_encryption.Tpo -c -o unzip/test/bsdunzip_test-test_P_encryption.obj `if test -f 'unzip/test/test_P_encryption.c'; then $(CYGPATH_W) 'unzip/test/test_P_encryption.c'; else $(CYGPATH_W) '$(srcdir)/unzip/test/test_P_encryption.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unzip/test/$(DEPDIR)/bsdunzip_test-test_P_encryption.Tpo unzip/test/$(DEPDIR)/bsdunzip_test-test_P_encryption.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unzip/test/test_P_encryption.c' object='unzip/test/bsdunzip_test-test_P_encryption.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) $(bsdunzip_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unzip/test/bsdunzip_test-test_P_encryption.obj `if test -f 'unzip/test/test_P_encryption.c'; then $(CYGPATH_W) 'unzip/test/test_P_encryption.c'; else $(CYGPATH_W) '$(srcdir)/unzip/test/test_P_encryption.c'; fi`
+
libarchive/test-archive_acl.o: libarchive/archive_acl.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test-archive_acl.o -MD -MP -MF libarchive/$(DEPDIR)/test-archive_acl.Tpo -c -o libarchive/test-archive_acl.o `test -f 'libarchive/archive_acl.c' || echo '$(srcdir)/'`libarchive/archive_acl.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libarchive/$(DEPDIR)/test-archive_acl.Tpo libarchive/$(DEPDIR)/test-archive_acl.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/test-test_compat_star_acl.obj `if test -f 'libarchive/test/test_compat_star_acl.c'; then $(CYGPATH_W) 'libarchive/test/test_compat_star_acl.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_compat_star_acl.c'; fi`
+libarchive/test/test-test_compat_tar_directory.o: libarchive/test/test_compat_tar_directory.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/test-test_compat_tar_directory.o -MD -MP -MF libarchive/test/$(DEPDIR)/test-test_compat_tar_directory.Tpo -c -o libarchive/test/test-test_compat_tar_directory.o `test -f 'libarchive/test/test_compat_tar_directory.c' || echo '$(srcdir)/'`libarchive/test/test_compat_tar_directory.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/test-test_compat_tar_directory.Tpo libarchive/test/$(DEPDIR)/test-test_compat_tar_directory.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libarchive/test/test_compat_tar_directory.c' object='libarchive/test/test-test_compat_tar_directory.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/test-test_compat_tar_directory.o `test -f 'libarchive/test/test_compat_tar_directory.c' || echo '$(srcdir)/'`libarchive/test/test_compat_tar_directory.c
+
+libarchive/test/test-test_compat_tar_directory.obj: libarchive/test/test_compat_tar_directory.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/test-test_compat_tar_directory.obj -MD -MP -MF libarchive/test/$(DEPDIR)/test-test_compat_tar_directory.Tpo -c -o libarchive/test/test-test_compat_tar_directory.obj `if test -f 'libarchive/test/test_compat_tar_directory.c'; then $(CYGPATH_W) 'libarchive/test/test_compat_tar_directory.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_compat_tar_directory.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/test-test_compat_tar_directory.Tpo libarchive/test/$(DEPDIR)/test-test_compat_tar_directory.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libarchive/test/test_compat_tar_directory.c' object='libarchive/test/test-test_compat_tar_directory.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/test-test_compat_tar_directory.obj `if test -f 'libarchive/test/test_compat_tar_directory.c'; then $(CYGPATH_W) 'libarchive/test/test_compat_tar_directory.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_compat_tar_directory.c'; fi`
+
libarchive/test/test-test_compat_tar_hardlink.o: libarchive/test/test_compat_tar_hardlink.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/test-test_compat_tar_hardlink.o -MD -MP -MF libarchive/test/$(DEPDIR)/test-test_compat_tar_hardlink.Tpo -c -o libarchive/test/test-test_compat_tar_hardlink.o `test -f 'libarchive/test/test_compat_tar_hardlink.c' || echo '$(srcdir)/'`libarchive/test/test_compat_tar_hardlink.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/test-test_compat_tar_hardlink.Tpo libarchive/test/$(DEPDIR)/test-test_compat_tar_hardlink.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/test-test_read_filter_uudecode.obj `if test -f 'libarchive/test/test_read_filter_uudecode.c'; then $(CYGPATH_W) 'libarchive/test/test_read_filter_uudecode.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_filter_uudecode.c'; fi`
+libarchive/test/test-test_read_filter_uudecode_raw.o: libarchive/test/test_read_filter_uudecode_raw.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/test-test_read_filter_uudecode_raw.o -MD -MP -MF libarchive/test/$(DEPDIR)/test-test_read_filter_uudecode_raw.Tpo -c -o libarchive/test/test-test_read_filter_uudecode_raw.o `test -f 'libarchive/test/test_read_filter_uudecode_raw.c' || echo '$(srcdir)/'`libarchive/test/test_read_filter_uudecode_raw.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/test-test_read_filter_uudecode_raw.Tpo libarchive/test/$(DEPDIR)/test-test_read_filter_uudecode_raw.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libarchive/test/test_read_filter_uudecode_raw.c' object='libarchive/test/test-test_read_filter_uudecode_raw.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/test-test_read_filter_uudecode_raw.o `test -f 'libarchive/test/test_read_filter_uudecode_raw.c' || echo '$(srcdir)/'`libarchive/test/test_read_filter_uudecode_raw.c
+
+libarchive/test/test-test_read_filter_uudecode_raw.obj: libarchive/test/test_read_filter_uudecode_raw.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/test-test_read_filter_uudecode_raw.obj -MD -MP -MF libarchive/test/$(DEPDIR)/test-test_read_filter_uudecode_raw.Tpo -c -o libarchive/test/test-test_read_filter_uudecode_raw.obj `if test -f 'libarchive/test/test_read_filter_uudecode_raw.c'; then $(CYGPATH_W) 'libarchive/test/test_read_filter_uudecode_raw.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_filter_uudecode_raw.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/test-test_read_filter_uudecode_raw.Tpo libarchive/test/$(DEPDIR)/test-test_read_filter_uudecode_raw.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libarchive/test/test_read_filter_uudecode_raw.c' object='libarchive/test/test-test_read_filter_uudecode_raw.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/test-test_read_filter_uudecode_raw.obj `if test -f 'libarchive/test/test_read_filter_uudecode_raw.c'; then $(CYGPATH_W) 'libarchive/test/test_read_filter_uudecode_raw.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_filter_uudecode_raw.c'; fi`
+
libarchive/test/test-test_read_format_7zip.o: libarchive/test/test_read_format_7zip.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/test-test_read_format_7zip.o -MD -MP -MF libarchive/test/$(DEPDIR)/test-test_read_format_7zip.Tpo -c -o libarchive/test/test-test_read_format_7zip.o `test -f 'libarchive/test/test_read_format_7zip.c' || echo '$(srcdir)/'`libarchive/test/test_read_format_7zip.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/test-test_read_format_7zip.Tpo libarchive/test/$(DEPDIR)/test-test_read_format_7zip.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/test-test_read_format_rar_encryption_header.obj `if test -f 'libarchive/test/test_read_format_rar_encryption_header.c'; then $(CYGPATH_W) 'libarchive/test/test_read_format_rar_encryption_header.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_format_rar_encryption_header.c'; fi`
+libarchive/test/test-test_read_format_rar_filter.o: libarchive/test/test_read_format_rar_filter.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/test-test_read_format_rar_filter.o -MD -MP -MF libarchive/test/$(DEPDIR)/test-test_read_format_rar_filter.Tpo -c -o libarchive/test/test-test_read_format_rar_filter.o `test -f 'libarchive/test/test_read_format_rar_filter.c' || echo '$(srcdir)/'`libarchive/test/test_read_format_rar_filter.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/test-test_read_format_rar_filter.Tpo libarchive/test/$(DEPDIR)/test-test_read_format_rar_filter.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libarchive/test/test_read_format_rar_filter.c' object='libarchive/test/test-test_read_format_rar_filter.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/test-test_read_format_rar_filter.o `test -f 'libarchive/test/test_read_format_rar_filter.c' || echo '$(srcdir)/'`libarchive/test/test_read_format_rar_filter.c
+
+libarchive/test/test-test_read_format_rar_filter.obj: libarchive/test/test_read_format_rar_filter.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/test-test_read_format_rar_filter.obj -MD -MP -MF libarchive/test/$(DEPDIR)/test-test_read_format_rar_filter.Tpo -c -o libarchive/test/test-test_read_format_rar_filter.obj `if test -f 'libarchive/test/test_read_format_rar_filter.c'; then $(CYGPATH_W) 'libarchive/test/test_read_format_rar_filter.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_format_rar_filter.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/test-test_read_format_rar_filter.Tpo libarchive/test/$(DEPDIR)/test-test_read_format_rar_filter.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libarchive/test/test_read_format_rar_filter.c' object='libarchive/test/test-test_read_format_rar_filter.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/test-test_read_format_rar_filter.obj `if test -f 'libarchive/test/test_read_format_rar_filter.c'; then $(CYGPATH_W) 'libarchive/test/test_read_format_rar_filter.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_format_rar_filter.c'; fi`
+
libarchive/test/test-test_read_format_rar_invalid1.o: libarchive/test/test_read_format_rar_invalid1.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/test-test_read_format_rar_invalid1.o -MD -MP -MF libarchive/test/$(DEPDIR)/test-test_read_format_rar_invalid1.Tpo -c -o libarchive/test/test-test_read_format_rar_invalid1.o `test -f 'libarchive/test/test_read_format_rar_invalid1.c' || echo '$(srcdir)/'`libarchive/test/test_read_format_rar_invalid1.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/test-test_read_format_rar_invalid1.Tpo libarchive/test/$(DEPDIR)/test-test_read_format_rar_invalid1.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/test-test_read_format_tar_filename.obj `if test -f 'libarchive/test/test_read_format_tar_filename.c'; then $(CYGPATH_W) 'libarchive/test/test_read_format_tar_filename.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_format_tar_filename.c'; fi`
+libarchive/test/test-test_read_format_tar_invalid_pax_size.o: libarchive/test/test_read_format_tar_invalid_pax_size.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/test-test_read_format_tar_invalid_pax_size.o -MD -MP -MF libarchive/test/$(DEPDIR)/test-test_read_format_tar_invalid_pax_size.Tpo -c -o libarchive/test/test-test_read_format_tar_invalid_pax_size.o `test -f 'libarchive/test/test_read_format_tar_invalid_pax_size.c' || echo '$(srcdir)/'`libarchive/test/test_read_format_tar_invalid_pax_size.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/test-test_read_format_tar_invalid_pax_size.Tpo libarchive/test/$(DEPDIR)/test-test_read_format_tar_invalid_pax_size.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libarchive/test/test_read_format_tar_invalid_pax_size.c' object='libarchive/test/test-test_read_format_tar_invalid_pax_size.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/test-test_read_format_tar_invalid_pax_size.o `test -f 'libarchive/test/test_read_format_tar_invalid_pax_size.c' || echo '$(srcdir)/'`libarchive/test/test_read_format_tar_invalid_pax_size.c
+
+libarchive/test/test-test_read_format_tar_invalid_pax_size.obj: libarchive/test/test_read_format_tar_invalid_pax_size.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/test-test_read_format_tar_invalid_pax_size.obj -MD -MP -MF libarchive/test/$(DEPDIR)/test-test_read_format_tar_invalid_pax_size.Tpo -c -o libarchive/test/test-test_read_format_tar_invalid_pax_size.obj `if test -f 'libarchive/test/test_read_format_tar_invalid_pax_size.c'; then $(CYGPATH_W) 'libarchive/test/test_read_format_tar_invalid_pax_size.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_format_tar_invalid_pax_size.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/test-test_read_format_tar_invalid_pax_size.Tpo libarchive/test/$(DEPDIR)/test-test_read_format_tar_invalid_pax_size.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libarchive/test/test_read_format_tar_invalid_pax_size.c' object='libarchive/test/test-test_read_format_tar_invalid_pax_size.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/test-test_read_format_tar_invalid_pax_size.obj `if test -f 'libarchive/test/test_read_format_tar_invalid_pax_size.c'; then $(CYGPATH_W) 'libarchive/test/test_read_format_tar_invalid_pax_size.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_format_tar_invalid_pax_size.c'; fi`
+
libarchive/test/test-test_read_format_tbz.o: libarchive/test/test_read_format_tbz.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/test-test_read_format_tbz.o -MD -MP -MF libarchive/test/$(DEPDIR)/test-test_read_format_tbz.Tpo -c -o libarchive/test/test-test_read_format_tbz.o `test -f 'libarchive/test/test_read_format_tbz.c' || echo '$(srcdir)/'`libarchive/test/test_read_format_tbz.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/test-test_read_format_tbz.Tpo libarchive/test/$(DEPDIR)/test-test_read_format_tbz.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/test-test_write_format_zip_compression_store.obj `if test -f 'libarchive/test/test_write_format_zip_compression_store.c'; then $(CYGPATH_W) 'libarchive/test/test_write_format_zip_compression_store.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_write_format_zip_compression_store.c'; fi`
+libarchive/test/test-test_write_format_zip_entry_size_unset.o: libarchive/test/test_write_format_zip_entry_size_unset.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/test-test_write_format_zip_entry_size_unset.o -MD -MP -MF libarchive/test/$(DEPDIR)/test-test_write_format_zip_entry_size_unset.Tpo -c -o libarchive/test/test-test_write_format_zip_entry_size_unset.o `test -f 'libarchive/test/test_write_format_zip_entry_size_unset.c' || echo '$(srcdir)/'`libarchive/test/test_write_format_zip_entry_size_unset.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/test-test_write_format_zip_entry_size_unset.Tpo libarchive/test/$(DEPDIR)/test-test_write_format_zip_entry_size_unset.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libarchive/test/test_write_format_zip_entry_size_unset.c' object='libarchive/test/test-test_write_format_zip_entry_size_unset.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/test-test_write_format_zip_entry_size_unset.o `test -f 'libarchive/test/test_write_format_zip_entry_size_unset.c' || echo '$(srcdir)/'`libarchive/test/test_write_format_zip_entry_size_unset.c
+
+libarchive/test/test-test_write_format_zip_entry_size_unset.obj: libarchive/test/test_write_format_zip_entry_size_unset.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/test-test_write_format_zip_entry_size_unset.obj -MD -MP -MF libarchive/test/$(DEPDIR)/test-test_write_format_zip_entry_size_unset.Tpo -c -o libarchive/test/test-test_write_format_zip_entry_size_unset.obj `if test -f 'libarchive/test/test_write_format_zip_entry_size_unset.c'; then $(CYGPATH_W) 'libarchive/test/test_write_format_zip_entry_size_unset.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_write_format_zip_entry_size_unset.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/test-test_write_format_zip_entry_size_unset.Tpo libarchive/test/$(DEPDIR)/test-test_write_format_zip_entry_size_unset.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libarchive/test/test_write_format_zip_entry_size_unset.c' object='libarchive/test/test-test_write_format_zip_entry_size_unset.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/test-test_write_format_zip_entry_size_unset.obj `if test -f 'libarchive/test/test_write_format_zip_entry_size_unset.c'; then $(CYGPATH_W) 'libarchive/test/test_write_format_zip_entry_size_unset.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_write_format_zip_entry_size_unset.c'; fi`
+
libarchive/test/test-test_write_format_zip_empty.o: libarchive/test/test_write_format_zip_empty.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/test-test_write_format_zip_empty.o -MD -MP -MF libarchive/test/$(DEPDIR)/test-test_write_format_zip_empty.Tpo -c -o libarchive/test/test-test_write_format_zip_empty.o `test -f 'libarchive/test/test_write_format_zip_empty.c' || echo '$(srcdir)/'`libarchive/test/test_write_format_zip_empty.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/test-test_write_format_zip_empty.Tpo libarchive/test/$(DEPDIR)/test-test_write_format_zip_empty.Po
test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \
fi; \
echo "$${col}$$br$${std}"; \
- echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \
+ echo "$${col}Testsuite summary"$(AM_TESTSUITE_SUMMARY_HEADER)"$${std}"; \
echo "$${col}$$br$${std}"; \
create_testsuite_report --maybe-color; \
echo "$$col$$br$$std"; \
--log-file $$b.log --trs-file $$b.trs \
$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
"$$tst" $(AM_TESTS_FD_REDIRECT)
+bsdunzip_test.log: bsdunzip_test$(EXEEXT)
+ @p='bsdunzip_test$(EXEEXT)'; \
+ b='bsdunzip_test'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
.test.log:
@p='$<'; \
$(am__set_b); \
@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \
@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT)
-
distdir: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) distdir-am
tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
$(am__post_remove_distdir)
+dist-zstd: distdir
+ tardir=$(distdir) && $(am__tar) | zstd -c $${ZSTD_CLEVEL-$${ZSTD_OPT--19}} >$(distdir).tar.zst
+ $(am__post_remove_distdir)
+
dist-tarZ: distdir
@echo WARNING: "Support for distribution archives compressed with" \
"legacy program 'compress' is deprecated." >&2
eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\
*.zip*) \
unzip $(distdir).zip ;;\
+ *.tar.zst*) \
+ zstd -dc $(distdir).tar.zst | $(am__untar) ;;\
esac
chmod -R a-w $(distdir)
chmod u+w $(distdir)
$(DISTCHECK_CONFIGURE_FLAGS) \
--srcdir=../.. --prefix="$$dc_install_base" \
&& $(MAKE) $(AM_MAKEFLAGS) \
- && $(MAKE) $(AM_MAKEFLAGS) dvi \
+ && $(MAKE) $(AM_MAKEFLAGS) $(AM_DISTCHECK_DVI_TARGET) \
&& $(MAKE) $(AM_MAKEFLAGS) check \
&& $(MAKE) $(AM_MAKEFLAGS) install \
&& $(MAKE) $(AM_MAKEFLAGS) installcheck \
config.h
install-binPROGRAMS: install-libLTLIBRARIES
+install-checkPROGRAMS: install-libLTLIBRARIES
+
installdirs:
for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(libdir)" "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man3dir)" "$(DESTDIR)$(man5dir)" "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(includedir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) install-am
-install-exec: install-exec-am
+install-exec: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) install-exec-am
install-data: install-data-am
uninstall: uninstall-am
-rm -f tar/test/$(am__dirstamp)
-rm -f test_utils/$(DEPDIR)/$(am__dirstamp)
-rm -f test_utils/$(am__dirstamp)
+ -rm -f unzip/$(DEPDIR)/$(am__dirstamp)
+ -rm -f unzip/$(am__dirstamp)
+ -rm -f unzip/test/$(DEPDIR)/$(am__dirstamp)
+ -rm -f unzip/test/$(am__dirstamp)
-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
maintainer-clean-generic:
-rm -f libarchive/test/$(DEPDIR)/test-test_compat_solaris_pax_sparse.Po
-rm -f libarchive/test/$(DEPDIR)/test-test_compat_solaris_tar_acl.Po
-rm -f libarchive/test/$(DEPDIR)/test-test_compat_star_acl.Po
+ -rm -f libarchive/test/$(DEPDIR)/test-test_compat_tar_directory.Po
-rm -f libarchive/test/$(DEPDIR)/test-test_compat_tar_hardlink.Po
-rm -f libarchive/test/$(DEPDIR)/test-test_compat_uudecode.Po
-rm -f libarchive/test/$(DEPDIR)/test-test_compat_uudecode_large.Po
-rm -f libarchive/test/$(DEPDIR)/test-test_read_filter_program.Po
-rm -f libarchive/test/$(DEPDIR)/test-test_read_filter_program_signature.Po
-rm -f libarchive/test/$(DEPDIR)/test-test_read_filter_uudecode.Po
+ -rm -f libarchive/test/$(DEPDIR)/test-test_read_filter_uudecode_raw.Po
-rm -f libarchive/test/$(DEPDIR)/test-test_read_format_7zip.Po
-rm -f libarchive/test/$(DEPDIR)/test-test_read_format_7zip_encryption_data.Po
-rm -f libarchive/test/$(DEPDIR)/test-test_read_format_7zip_encryption_header.Po
-rm -f libarchive/test/$(DEPDIR)/test-test_read_format_rar_encryption_data.Po
-rm -f libarchive/test/$(DEPDIR)/test-test_read_format_rar_encryption_header.Po
-rm -f libarchive/test/$(DEPDIR)/test-test_read_format_rar_encryption_partially.Po
+ -rm -f libarchive/test/$(DEPDIR)/test-test_read_format_rar_filter.Po
-rm -f libarchive/test/$(DEPDIR)/test-test_read_format_rar_invalid1.Po
-rm -f libarchive/test/$(DEPDIR)/test-test_read_format_raw.Po
-rm -f libarchive/test/$(DEPDIR)/test-test_read_format_tar.Po
-rm -f libarchive/test/$(DEPDIR)/test-test_read_format_tar_empty_pax.Po
-rm -f libarchive/test/$(DEPDIR)/test-test_read_format_tar_empty_with_gnulabel.Po
-rm -f libarchive/test/$(DEPDIR)/test-test_read_format_tar_filename.Po
+ -rm -f libarchive/test/$(DEPDIR)/test-test_read_format_tar_invalid_pax_size.Po
-rm -f libarchive/test/$(DEPDIR)/test-test_read_format_tbz.Po
-rm -f libarchive/test/$(DEPDIR)/test-test_read_format_tgz.Po
-rm -f libarchive/test/$(DEPDIR)/test-test_read_format_tlz.Po
-rm -f libarchive/test/$(DEPDIR)/test-test_write_format_zip_compression_store.Po
-rm -f libarchive/test/$(DEPDIR)/test-test_write_format_zip_empty.Po
-rm -f libarchive/test/$(DEPDIR)/test-test_write_format_zip_empty_zip64.Po
+ -rm -f libarchive/test/$(DEPDIR)/test-test_write_format_zip_entry_size_unset.Po
-rm -f libarchive/test/$(DEPDIR)/test-test_write_format_zip_file.Po
-rm -f libarchive/test/$(DEPDIR)/test-test_write_format_zip_file_zip64.Po
-rm -f libarchive/test/$(DEPDIR)/test-test_write_format_zip_large.Po
-rm -f tar/test/$(DEPDIR)/bsdtar_test-test_option_fflags.Po
-rm -f tar/test/$(DEPDIR)/bsdtar_test-test_option_gid_gname.Po
-rm -f tar/test/$(DEPDIR)/bsdtar_test-test_option_grzip.Po
+ -rm -f tar/test/$(DEPDIR)/bsdtar_test-test_option_ignore_zeros.Po
-rm -f tar/test/$(DEPDIR)/bsdtar_test-test_option_j.Po
-rm -f tar/test/$(DEPDIR)/bsdtar_test-test_option_k.Po
-rm -f tar/test/$(DEPDIR)/bsdtar_test-test_option_keep_newer_files.Po
-rm -f test_utils/$(DEPDIR)/bsdcpio_test-test_utils.Po
-rm -f test_utils/$(DEPDIR)/bsdtar_test-test_main.Po
-rm -f test_utils/$(DEPDIR)/bsdtar_test-test_utils.Po
+ -rm -f test_utils/$(DEPDIR)/bsdunzip_test-test_main.Po
+ -rm -f test_utils/$(DEPDIR)/bsdunzip_test-test_utils.Po
-rm -f test_utils/$(DEPDIR)/libarchive_test-test_main.Po
-rm -f test_utils/$(DEPDIR)/libarchive_test-test_utils.Po
+ -rm -f unzip/$(DEPDIR)/bsdunzip-bsdunzip.Po
+ -rm -f unzip/$(DEPDIR)/bsdunzip-cmdline.Po
+ -rm -f unzip/$(DEPDIR)/bsdunzip-la_getline.Po
+ -rm -f unzip/test/$(DEPDIR)/bsdunzip_test-test_0.Po
+ -rm -f unzip/test/$(DEPDIR)/bsdunzip_test-test_C.Po
+ -rm -f unzip/test/$(DEPDIR)/bsdunzip_test-test_L.Po
+ -rm -f unzip/test/$(DEPDIR)/bsdunzip_test-test_P_encryption.Po
+ -rm -f unzip/test/$(DEPDIR)/bsdunzip_test-test_Z1.Po
+ -rm -f unzip/test/$(DEPDIR)/bsdunzip_test-test_basic.Po
+ -rm -f unzip/test/$(DEPDIR)/bsdunzip_test-test_d.Po
+ -rm -f unzip/test/$(DEPDIR)/bsdunzip_test-test_glob.Po
+ -rm -f unzip/test/$(DEPDIR)/bsdunzip_test-test_j.Po
+ -rm -f unzip/test/$(DEPDIR)/bsdunzip_test-test_n.Po
+ -rm -f unzip/test/$(DEPDIR)/bsdunzip_test-test_not_exist.Po
+ -rm -f unzip/test/$(DEPDIR)/bsdunzip_test-test_o.Po
+ -rm -f unzip/test/$(DEPDIR)/bsdunzip_test-test_p.Po
+ -rm -f unzip/test/$(DEPDIR)/bsdunzip_test-test_q.Po
+ -rm -f unzip/test/$(DEPDIR)/bsdunzip_test-test_singlefile.Po
+ -rm -f unzip/test/$(DEPDIR)/bsdunzip_test-test_t.Po
+ -rm -f unzip/test/$(DEPDIR)/bsdunzip_test-test_t_bad.Po
+ -rm -f unzip/test/$(DEPDIR)/bsdunzip_test-test_version.Po
+ -rm -f unzip/test/$(DEPDIR)/bsdunzip_test-test_x.Po
-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
distclean-hdr distclean-libtool distclean-local distclean-tags
-rm -f libarchive/test/$(DEPDIR)/test-test_compat_solaris_pax_sparse.Po
-rm -f libarchive/test/$(DEPDIR)/test-test_compat_solaris_tar_acl.Po
-rm -f libarchive/test/$(DEPDIR)/test-test_compat_star_acl.Po
+ -rm -f libarchive/test/$(DEPDIR)/test-test_compat_tar_directory.Po
-rm -f libarchive/test/$(DEPDIR)/test-test_compat_tar_hardlink.Po
-rm -f libarchive/test/$(DEPDIR)/test-test_compat_uudecode.Po
-rm -f libarchive/test/$(DEPDIR)/test-test_compat_uudecode_large.Po
-rm -f libarchive/test/$(DEPDIR)/test-test_read_filter_program.Po
-rm -f libarchive/test/$(DEPDIR)/test-test_read_filter_program_signature.Po
-rm -f libarchive/test/$(DEPDIR)/test-test_read_filter_uudecode.Po
+ -rm -f libarchive/test/$(DEPDIR)/test-test_read_filter_uudecode_raw.Po
-rm -f libarchive/test/$(DEPDIR)/test-test_read_format_7zip.Po
-rm -f libarchive/test/$(DEPDIR)/test-test_read_format_7zip_encryption_data.Po
-rm -f libarchive/test/$(DEPDIR)/test-test_read_format_7zip_encryption_header.Po
-rm -f libarchive/test/$(DEPDIR)/test-test_read_format_rar_encryption_data.Po
-rm -f libarchive/test/$(DEPDIR)/test-test_read_format_rar_encryption_header.Po
-rm -f libarchive/test/$(DEPDIR)/test-test_read_format_rar_encryption_partially.Po
+ -rm -f libarchive/test/$(DEPDIR)/test-test_read_format_rar_filter.Po
-rm -f libarchive/test/$(DEPDIR)/test-test_read_format_rar_invalid1.Po
-rm -f libarchive/test/$(DEPDIR)/test-test_read_format_raw.Po
-rm -f libarchive/test/$(DEPDIR)/test-test_read_format_tar.Po
-rm -f libarchive/test/$(DEPDIR)/test-test_read_format_tar_empty_pax.Po
-rm -f libarchive/test/$(DEPDIR)/test-test_read_format_tar_empty_with_gnulabel.Po
-rm -f libarchive/test/$(DEPDIR)/test-test_read_format_tar_filename.Po
+ -rm -f libarchive/test/$(DEPDIR)/test-test_read_format_tar_invalid_pax_size.Po
-rm -f libarchive/test/$(DEPDIR)/test-test_read_format_tbz.Po
-rm -f libarchive/test/$(DEPDIR)/test-test_read_format_tgz.Po
-rm -f libarchive/test/$(DEPDIR)/test-test_read_format_tlz.Po
-rm -f libarchive/test/$(DEPDIR)/test-test_write_format_zip_compression_store.Po
-rm -f libarchive/test/$(DEPDIR)/test-test_write_format_zip_empty.Po
-rm -f libarchive/test/$(DEPDIR)/test-test_write_format_zip_empty_zip64.Po
+ -rm -f libarchive/test/$(DEPDIR)/test-test_write_format_zip_entry_size_unset.Po
-rm -f libarchive/test/$(DEPDIR)/test-test_write_format_zip_file.Po
-rm -f libarchive/test/$(DEPDIR)/test-test_write_format_zip_file_zip64.Po
-rm -f libarchive/test/$(DEPDIR)/test-test_write_format_zip_large.Po
-rm -f tar/test/$(DEPDIR)/bsdtar_test-test_option_fflags.Po
-rm -f tar/test/$(DEPDIR)/bsdtar_test-test_option_gid_gname.Po
-rm -f tar/test/$(DEPDIR)/bsdtar_test-test_option_grzip.Po
+ -rm -f tar/test/$(DEPDIR)/bsdtar_test-test_option_ignore_zeros.Po
-rm -f tar/test/$(DEPDIR)/bsdtar_test-test_option_j.Po
-rm -f tar/test/$(DEPDIR)/bsdtar_test-test_option_k.Po
-rm -f tar/test/$(DEPDIR)/bsdtar_test-test_option_keep_newer_files.Po
-rm -f test_utils/$(DEPDIR)/bsdcpio_test-test_utils.Po
-rm -f test_utils/$(DEPDIR)/bsdtar_test-test_main.Po
-rm -f test_utils/$(DEPDIR)/bsdtar_test-test_utils.Po
+ -rm -f test_utils/$(DEPDIR)/bsdunzip_test-test_main.Po
+ -rm -f test_utils/$(DEPDIR)/bsdunzip_test-test_utils.Po
-rm -f test_utils/$(DEPDIR)/libarchive_test-test_main.Po
-rm -f test_utils/$(DEPDIR)/libarchive_test-test_utils.Po
+ -rm -f unzip/$(DEPDIR)/bsdunzip-bsdunzip.Po
+ -rm -f unzip/$(DEPDIR)/bsdunzip-cmdline.Po
+ -rm -f unzip/$(DEPDIR)/bsdunzip-la_getline.Po
+ -rm -f unzip/test/$(DEPDIR)/bsdunzip_test-test_0.Po
+ -rm -f unzip/test/$(DEPDIR)/bsdunzip_test-test_C.Po
+ -rm -f unzip/test/$(DEPDIR)/bsdunzip_test-test_L.Po
+ -rm -f unzip/test/$(DEPDIR)/bsdunzip_test-test_P_encryption.Po
+ -rm -f unzip/test/$(DEPDIR)/bsdunzip_test-test_Z1.Po
+ -rm -f unzip/test/$(DEPDIR)/bsdunzip_test-test_basic.Po
+ -rm -f unzip/test/$(DEPDIR)/bsdunzip_test-test_d.Po
+ -rm -f unzip/test/$(DEPDIR)/bsdunzip_test-test_glob.Po
+ -rm -f unzip/test/$(DEPDIR)/bsdunzip_test-test_j.Po
+ -rm -f unzip/test/$(DEPDIR)/bsdunzip_test-test_n.Po
+ -rm -f unzip/test/$(DEPDIR)/bsdunzip_test-test_not_exist.Po
+ -rm -f unzip/test/$(DEPDIR)/bsdunzip_test-test_o.Po
+ -rm -f unzip/test/$(DEPDIR)/bsdunzip_test-test_p.Po
+ -rm -f unzip/test/$(DEPDIR)/bsdunzip_test-test_q.Po
+ -rm -f unzip/test/$(DEPDIR)/bsdunzip_test-test_singlefile.Po
+ -rm -f unzip/test/$(DEPDIR)/bsdunzip_test-test_t.Po
+ -rm -f unzip/test/$(DEPDIR)/bsdunzip_test-test_t_bad.Po
+ -rm -f unzip/test/$(DEPDIR)/bsdunzip_test-test_version.Po
+ -rm -f unzip/test/$(DEPDIR)/bsdunzip_test-test_x.Po
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
uninstall-man: uninstall-man1 uninstall-man3 uninstall-man5
-.MAKE: all check check-am install install-am install-strip
+.MAKE: all check check-am install install-am install-exec \
+ install-strip
.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles am--refresh check \
check-TESTS check-am clean clean-binPROGRAMS \
clean-libLTLIBRARIES clean-libtool clean-noinstLTLIBRARIES \
cscope cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \
dist-gzip dist-hook dist-lzip dist-shar dist-tarZ dist-xz \
- dist-zip distcheck distclean distclean-compile \
+ dist-zip dist-zstd distcheck distclean distclean-compile \
distclean-generic distclean-hdr distclean-libtool \
distclean-local distclean-tags distcleancheck distdir \
distuninstallcheck dvi dvi-am html html-am info info-am \
-[ -f cpio/Makefile ] && cd cpio && make clean
-[ -f cpio/test/Makefile ] && cd cpio/test && make clean
-[ -f cat/Makefile ] && cd cat && make clean
- -[ -f cpio/test/Makefile ] && cd cat/test && make clean
+ -[ -f cat/test/Makefile ] && cd cat/test && make clean
+ -[ -f unzip/Makefile ] && cd unzip && make clean
+ -[ -f unzip/test/Makefile ] && cd unzip/test && make clean
# The "list.h" file just lists all of the tests defined in all of the sources.
# Building it automatically provides a sanity-check on libarchive_test_SOURCES
cat $(top_srcdir)/cpio/test/test_*.c | grep '^DEFINE_TEST' > cpio/test/list.h
cat/test/list.h: Makefile
+ $(MKDIR_P) cat/test
cat $(top_srcdir)/cat/test/test_*.c | grep '^DEFINE_TEST' > cat/test/list.h
+unzip/test/list.h: Makefile
+ $(MKDIR_P) unzip/test
+ cat $(top_srcdir)/unzip/test/test_*.c | grep '^DEFINE_TEST' > unzip/test/list.h
+
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
+Sep 12, 2023: libarchive 3.7.2 released
+
+Jul 29, 2023: libarchive 3.7.1 released
+
+Jul 18, 2023: libarchive 3.7.0 released
+
+Jul 14, 2023: bsdunzip port from FreeBSD
+
+Dec 07, 2022: libarchive 3.6.2 released
+
+Apr 08, 2022: libarchive 3.6.1 released
+
+Feb 09, 2022: libarchive 3.6.0 released
+
+Feb 08, 2022: libarchive 3.5.3 released
+
Aug 22, 2021: libarchive 3.5.2 released
Dec 26, 2020: libarchive 3.5.1 released
## Questions? Issues?
-* http://www.libarchive.org is the home for ongoing
+* https://www.libarchive.org is the home for ongoing
libarchive development, including documentation,
and links to the libarchive mailing lists.
* To report an issue, use the issue tracker at
* **tar**: the 'bsdtar' program is a full-featured 'tar' implementation built on libarchive
* **cpio**: the 'bsdcpio' program is a different interface to essentially the same functionality
* **cat**: the 'bsdcat' program is a simple replacement tool for zcat, bzcat, xzcat, and such
+* **unzip**: the 'bsdunzip' program is a simple replacement tool for Info-ZIP's unzip
* **examples**: Some small example programs that you may find useful.
* **examples/minitar**: a compact sample demonstrating use of libarchive.
* **contrib**: Various items sent to me by third parties; please contact the authors with any questions.
* **configure** - configuration script, see INSTALL for details. If your copy of the source lacks a `configure` script, you can try to construct it by running the script in `build/autogen.sh` (or use `cmake`).
The following files in the top-level directory are used by the 'configure' script:
+
* `Makefile.am`, `aclocal.m4`, `configure.ac` - used to build this distribution, only needed by maintainers
* `Makefile.in`, `config.h.in` - templates used by configure script
## Supported Formats
Currently, the library automatically detects and reads the following formats:
+
* Old V7 tar archives
* POSIX ustar
* GNU tar format (including GNU long filenames, long link names, and sparse files)
* ZIPX archives (with support for bzip2, ppmd8, lzma and xz compressed entries)
* GNU and BSD 'ar' archives
* 'mtree' format
- * 7-Zip archives
+ * 7-Zip archives (including archives that use zstandard compression)
* Microsoft CAB format
* LHA and LZH archives
* RAR and RAR 5.0 archives (with some limitations due to RAR's proprietary status)
* XAR archives
The library also detects and handles any of the following before evaluating the archive:
+
* uuencoded files
* files with RPM wrapper
* gzip compression
* zstandard compression
The library can create archives in any of the following formats:
+
* POSIX ustar
* POSIX pax interchange format
* "restricted" pax format, which will create ustar archives except for
* XAR archives
When creating archives, the result can be filtered with any of the following:
+
* uuencode
* gzip compression
* bzip2 compression
functions. On those platforms, libarchive will use the non-thread-safe
functions. Patches to improve this are of great interest to us.
+* The function `archive_write_disk_header()` is _not_ thread safe on
+ POSIX machines and could lead to security issue resulting in world
+ writeable directories. Thus it must be mutexed by the calling code.
+ This is due to calling `umask(oldumask = umask(0))`, which sets the
+ umask for the whole process to 0 for a short time frame.
+ In case other thread calls the same function in parallel, it might
+ get interrupted by it and cause the executable to use umask=0 for the
+ remaining execution.
+ This will then lead to implicitely created directories to have 777
+ permissions without sticky bit.
+
* In particular, libarchive's modules to read or write a directory
tree do use `chdir()` to optimize the directory traversals. This
can cause problems for programs that expect to do disk access from
-# generated automatically by aclocal 1.16.1 -*- Autoconf -*-
+# generated automatically by aclocal 1.16.5 -*- Autoconf -*-
-# Copyright (C) 1996-2018 Free Software Foundation, Inc.
+# Copyright (C) 1996-2021 Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])
m4_ifndef([AC_AUTOCONF_VERSION],
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
-m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],,
-[m4_warning([this file was generated for autoconf 2.69.
+m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.71],,
+[m4_warning([this file was generated for autoconf 2.71.
You have another version of autoconf. It may work, but is not guaranteed to.
If you have problems, you may need to regenerate the build system entirely.
To do so, use the procedure documented by the package, typically 'autoreconf'.])])
# to the OS version, if on x86, and 10.4, the deployment
# target defaults to 10.4. Don't you love it?
case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
- 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*)
+ 10.0,*86*-darwin8*|10.0,*-darwin[[912]]*)
_lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;;
10.[[012]][[,.]]*)
_lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;;
- 10.*)
+ 10.*|11.*)
_lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;;
esac
;;
m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])])
m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])])
-dnl pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*-
-dnl serial 11 (pkg-config-0.29.1)
-dnl
+# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*-
+# serial 12 (pkg-config-0.29.2)
+
dnl Copyright © 2004 Scott James Remnant <scott@netsplit.com>.
dnl Copyright © 2012-2015 Dan Nicholson <dbn.lists@gmail.com>
dnl
dnl See the "Since" comment for each macro you use to see what version
dnl of the macros you require.
m4_defun([PKG_PREREQ],
-[m4_define([PKG_MACROS_VERSION], [0.29.1])
+[m4_define([PKG_MACROS_VERSION], [0.29.2])
m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1,
[m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])])
])dnl PKG_PREREQ
AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl
pkg_failed=no
-AC_MSG_CHECKING([for $1])
+AC_MSG_CHECKING([for $2])
_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2])
_PKG_CONFIG([$1][_LIBS], [libs], [$2])
See the pkg-config man page for more details.])
if test $pkg_failed = yes; then
- AC_MSG_RESULT([no])
+ AC_MSG_RESULT([no])
_PKG_SHORT_ERRORS_SUPPORTED
if test $_pkg_short_errors_supported = yes; then
$1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1`
- else
+ else
$1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1`
fi
# Put the nasty error message in config.log where it belongs
_PKG_TEXT])[]dnl
])
elif test $pkg_failed = untried; then
- AC_MSG_RESULT([no])
+ AC_MSG_RESULT([no])
m4_default([$4], [AC_MSG_FAILURE(
[The pkg-config script could not be found or is too old. Make sure it
is in your PATH or set the PKG_CONFIG environment variable to the full
AS_VAR_IF([$1], [""], [$5], [$4])dnl
])dnl PKG_CHECK_VAR
-# Copyright (C) 2002-2018 Free Software Foundation, Inc.
+# Copyright (C) 2002-2021 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
[am__api_version='1.16'
dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
dnl require some minimum version. Point them to the right macro.
-m4_if([$1], [1.16.1], [],
+m4_if([$1], [1.16.5], [],
[AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
])
# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.16.1])dnl
+[AM_AUTOMAKE_VERSION([1.16.5])dnl
m4_ifndef([AC_AUTOCONF_VERSION],
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
# AM_AUX_DIR_EXPAND -*- Autoconf -*-
-# Copyright (C) 2001-2018 Free Software Foundation, Inc.
+# Copyright (C) 2001-2021 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# AM_CONDITIONAL -*- Autoconf -*-
-# Copyright (C) 1997-2018 Free Software Foundation, Inc.
+# Copyright (C) 1997-2021 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
Usually this means the macro was only invoked conditionally.]])
fi])])
-# Copyright (C) 1999-2018 Free Software Foundation, Inc.
+# Copyright (C) 1999-2021 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# Generate code to set up dependency tracking. -*- Autoconf -*-
-# Copyright (C) 1999-2018 Free Software Foundation, Inc.
+# Copyright (C) 1999-2021 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
done
if test $am_rc -ne 0; then
AC_MSG_FAILURE([Something went wrong bootstrapping makefile fragments
- for automatic dependency tracking. Try re-running configure with the
+ for automatic dependency tracking. If GNU make was not used, consider
+ re-running the configure script with MAKE="gmake" (or whatever is
+ necessary). You can also try re-running configure with the
'--disable-dependency-tracking' option to at least be able to build
the package (albeit without support for automatic dependency tracking).])
fi
# Do all the work for Automake. -*- Autoconf -*-
-# Copyright (C) 1996-2018 Free Software Foundation, Inc.
+# Copyright (C) 1996-2021 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# release and drop the old call support.
AC_DEFUN([AM_INIT_AUTOMAKE],
[AC_PREREQ([2.65])dnl
+m4_ifdef([_$0_ALREADY_INIT],
+ [m4_fatal([$0 expanded multiple times
+]m4_defn([_$0_ALREADY_INIT]))],
+ [m4_define([_$0_ALREADY_INIT], m4_expansion_stack)])dnl
dnl Autoconf wants to disallow AM_ names. We explicitly allow
dnl the ones we care about.
m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
[_AM_SET_OPTIONS([$1])dnl
dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
m4_if(
- m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]),
+ m4_ifset([AC_PACKAGE_NAME], [ok]):m4_ifset([AC_PACKAGE_VERSION], [ok]),
[ok:ok],,
[m4_fatal([AC_INIT should be called with package and version arguments])])dnl
AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
[m4_define([AC_PROG_OBJCXX],
m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl
])
+# Variables for tags utilities; see am/tags.am
+if test -z "$CTAGS"; then
+ CTAGS=ctags
+fi
+AC_SUBST([CTAGS])
+if test -z "$ETAGS"; then
+ ETAGS=etags
+fi
+AC_SUBST([ETAGS])
+if test -z "$CSCOPE"; then
+ CSCOPE=cscope
+fi
+AC_SUBST([CSCOPE])
+
AC_REQUIRE([AM_SILENT_RULES])dnl
dnl The testsuite driver may need to know about EXEEXT, so add the
dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This
done
echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
-# Copyright (C) 2001-2018 Free Software Foundation, Inc.
+# Copyright (C) 2001-2021 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
fi
AC_SUBST([install_sh])])
-# Copyright (C) 2003-2018 Free Software Foundation, Inc.
+# Copyright (C) 2003-2021 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# Add --enable-maintainer-mode option to configure. -*- Autoconf -*-
# From Jim Meyering
-# Copyright (C) 1996-2018 Free Software Foundation, Inc.
+# Copyright (C) 1996-2021 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# Check to see how 'make' treats includes. -*- Autoconf -*-
-# Copyright (C) 2001-2018 Free Software Foundation, Inc.
+# Copyright (C) 2001-2021 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
-# Copyright (C) 1997-2018 Free Software Foundation, Inc.
+# Copyright (C) 1997-2021 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
AC_REQUIRE_AUX_FILE([missing])dnl
if test x"${MISSING+set}" != xset; then
- case $am_aux_dir in
- *\ * | *\ *)
- MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
- *)
- MISSING="\${SHELL} $am_aux_dir/missing" ;;
- esac
+ MISSING="\${SHELL} '$am_aux_dir/missing'"
fi
# Use eval to expand $SHELL
if eval "$MISSING --is-lightweight"; then
# Helper functions for option handling. -*- Autoconf -*-
-# Copyright (C) 2001-2018 Free Software Foundation, Inc.
+# Copyright (C) 2001-2021 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
AC_DEFUN([_AM_IF_OPTION],
[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
-# Copyright (C) 1999-2018 Free Software Foundation, Inc.
+# Copyright (C) 1999-2021 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# For backward compatibility.
AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
-# Copyright (C) 2001-2018 Free Software Foundation, Inc.
+# Copyright (C) 2001-2021 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# Check to make sure that the build environment is sane. -*- Autoconf -*-
-# Copyright (C) 1996-2018 Free Software Foundation, Inc.
+# Copyright (C) 1996-2021 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
rm -f conftest.file
])
-# Copyright (C) 2009-2018 Free Software Foundation, Inc.
+# Copyright (C) 2009-2021 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
])
-# Copyright (C) 2001-2018 Free Software Foundation, Inc.
+# Copyright (C) 2001-2021 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
AC_SUBST([INSTALL_STRIP_PROGRAM])])
-# Copyright (C) 2006-2018 Free Software Foundation, Inc.
+# Copyright (C) 2006-2021 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# Check how to create a tarball. -*- Autoconf -*-
-# Copyright (C) 2004-2018 Free Software Foundation, Inc.
+# Copyright (C) 2004-2021 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
m4_include([build/autoconf/lib-ld.m4])
m4_include([build/autoconf/lib-link.m4])
m4_include([build/autoconf/lib-prefix.m4])
+m4_include([build/autoconf/m4_ax_compile_check_sizeof.m4])
scriptversion=2018-03-07.03; # UTC
-# Copyright (C) 1999-2018 Free Software Foundation, Inc.
+# Copyright (C) 1999-2021 Free Software Foundation, Inc.
# Written by Tom Tromey <tromey@cygnus.com>.
#
# This program is free software; you can redistribute it and/or modify
MINGW*)
file_conv=mingw
;;
- CYGWIN*)
+ CYGWIN* | MSYS*)
file_conv=cygwin
;;
*)
mingw/*)
file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
;;
- cygwin/*)
+ cygwin/* | msys/*)
file=`cygpath -m "$file" || echo "$file"`
;;
wine/*)
#! /bin/sh
# Attempt to guess a canonical system name.
-# Copyright 1992-2018 Free Software Foundation, Inc.
+# Copyright 1992-2022 Free Software Foundation, Inc.
-timestamp='2018-02-24'
+# shellcheck disable=SC2006,SC2268 # see below for rationale
+
+timestamp='2022-01-09'
# 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
-# the Free Software Foundation; either version 3 of the License, or
+# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# Originally written by Per Bothner; maintained since 2000 by Ben Elliston.
#
# You can get the latest version of this script from:
-# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
+# https://git.savannah.gnu.org/cgit/config.git/plain/config.guess
#
# Please send patches to <config-patches@gnu.org>.
+# The "shellcheck disable" line above the timestamp inhibits complaints
+# about features and limitations of the classic Bourne shell that were
+# superseded or lifted in POSIX. However, this script identifies a wide
+# variety of pre-POSIX systems that do not have POSIX shells at all, and
+# even some reasonably current systems (Solaris 10 as case-in-point) still
+# have a pre-POSIX /bin/sh.
+
+
me=`echo "$0" | sed -e 's,.*/,,'`
usage="\
GNU config.guess ($timestamp)
Originally written by Per Bothner.
-Copyright 1992-2018 Free Software Foundation, Inc.
+Copyright 1992-2022 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."
exit 1
fi
-trap 'exit 1' 1 2 15
+# Just in case it came from the environment.
+GUESS=
# 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
# 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"' 0 1 2 13 15
+
+set_cc_for_build() {
+ # prevent multiple calls if $tmp is already set
+ test "$tmp" && return 0
+ : "${TMPDIR=/tmp}"
+ # shellcheck disable=SC2039,SC3028
+ { 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
UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
-UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=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
+ LIBC=unknown
- eval "$set_cc_for_build"
+ set_cc_for_build
cat <<-EOF > "$dummy.c"
#include <features.h>
#if defined(__UCLIBC__)
LIBC=uclibc
#elif defined(__dietlibc__)
LIBC=dietlibc
- #else
+ #elif defined(__GLIBC__)
LIBC=gnu
+ #else
+ #include <stdarg.h>
+ /* First heuristic to detect musl libc. */
+ #ifdef __DEFINED_va_list
+ LIBC=musl
+ #endif
#endif
EOF
- eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`"
+ cc_set_libc=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`
+ eval "$cc_set_libc"
- # 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
+ # Second heuristic to detect musl libc.
+ if [ "$LIBC" = unknown ] &&
+ command -v ldd >/dev/null &&
+ ldd --version 2>&1 | grep -q ^musl; then
+ LIBC=musl
+ fi
+
+ # If the system lacks a compiler, then just pick glibc.
+ # We could probably try harder.
+ if [ "$LIBC" = unknown ]; then
+ LIBC=gnu
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*,
#
# Note: NetBSD doesn't particularly care about the vendor
# 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 -n hw.machine_arch 2>/dev/null || \
+ /usr/sbin/sysctl -n hw.machine_arch 2>/dev/null || \
echo unknown)`
- case "$UNAME_MACHINE_ARCH" in
+ case $UNAME_MACHINE_ARCH in
+ aarch64eb) machine=aarch64_be-unknown ;;
armeb) machine=armeb-unknown ;;
arm*) machine=arm-unknown ;;
sh3el) machine=shl-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
+ 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
;;
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"`
# 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'
;;
# 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}"
- exit ;;
+ GUESS=$machine-${os}${release}${abi-}
+ ;;
*:Bitrig:*:*)
UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
- echo "$UNAME_MACHINE_ARCH"-unknown-bitrig"$UNAME_RELEASE"
- exit ;;
+ GUESS=$UNAME_MACHINE_ARCH-unknown-bitrig$UNAME_RELEASE
+ ;;
*:OpenBSD:*:*)
UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
- echo "$UNAME_MACHINE_ARCH"-unknown-openbsd"$UNAME_RELEASE"
- exit ;;
+ GUESS=$UNAME_MACHINE_ARCH-unknown-openbsd$UNAME_RELEASE
+ ;;
+ *:SecBSD:*:*)
+ UNAME_MACHINE_ARCH=`arch | sed 's/SecBSD.//'`
+ GUESS=$UNAME_MACHINE_ARCH-unknown-secbsd$UNAME_RELEASE
+ ;;
*:LibertyBSD:*:*)
UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'`
- echo "$UNAME_MACHINE_ARCH"-unknown-libertybsd"$UNAME_RELEASE"
- exit ;;
+ GUESS=$UNAME_MACHINE_ARCH-unknown-libertybsd$UNAME_RELEASE
+ ;;
*:MidnightBSD:*:*)
- echo "$UNAME_MACHINE"-unknown-midnightbsd"$UNAME_RELEASE"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-midnightbsd$UNAME_RELEASE
+ ;;
*:ekkoBSD:*:*)
- echo "$UNAME_MACHINE"-unknown-ekkobsd"$UNAME_RELEASE"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-ekkobsd$UNAME_RELEASE
+ ;;
*:SolidBSD:*:*)
- echo "$UNAME_MACHINE"-unknown-solidbsd"$UNAME_RELEASE"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-solidbsd$UNAME_RELEASE
+ ;;
+ *:OS108:*:*)
+ GUESS=$UNAME_MACHINE-unknown-os108_$UNAME_RELEASE
+ ;;
macppc:MirBSD:*:*)
- echo powerpc-unknown-mirbsd"$UNAME_RELEASE"
- exit ;;
+ GUESS=powerpc-unknown-mirbsd$UNAME_RELEASE
+ ;;
*:MirBSD:*:*)
- echo "$UNAME_MACHINE"-unknown-mirbsd"$UNAME_RELEASE"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-mirbsd$UNAME_RELEASE
+ ;;
*:Sortix:*:*)
- echo "$UNAME_MACHINE"-unknown-sortix
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-sortix
+ ;;
+ *:Twizzler:*:*)
+ GUESS=$UNAME_MACHINE-unknown-twizzler
+ ;;
*:Redox:*:*)
- echo "$UNAME_MACHINE"-unknown-redox
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-redox
+ ;;
mips:OSF1:*.*)
- echo mips-dec-osf1
- exit ;;
+ GUESS=mips-dec-osf1
+ ;;
alpha:OSF1:*:*)
+ # Reset EXIT trap before exiting to avoid spurious non-zero exit code.
+ trap '' 0
case $UNAME_RELEASE in
*4.0)
UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
# covers most systems running today. This code pipes the CPU
# types through head -n 1, so we only detect the type of CPU 0.
ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1`
- case "$ALPHA_CPU_TYPE" in
+ case $ALPHA_CPU_TYPE in
"EV4 (21064)")
UNAME_MACHINE=alpha ;;
"EV4.5 (21064)")
# 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`"
- # Reset EXIT trap before exiting to avoid spurious non-zero exit code.
- exitcode=$?
- trap '' 0
- exit $exitcode ;;
+ OSF_REL=`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
+ GUESS=$UNAME_MACHINE-dec-osf$OSF_REL
+ ;;
Amiga*:UNIX_System_V:4.0:*)
- echo m68k-unknown-sysv4
- exit ;;
+ GUESS=m68k-unknown-sysv4
+ ;;
*:[Aa]miga[Oo][Ss]:*:*)
- echo "$UNAME_MACHINE"-unknown-amigaos
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-amigaos
+ ;;
*:[Mm]orph[Oo][Ss]:*:*)
- echo "$UNAME_MACHINE"-unknown-morphos
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-morphos
+ ;;
*:OS/390:*:*)
- echo i370-ibm-openedition
- exit ;;
+ GUESS=i370-ibm-openedition
+ ;;
*:z/VM:*:*)
- echo s390-ibm-zvmoe
- exit ;;
+ GUESS=s390-ibm-zvmoe
+ ;;
*:OS400:*:*)
- echo powerpc-ibm-os400
- exit ;;
+ GUESS=powerpc-ibm-os400
+ ;;
arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
- echo arm-acorn-riscix"$UNAME_RELEASE"
- exit ;;
+ GUESS=arm-acorn-riscix$UNAME_RELEASE
+ ;;
arm*:riscos:*:*|arm*:RISCOS:*:*)
- echo arm-unknown-riscos
- exit ;;
+ GUESS=arm-unknown-riscos
+ ;;
SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
- echo hppa1.1-hitachi-hiuxmpp
- exit ;;
+ GUESS=hppa1.1-hitachi-hiuxmpp
+ ;;
Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
# akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
- if test "`(/bin/universe) 2>/dev/null`" = att ; then
- echo pyramid-pyramid-sysv3
- else
- echo pyramid-pyramid-bsd
- fi
- exit ;;
+ case `(/bin/universe) 2>/dev/null` in
+ att) GUESS=pyramid-pyramid-sysv3 ;;
+ *) GUESS=pyramid-pyramid-bsd ;;
+ esac
+ ;;
NILE*:*:*:dcosx)
- echo pyramid-pyramid-svr4
- exit ;;
+ GUESS=pyramid-pyramid-svr4
+ ;;
DRS?6000:unix:4.0:6*)
- echo sparc-icl-nx6
- exit ;;
+ GUESS=sparc-icl-nx6
+ ;;
DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
case `/usr/bin/uname -p` in
- sparc) echo sparc-icl-nx7; exit ;;
- esac ;;
+ sparc) GUESS=sparc-icl-nx7 ;;
+ esac
+ ;;
s390x:SunOS:*:*)
- echo "$UNAME_MACHINE"-ibm-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`"
- exit ;;
+ SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`
+ GUESS=$UNAME_MACHINE-ibm-solaris2$SUN_REL
+ ;;
sun4H:SunOS:5.*:*)
- echo sparc-hal-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
- exit ;;
+ SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`
+ GUESS=sparc-hal-solaris2$SUN_REL
+ ;;
sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
- echo sparc-sun-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`"
- exit ;;
+ SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`
+ GUESS=sparc-sun-solaris2$SUN_REL
+ ;;
i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
- echo i386-pc-auroraux"$UNAME_RELEASE"
- exit ;;
+ GUESS=i386-pc-auroraux$UNAME_RELEASE
+ ;;
i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
- eval "$set_cc_for_build"
+ 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 test "$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) | \
+ (CCOPTS="" $CC_FOR_BUILD -m64 -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/[^.]*//'`"
- exit ;;
+ SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`
+ GUESS=$SUN_ARCH-pc-solaris2$SUN_REL
+ ;;
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/[^.]*//'`"
- exit ;;
+ SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`
+ GUESS=sparc-sun-solaris3$SUN_REL
+ ;;
sun4*:SunOS:*:*)
- case "`/usr/bin/arch -k`" in
+ case `/usr/bin/arch -k` in
Series*|S4*)
UNAME_RELEASE=`uname -v`
;;
esac
# Japanese Language versions have a version number like `4.1.3-JL'.
- echo sparc-sun-sunos"`echo "$UNAME_RELEASE"|sed -e 's/-/_/'`"
- exit ;;
+ SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/'`
+ GUESS=sparc-sun-sunos$SUN_REL
+ ;;
sun3*:SunOS:*:*)
- echo m68k-sun-sunos"$UNAME_RELEASE"
- exit ;;
+ GUESS=m68k-sun-sunos$UNAME_RELEASE
+ ;;
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
- case "`/bin/arch`" in
+ case `/bin/arch` in
sun3)
- echo m68k-sun-sunos"$UNAME_RELEASE"
+ GUESS=m68k-sun-sunos$UNAME_RELEASE
;;
sun4)
- echo sparc-sun-sunos"$UNAME_RELEASE"
+ GUESS=sparc-sun-sunos$UNAME_RELEASE
;;
esac
- exit ;;
+ ;;
aushp:SunOS:*:*)
- echo sparc-auspex-sunos"$UNAME_RELEASE"
- exit ;;
+ GUESS=sparc-auspex-sunos$UNAME_RELEASE
+ ;;
# The situation for MiNT is a little confusing. The machine name
# can be virtually everything (everything which is not
# "atarist" or "atariste" at least should have a processor
# 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"
- exit ;;
+ GUESS=m68k-atari-mint$UNAME_RELEASE
+ ;;
atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
- echo m68k-atari-mint"$UNAME_RELEASE"
- exit ;;
+ GUESS=m68k-atari-mint$UNAME_RELEASE
+ ;;
*falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
- echo m68k-atari-mint"$UNAME_RELEASE"
- exit ;;
+ GUESS=m68k-atari-mint$UNAME_RELEASE
+ ;;
milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
- echo m68k-milan-mint"$UNAME_RELEASE"
- exit ;;
+ GUESS=m68k-milan-mint$UNAME_RELEASE
+ ;;
hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
- echo m68k-hades-mint"$UNAME_RELEASE"
- exit ;;
+ GUESS=m68k-hades-mint$UNAME_RELEASE
+ ;;
*:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
- echo m68k-unknown-mint"$UNAME_RELEASE"
- exit ;;
+ GUESS=m68k-unknown-mint$UNAME_RELEASE
+ ;;
m68k:machten:*:*)
- echo m68k-apple-machten"$UNAME_RELEASE"
- exit ;;
+ GUESS=m68k-apple-machten$UNAME_RELEASE
+ ;;
powerpc:machten:*:*)
- echo powerpc-apple-machten"$UNAME_RELEASE"
- exit ;;
+ GUESS=powerpc-apple-machten$UNAME_RELEASE
+ ;;
RISC*:Mach:*:*)
- echo mips-dec-mach_bsd4.3
- exit ;;
+ GUESS=mips-dec-mach_bsd4.3
+ ;;
RISC*:ULTRIX:*:*)
- echo mips-dec-ultrix"$UNAME_RELEASE"
- exit ;;
+ GUESS=mips-dec-ultrix$UNAME_RELEASE
+ ;;
VAX*:ULTRIX*:*:*)
- echo vax-dec-ultrix"$UNAME_RELEASE"
- exit ;;
+ GUESS=vax-dec-ultrix$UNAME_RELEASE
+ ;;
2020:CLIX:*:* | 2430:CLIX:*:*)
- echo clipper-intergraph-clix"$UNAME_RELEASE"
- exit ;;
+ GUESS=clipper-intergraph-clix$UNAME_RELEASE
+ ;;
mips:*:*:UMIPS | mips:*:*:RISCos)
- eval "$set_cc_for_build"
+ set_cc_for_build
sed 's/^ //' << EOF > "$dummy.c"
#ifdef __cplusplus
#include <stdio.h> /* for printf() prototype */
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"
- exit ;;
+ GUESS=mips-mips-riscos$UNAME_RELEASE
+ ;;
Motorola:PowerMAX_OS:*:*)
- echo powerpc-motorola-powermax
- exit ;;
+ GUESS=powerpc-motorola-powermax
+ ;;
Motorola:*:4.3:PL8-*)
- echo powerpc-harris-powermax
- exit ;;
+ GUESS=powerpc-harris-powermax
+ ;;
Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
- echo powerpc-harris-powermax
- exit ;;
+ GUESS=powerpc-harris-powermax
+ ;;
Night_Hawk:Power_UNIX:*:*)
- echo powerpc-harris-powerunix
- exit ;;
+ GUESS=powerpc-harris-powerunix
+ ;;
m88k:CX/UX:7*:*)
- echo m88k-harris-cxux7
- exit ;;
+ GUESS=m88k-harris-cxux7
+ ;;
m88k:*:4*:R4*)
- echo m88k-motorola-sysv4
- exit ;;
+ GUESS=m88k-motorola-sysv4
+ ;;
m88k:*:3*:R3*)
- echo m88k-motorola-sysv3
- exit ;;
+ GUESS=m88k-motorola-sysv3
+ ;;
AViiON:dgux:*:*)
# DG/UX returns AViiON for all architectures
UNAME_PROCESSOR=`/usr/bin/uname -p`
- if [ "$UNAME_PROCESSOR" = mc88100 ] || [ "$UNAME_PROCESSOR" = mc88110 ]
+ if test "$UNAME_PROCESSOR" = mc88100 || test "$UNAME_PROCESSOR" = mc88110
then
- if [ "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx ] || \
- [ "$TARGET_BINARY_INTERFACE"x = x ]
+ if test "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx || \
+ test "$TARGET_BINARY_INTERFACE"x = x
then
- echo m88k-dg-dgux"$UNAME_RELEASE"
+ GUESS=m88k-dg-dgux$UNAME_RELEASE
else
- echo m88k-dg-dguxbcs"$UNAME_RELEASE"
+ GUESS=m88k-dg-dguxbcs$UNAME_RELEASE
fi
else
- echo i586-dg-dgux"$UNAME_RELEASE"
+ GUESS=i586-dg-dgux$UNAME_RELEASE
fi
- exit ;;
+ ;;
M88*:DolphinOS:*:*) # DolphinOS (SVR3)
- echo m88k-dolphin-sysv3
- exit ;;
+ GUESS=m88k-dolphin-sysv3
+ ;;
M88*:*:R3*:*)
# Delta 88k system running SVR3
- echo m88k-motorola-sysv3
- exit ;;
+ GUESS=m88k-motorola-sysv3
+ ;;
XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
- echo m88k-tektronix-sysv3
- exit ;;
+ GUESS=m88k-tektronix-sysv3
+ ;;
Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
- echo m68k-tektronix-bsd
- exit ;;
+ GUESS=m68k-tektronix-bsd
+ ;;
*:IRIX*:*:*)
- echo mips-sgi-irix"`echo "$UNAME_RELEASE"|sed -e 's/-/_/g'`"
- exit ;;
+ IRIX_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/g'`
+ GUESS=mips-sgi-irix$IRIX_REL
+ ;;
????????: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
- exit ;; # Note that: echo "'`uname -s`'" gives 'AIX '
+ GUESS=romp-ibm-aix # uname -m gives an 8 hex-code CPU id
+ ;; # Note that: echo "'`uname -s`'" gives 'AIX '
i*86:AIX:*:*)
- echo i386-ibm-aix
- exit ;;
+ GUESS=i386-ibm-aix
+ ;;
ia64:AIX:*:*)
- if [ -x /usr/bin/oslevel ] ; then
+ if test -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"
- exit ;;
+ GUESS=$UNAME_MACHINE-ibm-aix$IBM_REV
+ ;;
*:AIX:2:3)
if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
- eval "$set_cc_for_build"
+ set_cc_for_build
sed 's/^ //' << EOF > "$dummy.c"
#include <sys/systemcfg.h>
EOF
if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"`
then
- echo "$SYSTEM_NAME"
+ GUESS=$SYSTEM_NAME
else
- echo rs6000-ibm-aix3.2.5
+ GUESS=rs6000-ibm-aix3.2.5
fi
elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
- echo rs6000-ibm-aix3.2.4
+ GUESS=rs6000-ibm-aix3.2.4
else
- echo rs6000-ibm-aix3.2
+ GUESS=rs6000-ibm-aix3.2
fi
- 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
else
IBM_ARCH=powerpc
fi
- if [ -x /usr/bin/lslpp ] ; then
- IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc |
+ if test -x /usr/bin/lslpp ; then
+ 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"
- exit ;;
+ GUESS=$IBM_ARCH-ibm-aix$IBM_REV
+ ;;
*:AIX:*:*)
- echo rs6000-ibm-aix
- exit ;;
+ GUESS=rs6000-ibm-aix
+ ;;
ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*)
- echo romp-ibm-bsd4.4
- exit ;;
+ GUESS=romp-ibm-bsd4.4
+ ;;
ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and
- echo romp-ibm-bsd"$UNAME_RELEASE" # 4.3 with uname added to
- exit ;; # report: romp-ibm BSD 4.3
+ GUESS=romp-ibm-bsd$UNAME_RELEASE # 4.3 with uname added to
+ ;; # report: romp-ibm BSD 4.3
*:BOSX:*:*)
- echo rs6000-bull-bosx
- exit ;;
+ GUESS=rs6000-bull-bosx
+ ;;
DPX/2?00:B.O.S.:*:*)
- echo m68k-bull-sysv3
- exit ;;
+ GUESS=m68k-bull-sysv3
+ ;;
9000/[34]??:4.3bsd:1.*:*)
- echo m68k-hp-bsd
- exit ;;
+ GUESS=m68k-hp-bsd
+ ;;
hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
- echo m68k-hp-bsd4.4
- exit ;;
+ GUESS=m68k-hp-bsd4.4
+ ;;
9000/[34678]??:HP-UX:*:*)
- HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'`
- case "$UNAME_MACHINE" in
+ 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
+ if test -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"
+ if test "$HP_ARCH" = ""; then
+ set_cc_for_build
sed 's/^ //' << EOF > "$dummy.c"
#define _HPUX_SOURCE
test -z "$HP_ARCH" && HP_ARCH=hppa
fi ;;
esac
- if [ "$HP_ARCH" = hppa2.0w ]
+ if test "$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
HP_ARCH=hppa64
fi
fi
- echo "$HP_ARCH"-hp-hpux"$HPUX_REV"
- exit ;;
+ GUESS=$HP_ARCH-hp-hpux$HPUX_REV
+ ;;
ia64:HP-UX:*:*)
- HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'`
- echo ia64-hp-hpux"$HPUX_REV"
- exit ;;
+ HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'`
+ GUESS=ia64-hp-hpux$HPUX_REV
+ ;;
3050*:HI-UX:*:*)
- eval "$set_cc_for_build"
+ set_cc_for_build
sed 's/^ //' << EOF > "$dummy.c"
#include <unistd.h>
int
EOF
$CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` &&
{ echo "$SYSTEM_NAME"; exit; }
- echo unknown-hitachi-hiuxwe2
- exit ;;
+ GUESS=unknown-hitachi-hiuxwe2
+ ;;
9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*)
- echo hppa1.1-hp-bsd
- exit ;;
+ GUESS=hppa1.1-hp-bsd
+ ;;
9000/8??:4.3bsd:*:*)
- echo hppa1.0-hp-bsd
- exit ;;
+ GUESS=hppa1.0-hp-bsd
+ ;;
*9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
- echo hppa1.0-hp-mpeix
- exit ;;
+ GUESS=hppa1.0-hp-mpeix
+ ;;
hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*)
- echo hppa1.1-hp-osf
- exit ;;
+ GUESS=hppa1.1-hp-osf
+ ;;
hp8??:OSF1:*:*)
- echo hppa1.0-hp-osf
- exit ;;
+ GUESS=hppa1.0-hp-osf
+ ;;
i*86:OSF1:*:*)
- if [ -x /usr/sbin/sysversion ] ; then
- echo "$UNAME_MACHINE"-unknown-osf1mk
+ if test -x /usr/sbin/sysversion ; then
+ GUESS=$UNAME_MACHINE-unknown-osf1mk
else
- echo "$UNAME_MACHINE"-unknown-osf1
+ GUESS=$UNAME_MACHINE-unknown-osf1
fi
- exit ;;
+ ;;
parisc*:Lites*:*:*)
- echo hppa1.1-hp-lites
- exit ;;
+ GUESS=hppa1.1-hp-lites
+ ;;
C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
- echo c1-convex-bsd
- exit ;;
+ GUESS=c1-convex-bsd
+ ;;
C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
if getsysinfo -f scalar_acc
then echo c32-convex-bsd
fi
exit ;;
C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
- echo c34-convex-bsd
- exit ;;
+ GUESS=c34-convex-bsd
+ ;;
C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
- echo c38-convex-bsd
- exit ;;
+ GUESS=c38-convex-bsd
+ ;;
C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
- echo c4-convex-bsd
- exit ;;
+ GUESS=c4-convex-bsd
+ ;;
CRAY*Y-MP:*:*:*)
- echo ymp-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
- exit ;;
+ CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'`
+ GUESS=ymp-cray-unicos$CRAY_REL
+ ;;
CRAY*[A-Z]90:*:*:*)
echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \
| sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
-e 's/\.[^.]*$/.X/'
exit ;;
CRAY*TS:*:*:*)
- echo t90-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
- exit ;;
+ CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'`
+ GUESS=t90-cray-unicos$CRAY_REL
+ ;;
CRAY*T3E:*:*:*)
- echo alphaev5-cray-unicosmk"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
- exit ;;
+ CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'`
+ GUESS=alphaev5-cray-unicosmk$CRAY_REL
+ ;;
CRAY*SV1:*:*:*)
- echo sv1-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
- exit ;;
+ CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'`
+ GUESS=sv1-cray-unicos$CRAY_REL
+ ;;
*:UNICOS/mp:*:*)
- echo craynv-cray-unicosmp"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
- exit ;;
+ CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'`
+ GUESS=craynv-cray-unicosmp$CRAY_REL
+ ;;
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/ /_/'`
- echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
- exit ;;
+ GUESS=${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}
+ ;;
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/ /_/'`
- echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
- exit ;;
+ GUESS=sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}
+ ;;
i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
- echo "$UNAME_MACHINE"-pc-bsdi"$UNAME_RELEASE"
- exit ;;
+ GUESS=$UNAME_MACHINE-pc-bsdi$UNAME_RELEASE
+ ;;
sparc*:BSD/OS:*:*)
- echo sparc-unknown-bsdi"$UNAME_RELEASE"
- exit ;;
+ GUESS=sparc-unknown-bsdi$UNAME_RELEASE
+ ;;
*:BSD/OS:*:*)
- echo "$UNAME_MACHINE"-unknown-bsdi"$UNAME_RELEASE"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-bsdi$UNAME_RELEASE
+ ;;
+ 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
+ FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'`
+ GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabi
+ else
+ FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'`
+ GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabihf
+ fi
+ ;;
*: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/[-(].*//'`"
- exit ;;
+ FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'`
+ GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL
+ ;;
i*:CYGWIN*:*)
- echo "$UNAME_MACHINE"-pc-cygwin
- exit ;;
+ GUESS=$UNAME_MACHINE-pc-cygwin
+ ;;
*:MINGW64*:*)
- echo "$UNAME_MACHINE"-pc-mingw64
- exit ;;
+ GUESS=$UNAME_MACHINE-pc-mingw64
+ ;;
*:MINGW*:*)
- echo "$UNAME_MACHINE"-pc-mingw32
- exit ;;
+ GUESS=$UNAME_MACHINE-pc-mingw32
+ ;;
*:MSYS*:*)
- echo "$UNAME_MACHINE"-pc-msys
- exit ;;
+ GUESS=$UNAME_MACHINE-pc-msys
+ ;;
i*:PW*:*)
- echo "$UNAME_MACHINE"-pc-pw32
- exit ;;
+ GUESS=$UNAME_MACHINE-pc-pw32
+ ;;
+ *:SerenityOS:*:*)
+ GUESS=$UNAME_MACHINE-pc-serenity
+ ;;
*:Interix*:*)
- case "$UNAME_MACHINE" in
+ case $UNAME_MACHINE in
x86)
- echo i586-pc-interix"$UNAME_RELEASE"
- exit ;;
+ GUESS=i586-pc-interix$UNAME_RELEASE
+ ;;
authenticamd | genuineintel | EM64T)
- echo x86_64-unknown-interix"$UNAME_RELEASE"
- exit ;;
+ GUESS=x86_64-unknown-interix$UNAME_RELEASE
+ ;;
IA64)
- echo ia64-unknown-interix"$UNAME_RELEASE"
- exit ;;
+ GUESS=ia64-unknown-interix$UNAME_RELEASE
+ ;;
esac ;;
i*:UWIN*:*)
- echo "$UNAME_MACHINE"-pc-uwin
- exit ;;
+ GUESS=$UNAME_MACHINE-pc-uwin
+ ;;
amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
- echo x86_64-unknown-cygwin
- exit ;;
+ GUESS=x86_64-pc-cygwin
+ ;;
prep*:SunOS:5.*:*)
- echo powerpcle-unknown-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
- exit ;;
+ SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`
+ GUESS=powerpcle-unknown-solaris2$SUN_REL
+ ;;
*:GNU:*:*)
# the GNU system
- echo "`echo "$UNAME_MACHINE"|sed -e 's,[-/].*$,,'`-unknown-$LIBC`echo "$UNAME_RELEASE"|sed -e 's,/.*$,,'`"
- exit ;;
+ GNU_ARCH=`echo "$UNAME_MACHINE" | sed -e 's,[-/].*$,,'`
+ GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's,/.*$,,'`
+ GUESS=$GNU_ARCH-unknown-$LIBC$GNU_REL
+ ;;
*: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"
- exit ;;
- i*86:Minix:*:*)
- echo "$UNAME_MACHINE"-pc-minix
- exit ;;
+ GNU_SYS=`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"`
+ GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'`
+ GUESS=$UNAME_MACHINE-unknown-$GNU_SYS$GNU_REL-$LIBC
+ ;;
+ *:Minix:*:*)
+ GUESS=$UNAME_MACHINE-unknown-minix
+ ;;
aarch64:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
aarch64_be:Linux:*:*)
UNAME_MACHINE=aarch64_be
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
alpha:Linux:*:*)
- case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
+ case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null` in
EV5) UNAME_MACHINE=alphaev5 ;;
EV56) UNAME_MACHINE=alphaev56 ;;
PCA56) UNAME_MACHINE=alphapca56 ;;
esac
objdump --private-headers /bin/sh | grep -q ld.so.1
if test "$?" = 0 ; then LIBC=gnulibc1 ; fi
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
- arc:Linux:*:* | arceb:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
+ arc:Linux:*:* | arceb:Linux:*:* | arc32:Linux:*:* | arc64:Linux:*:*)
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
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"
+ GUESS=$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
+ GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabi
else
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabihf
+ GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabihf
fi
fi
- exit ;;
+ ;;
avr32*:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
cris:Linux:*:*)
- echo "$UNAME_MACHINE"-axis-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-axis-linux-$LIBC
+ ;;
crisv32:Linux:*:*)
- echo "$UNAME_MACHINE"-axis-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-axis-linux-$LIBC
+ ;;
e2k:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
frv:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
hexagon:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
i*86:Linux:*:*)
- echo "$UNAME_MACHINE"-pc-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-pc-linux-$LIBC
+ ;;
ia64:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
k1om:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
+ loongarch32:Linux:*:* | loongarch64:Linux:*:* | loongarchx32:Linux:*:*)
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
m32r*:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
m68*:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
mips:Linux:*:* | mips64:Linux:*:*)
- eval "$set_cc_for_build"
+ set_cc_for_build
+ IS_GLIBC=0
+ test x"${LIBC}" = xgnu && IS_GLIBC=1
sed 's/^ //' << EOF > "$dummy.c"
#undef CPU
- #undef ${UNAME_MACHINE}
- #undef ${UNAME_MACHINE}el
+ #undef mips
+ #undef mipsel
+ #undef mips64
+ #undef mips64el
+ #if ${IS_GLIBC} && defined(_ABI64)
+ LIBCABI=gnuabi64
+ #else
+ #if ${IS_GLIBC} && defined(_ABIN32)
+ LIBCABI=gnuabin32
+ #else
+ LIBCABI=${LIBC}
+ #endif
+ #endif
+
+ #if ${IS_GLIBC} && defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6
+ CPU=mipsisa64r6
+ #else
+ #if ${IS_GLIBC} && !defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6
+ CPU=mipsisa32r6
+ #else
+ #if defined(__mips64)
+ CPU=mips64
+ #else
+ CPU=mips
+ #endif
+ #endif
+ #endif
+
#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
- CPU=${UNAME_MACHINE}el
+ MIPS_ENDIAN=el
#else
#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
- CPU=${UNAME_MACHINE}
+ MIPS_ENDIAN=
#else
- CPU=
+ MIPS_ENDIAN=
#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; }
+ cc_set_vars=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI'`
+ eval "$cc_set_vars"
+ test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; }
;;
mips64el:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
openrisc*:Linux:*:*)
- echo or1k-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=or1k-unknown-linux-$LIBC
+ ;;
or32:Linux:*:* | or1k*:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
padre:Linux:*:*)
- echo sparc-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=sparc-unknown-linux-$LIBC
+ ;;
parisc64:Linux:*:* | hppa64:Linux:*:*)
- echo hppa64-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=hppa64-unknown-linux-$LIBC
+ ;;
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*) GUESS=hppa1.1-unknown-linux-$LIBC ;;
+ PA8*) GUESS=hppa2.0-unknown-linux-$LIBC ;;
+ *) GUESS=hppa-unknown-linux-$LIBC ;;
esac
- exit ;;
+ ;;
ppc64:Linux:*:*)
- echo powerpc64-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=powerpc64-unknown-linux-$LIBC
+ ;;
ppc:Linux:*:*)
- echo powerpc-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=powerpc-unknown-linux-$LIBC
+ ;;
ppc64le:Linux:*:*)
- echo powerpc64le-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=powerpc64le-unknown-linux-$LIBC
+ ;;
ppcle:Linux:*:*)
- echo powerpcle-unknown-linux-"$LIBC"
- exit ;;
- riscv32:Linux:*:* | riscv64:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=powerpcle-unknown-linux-$LIBC
+ ;;
+ riscv32:Linux:*:* | riscv32be:Linux:*:* | riscv64:Linux:*:* | riscv64be:Linux:*:*)
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
s390:Linux:*:* | s390x:Linux:*:*)
- echo "$UNAME_MACHINE"-ibm-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-ibm-linux-$LIBC
+ ;;
sh64*:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
sh*:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
sparc:Linux:*:* | sparc64:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
tile*:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
vax:Linux:*:*)
- echo "$UNAME_MACHINE"-dec-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-dec-linux-$LIBC
+ ;;
x86_64:Linux:*:*)
- if objdump -f /bin/sh | grep -q elf32-x86-64; then
- echo "$UNAME_MACHINE"-pc-linux-"$LIBC"x32
- else
- echo "$UNAME_MACHINE"-pc-linux-"$LIBC"
+ set_cc_for_build
+ LIBCABI=$LIBC
+ if test "$CC_FOR_BUILD" != no_compiler_found; then
+ if (echo '#ifdef __ILP32__'; echo IS_X32; echo '#endif') | \
+ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
+ grep IS_X32 >/dev/null
+ then
+ LIBCABI=${LIBC}x32
+ fi
fi
- exit ;;
+ GUESS=$UNAME_MACHINE-pc-linux-$LIBCABI
+ ;;
xtensa*:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
i*86:DYNIX/ptx:4*:*)
# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
# earlier versions are messed up and put the nodename in both
# sysname and nodename.
- echo i386-sequent-sysv4
- exit ;;
+ GUESS=i386-sequent-sysv4
+ ;;
i*86:UNIX_SV:4.2MP:2.*)
# Unixware is an offshoot of SVR4, but it has its own version
# number series starting with 2...
# 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"
- exit ;;
+ GUESS=$UNAME_MACHINE-pc-sysv4.2uw$UNAME_VERSION
+ ;;
i*86:OS/2:*:*)
# If we were able to find `uname', then EMX Unix compatibility
# is probably installed.
- echo "$UNAME_MACHINE"-pc-os2-emx
- exit ;;
+ GUESS=$UNAME_MACHINE-pc-os2-emx
+ ;;
i*86:XTS-300:*:STOP)
- echo "$UNAME_MACHINE"-unknown-stop
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-stop
+ ;;
i*86:atheos:*:*)
- echo "$UNAME_MACHINE"-unknown-atheos
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-atheos
+ ;;
i*86:syllable:*:*)
- echo "$UNAME_MACHINE"-pc-syllable
- exit ;;
+ GUESS=$UNAME_MACHINE-pc-syllable
+ ;;
i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
- echo i386-unknown-lynxos"$UNAME_RELEASE"
- exit ;;
+ GUESS=i386-unknown-lynxos$UNAME_RELEASE
+ ;;
i*86:*DOS:*:*)
- echo "$UNAME_MACHINE"-pc-msdosdjgpp
- exit ;;
+ GUESS=$UNAME_MACHINE-pc-msdosdjgpp
+ ;;
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"
+ GUESS=$UNAME_MACHINE-univel-sysv$UNAME_REL
else
- echo "$UNAME_MACHINE"-pc-sysv"$UNAME_REL"
+ GUESS=$UNAME_MACHINE-pc-sysv$UNAME_REL
fi
- exit ;;
+ ;;
i*86:*:5:[678]*)
# UnixWare 7.x, OpenUNIX and OpenServer 6.
case `/bin/uname -X | grep "^Machine"` in
*Pentium) UNAME_MACHINE=i586 ;;
*Pent*|*Celeron) UNAME_MACHINE=i686 ;;
esac
- echo "$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}{$UNAME_VERSION}"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
+ ;;
i*86:*:3.2:*)
if test -f /usr/options/cb.name; then
UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
- echo "$UNAME_MACHINE"-pc-isc"$UNAME_REL"
+ GUESS=$UNAME_MACHINE-pc-isc$UNAME_REL
elif /bin/uname -X 2>/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
&& UNAME_MACHINE=i686
(/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
&& UNAME_MACHINE=i686
- echo "$UNAME_MACHINE"-pc-sco"$UNAME_REL"
+ GUESS=$UNAME_MACHINE-pc-sco$UNAME_REL
else
- echo "$UNAME_MACHINE"-pc-sysv32
+ GUESS=$UNAME_MACHINE-pc-sysv32
fi
- exit ;;
+ ;;
pc:*:*:*)
# Left here for compatibility:
# uname -m prints for DJGPP always 'pc', but it prints nothing about
# Note: whatever this is, it MUST be the same as what config.sub
# prints for the "djgpp" host, or else GDB configure will decide that
# this is a cross-build.
- echo i586-pc-msdosdjgpp
- exit ;;
+ GUESS=i586-pc-msdosdjgpp
+ ;;
Intel:Mach:3*:*)
- echo i386-pc-mach3
- exit ;;
+ GUESS=i386-pc-mach3
+ ;;
paragon:*:*:*)
- echo i860-intel-osf1
- exit ;;
+ GUESS=i860-intel-osf1
+ ;;
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
+ GUESS=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
+ GUESS=i860-unknown-sysv$UNAME_RELEASE # Unknown i860-SVR4
fi
- exit ;;
+ ;;
mini*:CTIX:SYS*5:*)
# "miniframe"
- echo m68010-convergent-sysv
- exit ;;
+ GUESS=m68010-convergent-sysv
+ ;;
mc68k:UNIX:SYSTEM5:3.51m)
- echo m68k-convergent-sysv
- exit ;;
+ GUESS=m68k-convergent-sysv
+ ;;
M680?0:D-NIX:5.3:*)
- echo m68k-diab-dnix
- exit ;;
+ GUESS=m68k-diab-dnix
+ ;;
M68*:*:R3V[5678]*:*)
test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
/bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
&& { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;;
m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
- echo m68k-unknown-lynxos"$UNAME_RELEASE"
- exit ;;
+ GUESS=m68k-unknown-lynxos$UNAME_RELEASE
+ ;;
mc68030:UNIX_System_V:4.*:*)
- echo m68k-atari-sysv4
- exit ;;
+ GUESS=m68k-atari-sysv4
+ ;;
TSUNAMI:LynxOS:2.*:*)
- echo sparc-unknown-lynxos"$UNAME_RELEASE"
- exit ;;
+ GUESS=sparc-unknown-lynxos$UNAME_RELEASE
+ ;;
rs6000:LynxOS:2.*:*)
- echo rs6000-unknown-lynxos"$UNAME_RELEASE"
- exit ;;
+ GUESS=rs6000-unknown-lynxos$UNAME_RELEASE
+ ;;
PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
- echo powerpc-unknown-lynxos"$UNAME_RELEASE"
- exit ;;
+ GUESS=powerpc-unknown-lynxos$UNAME_RELEASE
+ ;;
SM[BE]S:UNIX_SV:*:*)
- echo mips-dde-sysv"$UNAME_RELEASE"
- exit ;;
+ GUESS=mips-dde-sysv$UNAME_RELEASE
+ ;;
RM*:ReliantUNIX-*:*:*)
- echo mips-sni-sysv4
- exit ;;
+ GUESS=mips-sni-sysv4
+ ;;
RM*:SINIX-*:*:*)
- echo mips-sni-sysv4
- exit ;;
+ GUESS=mips-sni-sysv4
+ ;;
*:SINIX-*:*:*)
if uname -p 2>/dev/null >/dev/null ; then
UNAME_MACHINE=`(uname -p) 2>/dev/null`
- echo "$UNAME_MACHINE"-sni-sysv4
+ GUESS=$UNAME_MACHINE-sni-sysv4
else
- echo ns32k-sni-sysv
+ GUESS=ns32k-sni-sysv
fi
- exit ;;
+ ;;
PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
# says <Richard.M.Bartel@ccMail.Census.GOV>
- echo i586-unisys-sysv4
- exit ;;
+ GUESS=i586-unisys-sysv4
+ ;;
*:UNIX_System_V:4*:FTX*)
# From Gerald Hewes <hewes@openmarket.com>.
# How about differentiating between stratus architectures? -djm
- echo hppa1.1-stratus-sysv4
- exit ;;
+ GUESS=hppa1.1-stratus-sysv4
+ ;;
*:*:*:FTX*)
# From seanf@swdc.stratus.com.
- echo i860-stratus-sysv4
- exit ;;
+ GUESS=i860-stratus-sysv4
+ ;;
i*86:VOS:*:*)
# From Paul.Green@stratus.com.
- echo "$UNAME_MACHINE"-stratus-vos
- exit ;;
+ GUESS=$UNAME_MACHINE-stratus-vos
+ ;;
*:VOS:*:*)
# From Paul.Green@stratus.com.
- echo hppa1.1-stratus-vos
- exit ;;
+ GUESS=hppa1.1-stratus-vos
+ ;;
mc68*:A/UX:*:*)
- echo m68k-apple-aux"$UNAME_RELEASE"
- exit ;;
+ GUESS=m68k-apple-aux$UNAME_RELEASE
+ ;;
news*:NEWS-OS:6*:*)
- echo mips-sony-newsos6
- exit ;;
+ GUESS=mips-sony-newsos6
+ ;;
R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
- if [ -d /usr/nec ]; then
- echo mips-nec-sysv"$UNAME_RELEASE"
+ if test -d /usr/nec; then
+ GUESS=mips-nec-sysv$UNAME_RELEASE
else
- echo mips-unknown-sysv"$UNAME_RELEASE"
+ GUESS=mips-unknown-sysv$UNAME_RELEASE
fi
- exit ;;
+ ;;
BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
- echo powerpc-be-beos
- exit ;;
+ GUESS=powerpc-be-beos
+ ;;
BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only.
- echo powerpc-apple-beos
- exit ;;
+ GUESS=powerpc-apple-beos
+ ;;
BePC:BeOS:*:*) # BeOS running on Intel PC compatible.
- echo i586-pc-beos
- exit ;;
+ GUESS=i586-pc-beos
+ ;;
BePC:Haiku:*:*) # Haiku running on Intel PC compatible.
- echo i586-pc-haiku
- exit ;;
+ GUESS=i586-pc-haiku
+ ;;
x86_64:Haiku:*:*)
- echo x86_64-unknown-haiku
- exit ;;
+ GUESS=x86_64-unknown-haiku
+ ;;
SX-4:SUPER-UX:*:*)
- echo sx4-nec-superux"$UNAME_RELEASE"
- exit ;;
+ GUESS=sx4-nec-superux$UNAME_RELEASE
+ ;;
SX-5:SUPER-UX:*:*)
- echo sx5-nec-superux"$UNAME_RELEASE"
- exit ;;
+ GUESS=sx5-nec-superux$UNAME_RELEASE
+ ;;
SX-6:SUPER-UX:*:*)
- echo sx6-nec-superux"$UNAME_RELEASE"
- exit ;;
+ GUESS=sx6-nec-superux$UNAME_RELEASE
+ ;;
SX-7:SUPER-UX:*:*)
- echo sx7-nec-superux"$UNAME_RELEASE"
- exit ;;
+ GUESS=sx7-nec-superux$UNAME_RELEASE
+ ;;
SX-8:SUPER-UX:*:*)
- echo sx8-nec-superux"$UNAME_RELEASE"
- exit ;;
+ GUESS=sx8-nec-superux$UNAME_RELEASE
+ ;;
SX-8R:SUPER-UX:*:*)
- echo sx8r-nec-superux"$UNAME_RELEASE"
- exit ;;
+ GUESS=sx8r-nec-superux$UNAME_RELEASE
+ ;;
SX-ACE:SUPER-UX:*:*)
- echo sxace-nec-superux"$UNAME_RELEASE"
- exit ;;
+ GUESS=sxace-nec-superux$UNAME_RELEASE
+ ;;
Power*:Rhapsody:*:*)
- echo powerpc-apple-rhapsody"$UNAME_RELEASE"
- exit ;;
+ GUESS=powerpc-apple-rhapsody$UNAME_RELEASE
+ ;;
*:Rhapsody:*:*)
- echo "$UNAME_MACHINE"-apple-rhapsody"$UNAME_RELEASE"
- exit ;;
+ GUESS=$UNAME_MACHINE-apple-rhapsody$UNAME_RELEASE
+ ;;
+ arm64:Darwin:*:*)
+ GUESS=aarch64-apple-darwin$UNAME_RELEASE
+ ;;
*:Darwin:*:*)
- UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
- eval "$set_cc_for_build"
- if test "$UNAME_PROCESSOR" = unknown ; then
- UNAME_PROCESSOR=powerpc
+ UNAME_PROCESSOR=`uname -p`
+ case $UNAME_PROCESSOR in
+ unknown) UNAME_PROCESSOR=powerpc ;;
+ esac
+ if command -v xcode-select > /dev/null 2> /dev/null && \
+ ! xcode-select --print-path > /dev/null 2> /dev/null ; then
+ # Avoid executing cc if there is no toolchain installed as
+ # cc will be a stub that puts up a graphical alert
+ # prompting the user to install developer tools.
+ CC_FOR_BUILD=no_compiler_found
+ else
+ set_cc_for_build
fi
- if test "`echo "$UNAME_RELEASE" | sed -e 's/\..*//'`" -le 10 ; then
- if [ "$CC_FOR_BUILD" != no_compiler_found ]; then
- if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
- (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
- grep IS_64BIT_ARCH >/dev/null
- then
- case $UNAME_PROCESSOR in
- i386) UNAME_PROCESSOR=x86_64 ;;
- powerpc) UNAME_PROCESSOR=powerpc64 ;;
- esac
- fi
- # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc
- if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \
- (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
- grep IS_PPC >/dev/null
- then
- UNAME_PROCESSOR=powerpc
- fi
+ if test "$CC_FOR_BUILD" != no_compiler_found; then
+ if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
+ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
+ grep IS_64BIT_ARCH >/dev/null
+ then
+ case $UNAME_PROCESSOR in
+ i386) UNAME_PROCESSOR=x86_64 ;;
+ powerpc) UNAME_PROCESSOR=powerpc64 ;;
+ esac
+ fi
+ # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc
+ if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \
+ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
+ grep IS_PPC >/dev/null
+ then
+ UNAME_PROCESSOR=powerpc
fi
elif test "$UNAME_PROCESSOR" = i386 ; then
- # Avoid executing cc on OS X 10.9, as it ships with a stub
- # that puts up a graphical alert prompting to install
- # developer tools. Any system running Mac OS X 10.7 or
- # later (Darwin 11 and later) is required to have a 64-bit
- # processor. This is not true of the ARM version of Darwin
- # that Apple uses in portable devices.
- UNAME_PROCESSOR=x86_64
+ # uname -m returns i386 or x86_64
+ UNAME_PROCESSOR=$UNAME_MACHINE
fi
- echo "$UNAME_PROCESSOR"-apple-darwin"$UNAME_RELEASE"
- exit ;;
+ GUESS=$UNAME_PROCESSOR-apple-darwin$UNAME_RELEASE
+ ;;
*:procnto*:*:* | *:QNX:[0123456789]*:*)
UNAME_PROCESSOR=`uname -p`
if test "$UNAME_PROCESSOR" = x86; then
UNAME_PROCESSOR=i386
UNAME_MACHINE=pc
fi
- echo "$UNAME_PROCESSOR"-"$UNAME_MACHINE"-nto-qnx"$UNAME_RELEASE"
- exit ;;
+ GUESS=$UNAME_PROCESSOR-$UNAME_MACHINE-nto-qnx$UNAME_RELEASE
+ ;;
*:QNX:*:4*)
- echo i386-pc-qnx
- exit ;;
+ GUESS=i386-pc-qnx
+ ;;
NEO-*:NONSTOP_KERNEL:*:*)
- echo neo-tandem-nsk"$UNAME_RELEASE"
- exit ;;
+ GUESS=neo-tandem-nsk$UNAME_RELEASE
+ ;;
NSE-*:NONSTOP_KERNEL:*:*)
- echo nse-tandem-nsk"$UNAME_RELEASE"
- exit ;;
+ GUESS=nse-tandem-nsk$UNAME_RELEASE
+ ;;
NSR-*:NONSTOP_KERNEL:*:*)
- echo nsr-tandem-nsk"$UNAME_RELEASE"
- exit ;;
+ GUESS=nsr-tandem-nsk$UNAME_RELEASE
+ ;;
NSV-*:NONSTOP_KERNEL:*:*)
- echo nsv-tandem-nsk"$UNAME_RELEASE"
- exit ;;
+ GUESS=nsv-tandem-nsk$UNAME_RELEASE
+ ;;
NSX-*:NONSTOP_KERNEL:*:*)
- echo nsx-tandem-nsk"$UNAME_RELEASE"
- exit ;;
+ GUESS=nsx-tandem-nsk$UNAME_RELEASE
+ ;;
*:NonStop-UX:*:*)
- echo mips-compaq-nonstopux
- exit ;;
+ GUESS=mips-compaq-nonstopux
+ ;;
BS2000:POSIX*:*:*)
- echo bs2000-siemens-sysv
- exit ;;
+ GUESS=bs2000-siemens-sysv
+ ;;
DS/*:UNIX_System_V:*:*)
- echo "$UNAME_MACHINE"-"$UNAME_SYSTEM"-"$UNAME_RELEASE"
- exit ;;
+ GUESS=$UNAME_MACHINE-$UNAME_SYSTEM-$UNAME_RELEASE
+ ;;
*:Plan9:*:*)
# "uname -m" is not consistent, so use $cputype instead. 386
# is converted to i386 for consistency with other x86
# operating systems.
- if test "$cputype" = 386; then
+ if test "${cputype-}" = 386; then
UNAME_MACHINE=i386
- else
- UNAME_MACHINE="$cputype"
+ elif test "x${cputype-}" != x; then
+ UNAME_MACHINE=$cputype
fi
- echo "$UNAME_MACHINE"-unknown-plan9
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-plan9
+ ;;
*:TOPS-10:*:*)
- echo pdp10-unknown-tops10
- exit ;;
+ GUESS=pdp10-unknown-tops10
+ ;;
*:TENEX:*:*)
- echo pdp10-unknown-tenex
- exit ;;
+ GUESS=pdp10-unknown-tenex
+ ;;
KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
- echo pdp10-dec-tops20
- exit ;;
+ GUESS=pdp10-dec-tops20
+ ;;
XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
- echo pdp10-xkl-tops20
- exit ;;
+ GUESS=pdp10-xkl-tops20
+ ;;
*:TOPS-20:*:*)
- echo pdp10-unknown-tops20
- exit ;;
+ GUESS=pdp10-unknown-tops20
+ ;;
*:ITS:*:*)
- echo pdp10-unknown-its
- exit ;;
+ GUESS=pdp10-unknown-its
+ ;;
SEI:*:*:SEIUX)
- echo mips-sei-seiux"$UNAME_RELEASE"
- exit ;;
+ GUESS=mips-sei-seiux$UNAME_RELEASE
+ ;;
*:DragonFly:*:*)
- echo "$UNAME_MACHINE"-unknown-dragonfly"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`"
- exit ;;
+ DRAGONFLY_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'`
+ GUESS=$UNAME_MACHINE-unknown-dragonfly$DRAGONFLY_REL
+ ;;
*:*VMS:*:*)
UNAME_MACHINE=`(uname -p) 2>/dev/null`
- case "$UNAME_MACHINE" in
- A*) echo alpha-dec-vms ; exit ;;
- I*) echo ia64-dec-vms ; exit ;;
- V*) echo vax-dec-vms ; exit ;;
+ case $UNAME_MACHINE in
+ A*) GUESS=alpha-dec-vms ;;
+ I*) GUESS=ia64-dec-vms ;;
+ V*) GUESS=vax-dec-vms ;;
esac ;;
*:XENIX:*:SysV)
- echo i386-pc-xenix
- exit ;;
+ GUESS=i386-pc-xenix
+ ;;
i*86:skyos:*:*)
- echo "$UNAME_MACHINE"-pc-skyos"`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'`"
- exit ;;
+ SKYOS_REL=`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'`
+ GUESS=$UNAME_MACHINE-pc-skyos$SKYOS_REL
+ ;;
i*86:rdos:*:*)
- echo "$UNAME_MACHINE"-pc-rdos
- exit ;;
- i*86:AROS:*:*)
- echo "$UNAME_MACHINE"-pc-aros
- exit ;;
+ GUESS=$UNAME_MACHINE-pc-rdos
+ ;;
+ i*86:Fiwix:*:*)
+ GUESS=$UNAME_MACHINE-pc-fiwix
+ ;;
+ *:AROS:*:*)
+ GUESS=$UNAME_MACHINE-unknown-aros
+ ;;
x86_64:VMkernel:*:*)
- echo "$UNAME_MACHINE"-unknown-esx
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-esx
+ ;;
amd64:Isilon\ OneFS:*:*)
- echo x86_64-unknown-onefs
- exit ;;
+ GUESS=x86_64-unknown-onefs
+ ;;
+ *:Unleashed:*:*)
+ GUESS=$UNAME_MACHINE-unknown-unleashed$UNAME_RELEASE
+ ;;
esac
+# Do we have a guess based on uname results?
+if test "x$GUESS" != x; then
+ echo "$GUESS"
+ exit
+fi
+
+# No uname command or uname output not recognized.
+set_cc_for_build
+cat > "$dummy.c" <<EOF
+#ifdef _SEQUENT_
+#include <sys/types.h>
+#include <sys/utsname.h>
+#endif
+#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__)
+#if defined (vax) || defined (__vax) || defined (__vax__) || defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__)
+#include <signal.h>
+#if defined(_SIZE_T_) || defined(SIGLOST)
+#include <sys/utsname.h>
+#endif
+#endif
+#endif
+main ()
+{
+#if defined (sony)
+#if defined (MIPSEB)
+ /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed,
+ I don't know.... */
+ printf ("mips-sony-bsd\n"); exit (0);
+#else
+#include <sys/param.h>
+ printf ("m68k-sony-newsos%s\n",
+#ifdef NEWSOS4
+ "4"
+#else
+ ""
+#endif
+ ); exit (0);
+#endif
+#endif
+
+#if defined (NeXT)
+#if !defined (__ARCHITECTURE__)
+#define __ARCHITECTURE__ "m68k"
+#endif
+ int version;
+ version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
+ if (version < 4)
+ printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
+ else
+ printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
+ exit (0);
+#endif
+
+#if defined (MULTIMAX) || defined (n16)
+#if defined (UMAXV)
+ printf ("ns32k-encore-sysv\n"); exit (0);
+#else
+#if defined (CMU)
+ printf ("ns32k-encore-mach\n"); exit (0);
+#else
+ printf ("ns32k-encore-bsd\n"); exit (0);
+#endif
+#endif
+#endif
+
+#if defined (__386BSD__)
+ printf ("i386-pc-bsd\n"); exit (0);
+#endif
+
+#if defined (sequent)
+#if defined (i386)
+ printf ("i386-sequent-dynix\n"); exit (0);
+#endif
+#if defined (ns32000)
+ printf ("ns32k-sequent-dynix\n"); exit (0);
+#endif
+#endif
+
+#if defined (_SEQUENT_)
+ struct utsname un;
+
+ uname(&un);
+ if (strncmp(un.version, "V2", 2) == 0) {
+ printf ("i386-sequent-ptx2\n"); exit (0);
+ }
+ if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
+ printf ("i386-sequent-ptx1\n"); exit (0);
+ }
+ printf ("i386-sequent-ptx\n"); exit (0);
+#endif
+
+#if defined (vax)
+#if !defined (ultrix)
+#include <sys/param.h>
+#if defined (BSD)
+#if BSD == 43
+ printf ("vax-dec-bsd4.3\n"); exit (0);
+#else
+#if BSD == 199006
+ printf ("vax-dec-bsd4.3reno\n"); exit (0);
+#else
+ printf ("vax-dec-bsd\n"); exit (0);
+#endif
+#endif
+#else
+ printf ("vax-dec-bsd\n"); exit (0);
+#endif
+#else
+#if defined(_SIZE_T_) || defined(SIGLOST)
+ struct utsname un;
+ uname (&un);
+ printf ("vax-dec-ultrix%s\n", un.release); exit (0);
+#else
+ printf ("vax-dec-ultrix\n"); exit (0);
+#endif
+#endif
+#endif
+#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__)
+#if defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__)
+#if defined(_SIZE_T_) || defined(SIGLOST)
+ struct utsname *un;
+ uname (&un);
+ printf ("mips-dec-ultrix%s\n", un.release); exit (0);
+#else
+ printf ("mips-dec-ultrix\n"); exit (0);
+#endif
+#endif
+#endif
+
+#if defined (alliant) && defined (i860)
+ printf ("i860-alliant-bsd\n"); exit (0);
+#endif
+
+ exit (1);
+}
+EOF
+
+$CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=`"$dummy"` &&
+ { echo "$SYSTEM_NAME"; exit; }
+
+# Apollos put the system type in the environment.
+test -d /usr/apollo && { echo "$ISP-apollo-$SYSTYPE"; exit; }
+
echo "$0: unable to guess system type" >&2
-case "$UNAME_MACHINE:$UNAME_SYSTEM" in
+case $UNAME_MACHINE:$UNAME_SYSTEM in
mips:Linux | mips64:Linux)
# If we got here on MIPS GNU/Linux, output extra information.
cat >&2 <<EOF
operating system you are using. If your script is old, overwrite *all*
copies of config.guess and config.sub with the latest versions from:
- https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
+ https://git.savannah.gnu.org/cgit/config.git/plain/config.guess
and
- https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
+ https://git.savannah.gnu.org/cgit/config.git/plain/config.sub
+EOF
+
+our_year=`echo $timestamp | sed 's,-.*,,'`
+thisyear=`date +%Y`
+# shellcheck disable=SC2003
+script_age=`expr "$thisyear" - "$our_year"`
+if test "$script_age" -lt 3 ; then
+ cat >&2 <<EOF
If $0 has already been updated, send the following data and any
information you think might be pertinent to config-patches@gnu.org to
UNAME_SYSTEM = "$UNAME_SYSTEM"
UNAME_VERSION = "$UNAME_VERSION"
EOF
+fi
exit 1
# Local variables:
-# eval: (add-hook 'write-file-functions 'time-stamp)
+# eval: (add-hook 'before-save-hook 'time-stamp)
# time-stamp-start: "timestamp='"
# time-stamp-format: "%:y-%02m-%02d"
# time-stamp-end: "'"
#! /bin/sh
# Configuration validation subroutine script.
-# Copyright 1992-2018 Free Software Foundation, Inc.
+# Copyright 1992-2022 Free Software Foundation, Inc.
-timestamp='2018-02-22'
+# shellcheck disable=SC2006,SC2268 # see below for rationale
+
+timestamp='2022-01-03'
# 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
-# the Free Software Foundation; either version 3 of the License, or
+# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# Otherwise, we print the canonical config type on stdout and succeed.
# You can get the latest version of this script from:
-# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
+# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub
# This file is supposed to be the same for all GNU packages
# and recognize all the CPU types, system types and aliases
# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
# It is wrong to echo any other type of specification.
+# The "shellcheck disable" line above the timestamp inhibits complaints
+# about features and limitations of the classic Bourne shell that were
+# superseded or lifted in POSIX. However, this script identifies a wide
+# variety of pre-POSIX systems that do not have POSIX shells at all, and
+# even some reasonably current systems (Solaris 10 as case-in-point) still
+# have a pre-POSIX /bin/sh.
+
me=`echo "$0" | sed -e 's,.*/,,'`
usage="\
version="\
GNU config.sub ($timestamp)
-Copyright 1992-2018 Free Software Foundation, Inc.
+Copyright 1992-2022 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."
- ) # Use stdin as input.
break ;;
-* )
- echo "$me: invalid option $1$help"
+ echo "$me: invalid option $1$help" >&2
exit 1 ;;
*local*)
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
+# shellcheck disable=SC2162
+saved_IFS=$IFS
+IFS="-" read field1 field2 field3 field4 <<EOF
+$1
+EOF
+IFS=$saved_IFS
-### Let's recognize common machines as not being operating systems so
-### that things like config.sub decstation-3100 work. We also
-### recognize some manufacturers as not being operating systems, so we
-### can provide default operating systems below.
-case $os in
- -sun*os*)
- # Prevent following clause from handling this invalid input.
- ;;
- -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
- -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
- -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
- -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
- -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
- -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
- -apple | -axis | -knuth | -cray | -microblaze*)
- os=
- basic_machine=$1
- ;;
- -bluegene*)
- os=-cnk
- ;;
- -sim | -cisco | -oki | -wec | -winbond)
- os=
- basic_machine=$1
- ;;
- -scout)
- ;;
- -wrs)
- os=-vxworks
- basic_machine=$1
- ;;
- -chorusos*)
- os=-chorusos
- basic_machine=$1
- ;;
- -chorusrdb)
- os=-chorusrdb
- basic_machine=$1
- ;;
- -hiux*)
- os=-hiuxwe2
- ;;
- -sco6)
- os=-sco5v6
- basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco5)
- os=-sco3.2v5
- basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco4)
- os=-sco3.2v4
- basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco3.2.[4-9]*)
- os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
- basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco3.2v[4-9]*)
- # Don't forget version if it is 3.2v4 or newer.
- basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco5v6*)
- # Don't forget version if it is 3.2v4 or newer.
- basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco*)
- os=-sco3.2v2
- basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
- ;;
- -udk*)
- basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
- ;;
- -isc)
- os=-isc2.2
- basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
- ;;
- -clix*)
- basic_machine=clipper-intergraph
- ;;
- -isc*)
- basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
- ;;
- -lynx*178)
- os=-lynxos178
- ;;
- -lynx*5)
- os=-lynxos5
+# Separate into logical components for further validation
+case $1 in
+ *-*-*-*-*)
+ echo Invalid configuration \`"$1"\': more than four components >&2
+ exit 1
;;
- -lynx*)
- os=-lynxos
+ *-*-*-*)
+ basic_machine=$field1-$field2
+ basic_os=$field3-$field4
;;
- -ptx*)
- basic_machine=`echo "$1" | sed -e 's/86-.*/86-sequent/'`
+ *-*-*)
+ # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two
+ # parts
+ maybe_os=$field2-$field3
+ case $maybe_os in
+ nto-qnx* | linux-* | 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
+ basic_os=$maybe_os
+ ;;
+ android-linux)
+ basic_machine=$field1-unknown
+ basic_os=linux-android
+ ;;
+ *)
+ basic_machine=$field1-$field2
+ basic_os=$field3
+ ;;
+ esac
;;
- -psos*)
- os=-psos
+ *-*)
+ # A lone config we happen to match not fitting any pattern
+ case $field1-$field2 in
+ decstation-3100)
+ basic_machine=mips-dec
+ basic_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
+ basic_os=$field2
+ ;;
+ zephyr*)
+ basic_machine=$field1-unknown
+ basic_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
+ basic_os=
+ ;;
+ *)
+ basic_machine=$field1
+ basic_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
+ basic_os=bsd
+ ;;
+ a29khif)
+ basic_machine=a29k-amd
+ basic_os=udi
+ ;;
+ adobe68k)
+ basic_machine=m68010-adobe
+ basic_os=scout
+ ;;
+ alliant)
+ basic_machine=fx80-alliant
+ basic_os=
+ ;;
+ altos | altos3068)
+ basic_machine=m68k-altos
+ basic_os=
+ ;;
+ am29k)
+ basic_machine=a29k-none
+ basic_os=bsd
+ ;;
+ amdahl)
+ basic_machine=580-amdahl
+ basic_os=sysv
+ ;;
+ amiga)
+ basic_machine=m68k-unknown
+ basic_os=
+ ;;
+ amigaos | amigados)
+ basic_machine=m68k-unknown
+ basic_os=amigaos
+ ;;
+ amigaunix | amix)
+ basic_machine=m68k-unknown
+ basic_os=sysv4
+ ;;
+ apollo68)
+ basic_machine=m68k-apollo
+ basic_os=sysv
+ ;;
+ apollo68bsd)
+ basic_machine=m68k-apollo
+ basic_os=bsd
+ ;;
+ aros)
+ basic_machine=i386-pc
+ basic_os=aros
+ ;;
+ aux)
+ basic_machine=m68k-apple
+ basic_os=aux
+ ;;
+ balance)
+ basic_machine=ns32k-sequent
+ basic_os=dynix
+ ;;
+ blackfin)
+ basic_machine=bfin-unknown
+ basic_os=linux
+ ;;
+ cegcc)
+ basic_machine=arm-unknown
+ basic_os=cegcc
+ ;;
+ convex-c1)
+ basic_machine=c1-convex
+ basic_os=bsd
+ ;;
+ convex-c2)
+ basic_machine=c2-convex
+ basic_os=bsd
+ ;;
+ convex-c32)
+ basic_machine=c32-convex
+ basic_os=bsd
+ ;;
+ convex-c34)
+ basic_machine=c34-convex
+ basic_os=bsd
+ ;;
+ convex-c38)
+ basic_machine=c38-convex
+ basic_os=bsd
+ ;;
+ cray)
+ basic_machine=j90-cray
+ basic_os=unicos
+ ;;
+ crds | unos)
+ basic_machine=m68k-crds
+ basic_os=
+ ;;
+ da30)
+ basic_machine=m68k-da30
+ basic_os=
+ ;;
+ decstation | pmax | pmin | dec3100 | decstatn)
+ basic_machine=mips-dec
+ basic_os=
+ ;;
+ delta88)
+ basic_machine=m88k-motorola
+ basic_os=sysv3
+ ;;
+ dicos)
+ basic_machine=i686-pc
+ basic_os=dicos
+ ;;
+ djgpp)
+ basic_machine=i586-pc
+ basic_os=msdosdjgpp
+ ;;
+ ebmon29k)
+ basic_machine=a29k-amd
+ basic_os=ebmon
+ ;;
+ es1800 | OSE68k | ose68k | ose | OSE)
+ basic_machine=m68k-ericsson
+ basic_os=ose
+ ;;
+ gmicro)
+ basic_machine=tron-gmicro
+ basic_os=sysv
+ ;;
+ go32)
+ basic_machine=i386-pc
+ basic_os=go32
+ ;;
+ h8300hms)
+ basic_machine=h8300-hitachi
+ basic_os=hms
+ ;;
+ h8300xray)
+ basic_machine=h8300-hitachi
+ basic_os=xray
+ ;;
+ h8500hms)
+ basic_machine=h8500-hitachi
+ basic_os=hms
+ ;;
+ harris)
+ basic_machine=m88k-harris
+ basic_os=sysv3
+ ;;
+ hp300 | hp300hpux)
+ basic_machine=m68k-hp
+ basic_os=hpux
+ ;;
+ hp300bsd)
+ basic_machine=m68k-hp
+ basic_os=bsd
+ ;;
+ hppaosf)
+ basic_machine=hppa1.1-hp
+ basic_os=osf
+ ;;
+ hppro)
+ basic_machine=hppa1.1-hp
+ basic_os=proelf
+ ;;
+ i386mach)
+ basic_machine=i386-mach
+ basic_os=mach
+ ;;
+ isi68 | isi)
+ basic_machine=m68k-isi
+ basic_os=sysv
+ ;;
+ m68knommu)
+ basic_machine=m68k-unknown
+ basic_os=linux
+ ;;
+ magnum | m3230)
+ basic_machine=mips-mips
+ basic_os=sysv
+ ;;
+ merlin)
+ basic_machine=ns32k-utek
+ basic_os=sysv
+ ;;
+ mingw64)
+ basic_machine=x86_64-pc
+ basic_os=mingw64
+ ;;
+ mingw32)
+ basic_machine=i686-pc
+ basic_os=mingw32
+ ;;
+ mingw32ce)
+ basic_machine=arm-unknown
+ basic_os=mingw32ce
+ ;;
+ monitor)
+ basic_machine=m68k-rom68k
+ basic_os=coff
+ ;;
+ morphos)
+ basic_machine=powerpc-unknown
+ basic_os=morphos
+ ;;
+ moxiebox)
+ basic_machine=moxie-unknown
+ basic_os=moxiebox
+ ;;
+ msdos)
+ basic_machine=i386-pc
+ basic_os=msdos
+ ;;
+ msys)
+ basic_machine=i686-pc
+ basic_os=msys
+ ;;
+ mvs)
+ basic_machine=i370-ibm
+ basic_os=mvs
+ ;;
+ nacl)
+ basic_machine=le32-unknown
+ basic_os=nacl
+ ;;
+ ncr3000)
+ basic_machine=i486-ncr
+ basic_os=sysv4
+ ;;
+ netbsd386)
+ basic_machine=i386-pc
+ basic_os=netbsd
+ ;;
+ netwinder)
+ basic_machine=armv4l-rebel
+ basic_os=linux
+ ;;
+ news | news700 | news800 | news900)
+ basic_machine=m68k-sony
+ basic_os=newsos
+ ;;
+ news1000)
+ basic_machine=m68030-sony
+ basic_os=newsos
+ ;;
+ necv70)
+ basic_machine=v70-nec
+ basic_os=sysv
+ ;;
+ nh3000)
+ basic_machine=m68k-harris
+ basic_os=cxux
+ ;;
+ nh[45]000)
+ basic_machine=m88k-harris
+ basic_os=cxux
+ ;;
+ nindy960)
+ basic_machine=i960-intel
+ basic_os=nindy
+ ;;
+ mon960)
+ basic_machine=i960-intel
+ basic_os=mon960
+ ;;
+ nonstopux)
+ basic_machine=mips-compaq
+ basic_os=nonstopux
+ ;;
+ os400)
+ basic_machine=powerpc-ibm
+ basic_os=os400
+ ;;
+ OSE68000 | ose68000)
+ basic_machine=m68000-ericsson
+ basic_os=ose
+ ;;
+ os68k)
+ basic_machine=m68k-none
+ basic_os=os68k
+ ;;
+ paragon)
+ basic_machine=i860-intel
+ basic_os=osf
+ ;;
+ parisc)
+ basic_machine=hppa-unknown
+ basic_os=linux
+ ;;
+ psp)
+ basic_machine=mipsallegrexel-sony
+ basic_os=psp
+ ;;
+ pw32)
+ basic_machine=i586-unknown
+ basic_os=pw32
+ ;;
+ rdos | rdos64)
+ basic_machine=x86_64-pc
+ basic_os=rdos
+ ;;
+ rdos32)
+ basic_machine=i386-pc
+ basic_os=rdos
+ ;;
+ rom68k)
+ basic_machine=m68k-rom68k
+ basic_os=coff
+ ;;
+ sa29200)
+ basic_machine=a29k-amd
+ basic_os=udi
+ ;;
+ sei)
+ basic_machine=mips-sei
+ basic_os=seiux
+ ;;
+ sequent)
+ basic_machine=i386-sequent
+ basic_os=
+ ;;
+ sps7)
+ basic_machine=m68k-bull
+ basic_os=sysv2
+ ;;
+ st2000)
+ basic_machine=m68k-tandem
+ basic_os=
+ ;;
+ stratus)
+ basic_machine=i860-stratus
+ basic_os=sysv4
+ ;;
+ sun2)
+ basic_machine=m68000-sun
+ basic_os=
+ ;;
+ sun2os3)
+ basic_machine=m68000-sun
+ basic_os=sunos3
+ ;;
+ sun2os4)
+ basic_machine=m68000-sun
+ basic_os=sunos4
+ ;;
+ sun3)
+ basic_machine=m68k-sun
+ basic_os=
+ ;;
+ sun3os3)
+ basic_machine=m68k-sun
+ basic_os=sunos3
+ ;;
+ sun3os4)
+ basic_machine=m68k-sun
+ basic_os=sunos4
+ ;;
+ sun4)
+ basic_machine=sparc-sun
+ basic_os=
+ ;;
+ sun4os3)
+ basic_machine=sparc-sun
+ basic_os=sunos3
+ ;;
+ sun4os4)
+ basic_machine=sparc-sun
+ basic_os=sunos4
+ ;;
+ sun4sol2)
+ basic_machine=sparc-sun
+ basic_os=solaris2
+ ;;
+ sun386 | sun386i | roadrunner)
+ basic_machine=i386-sun
+ basic_os=
+ ;;
+ sv1)
+ basic_machine=sv1-cray
+ basic_os=unicos
+ ;;
+ symmetry)
+ basic_machine=i386-sequent
+ basic_os=dynix
+ ;;
+ t3e)
+ basic_machine=alphaev5-cray
+ basic_os=unicos
+ ;;
+ t90)
+ basic_machine=t90-cray
+ basic_os=unicos
+ ;;
+ toad1)
+ basic_machine=pdp10-xkl
+ basic_os=tops20
+ ;;
+ tpf)
+ basic_machine=s390x-ibm
+ basic_os=tpf
+ ;;
+ udi29k)
+ basic_machine=a29k-amd
+ basic_os=udi
+ ;;
+ ultra3)
+ basic_machine=a29k-nyu
+ basic_os=sym1
+ ;;
+ v810 | necv810)
+ basic_machine=v810-nec
+ basic_os=none
+ ;;
+ vaxv)
+ basic_machine=vax-dec
+ basic_os=sysv
+ ;;
+ vms)
+ basic_machine=vax-dec
+ basic_os=vms
+ ;;
+ vsta)
+ basic_machine=i386-pc
+ basic_os=vsta
+ ;;
+ vxworks960)
+ basic_machine=i960-wrs
+ basic_os=vxworks
+ ;;
+ vxworks68)
+ basic_machine=m68k-wrs
+ basic_os=vxworks
+ ;;
+ vxworks29k)
+ basic_machine=a29k-wrs
+ basic_os=vxworks
+ ;;
+ xbox)
+ basic_machine=i686-pc
+ basic_os=mingw32
+ ;;
+ ymp)
+ basic_machine=ymp-cray
+ basic_os=unicos
+ ;;
+ *)
+ basic_machine=$1
+ basic_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 | pj | pjl \
- | powerpc | powerpc64 | powerpc64le | powerpcle \
- | pru \
- | pyramid \
- | riscv32 | riscv64 \
- | rl78 | rx \
- | score \
- | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
- | sh64 | sh64le \
- | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
- | sparcv8 | sparcv9 | sparcv9b | sparcv9v \
- | spu \
- | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
- | ubicom32 \
- | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
- | visium \
- | wasm32 \
- | x86 | xc16x | xstormy16 | xtensa \
- | z8k | z80)
- basic_machine=$basic_machine-unknown
- ;;
- c54x)
- basic_machine=tic54x-unknown
- ;;
- c55x)
- basic_machine=tic55x-unknown
- ;;
- c6x)
- basic_machine=tic6x-unknown
- ;;
- 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)
+ 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-pc
- 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
+ basic_os=cnk
;;
decsystem10* | dec10*)
- basic_machine=pdp10-dec
- os=-tops10
+ cpu=pdp10
+ vendor=dec
+ basic_os=tops10
;;
decsystem20* | dec20*)
- basic_machine=pdp10-dec
- os=-tops20
+ cpu=pdp10
+ vendor=dec
+ basic_os=tops20
;;
delta | 3300 | motorola-3300 | motorola-delta \
| 3300-motorola | delta-motorola)
- basic_machine=m68k-motorola
- ;;
- delta88)
- basic_machine=m88k-motorola
- os=-sysv3
- ;;
- dicos)
- basic_machine=i686-pc
- os=-dicos
- ;;
- djgpp)
- basic_machine=i586-pc
- os=-msdosdjgpp
- ;;
- dpx20 | dpx20-*)
- basic_machine=rs6000-bull
- os=-bosx
+ cpu=m68k
+ vendor=motorola
;;
dpx2*)
- 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
+ cpu=m68k
+ vendor=bull
+ basic_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
+ basic_os=${basic_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
+ basic_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
- ;;
- 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
+ basic_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
+ basic_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
+ basic_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
+ basic_os=solaris2
;;
- vsta)
- basic_machine=i386-unknown
- os=-vsta
+ j90 | j90-cray)
+ cpu=j90
+ vendor=cray
+ basic_os=${basic_os:-unicos}
;;
iris | iris4d)
- basic_machine=mips-sgi
- case $os in
- -irix*)
+ cpu=mips
+ vendor=sgi
+ case $basic_os in
+ irix*)
;;
*)
- os=-irix4
+ basic_os=irix4
;;
esac
;;
- isi68 | isi)
- basic_machine=m68k-isi
- os=-sysv
- ;;
- leon-*|leon[3-9]-*)
- basic_machine=sparc-`echo "$basic_machine" | sed 's/-.*//'`
- ;;
- m68knommu)
- basic_machine=m68k-unknown
- os=-linux
- ;;
- m68knommu-*)
- basic_machine=m68k-`echo "$basic_machine" | sed 's/^[^-]*-//'`
- os=-linux
- ;;
- magnum | m3230)
- basic_machine=mips-mips
- os=-sysv
- ;;
- merlin)
- basic_machine=ns32k-utek
- os=-sysv
- ;;
- microblaze*)
- basic_machine=microblaze-xilinx
- ;;
- mingw64)
- basic_machine=x86_64-pc
- os=-mingw64
- ;;
- mingw32)
- basic_machine=i686-pc
- os=-mingw32
- ;;
- mingw32ce)
- basic_machine=arm-unknown
- os=-mingw32ce
- ;;
miniframe)
- 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
+ cpu=m68000
+ vendor=convergent
;;
- 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
- ;;
- 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
+ basic_os=mint
;;
news-3600 | risc-news)
- basic_machine=mips-sony
- os=-newsos
- ;;
- necv70)
- basic_machine=v70-nec
- os=-sysv
+ cpu=mips
+ vendor=sony
+ basic_os=newsos
;;
next | m*-next)
- basic_machine=m68k-next
- case $os in
- -nextstep* )
+ cpu=m68k
+ vendor=next
+ case $basic_os in
+ openstep*)
+ ;;
+ nextstep*)
;;
- -ns2*)
- os=-nextstep2
+ ns2*)
+ basic_os=nextstep2
;;
*)
- os=-nextstep3
+ basic_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
- ;;
- nsv-tandem)
- basic_machine=nsv-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
+ basic_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
+ basic_os=hiuxwe2
;;
pbd)
- basic_machine=sparc-tti
+ cpu=sparc
+ vendor=tti
;;
pbb)
- basic_machine=m68k-tti
- ;;
- pc532 | pc532-*)
- basic_machine=ns32k-pc532
- ;;
- pc98)
- basic_machine=i386-pc
+ cpu=m68k
+ vendor=tti
;;
- 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
- ;;
- power) basic_machine=power-ibm
- ;;
- ppc | ppcbe) basic_machine=powerpc-unknown
+ cpu=pn
+ vendor=gould
;;
- ppc-* | ppcbe-*)
- basic_machine=powerpc-`echo "$basic_machine" | sed 's/^[^-]*-//'`
- ;;
- ppcle | powerpclittle)
- basic_machine=powerpcle-unknown
+ power)
+ cpu=power
+ vendor=ibm
;;
- ppcle-* | powerpclittle-*)
- basic_machine=powerpcle-`echo "$basic_machine" | sed 's/^[^-]*-//'`
+ ps2)
+ cpu=i386
+ vendor=ibm
;;
- ppc64) basic_machine=powerpc64-unknown
+ rm[46]00)
+ cpu=mips
+ vendor=siemens
;;
- ppc64-*) basic_machine=powerpc64-`echo "$basic_machine" | sed 's/^[^-]*-//'`
+ rtpc | rtpc-*)
+ cpu=romp
+ vendor=ibm
;;
- ppc64le | powerpc64little)
- basic_machine=powerpc64le-unknown
+ sde)
+ cpu=mipsisa32
+ vendor=sde
+ basic_os=${basic_os:-elf}
;;
- ppc64le-* | powerpc64little-*)
- basic_machine=powerpc64le-`echo "$basic_machine" | sed 's/^[^-]*-//'`
+ simso-wrs)
+ cpu=sparclite
+ vendor=wrs
+ basic_os=vxworks
;;
- ps2)
- basic_machine=i386-ibm
+ tower | tower-32)
+ cpu=m68k
+ vendor=ncr
;;
- pw32)
- basic_machine=i586-unknown
- os=-pw32
+ vpp*|vx|vx-*)
+ cpu=f301
+ vendor=fujitsu
;;
- rdos | rdos64)
- basic_machine=x86_64-pc
- os=-rdos
+ w65)
+ cpu=w65
+ vendor=wdc
;;
- rdos32)
- basic_machine=i386-pc
- os=-rdos
+ w89k-*)
+ cpu=hppa1.1
+ vendor=winbond
+ basic_os=proelf
;;
- rom68k)
- basic_machine=m68k-rom68k
- os=-coff
+ none)
+ cpu=none
+ vendor=none
;;
- rm[46]00)
- basic_machine=mips-siemens
+ leon|leon[3-9])
+ cpu=sparc
+ vendor=$basic_machine
;;
- rtpc | rtpc-*)
- basic_machine=romp-ibm
+ leon-*|leon[3-9]-*)
+ cpu=sparc
+ vendor=`echo "$basic_machine" | sed 's/-.*//'`
;;
- s390 | s390-*)
- basic_machine=s390-ibm
+
+ *-*)
+ # shellcheck disable=SC2162
+ saved_IFS=$IFS
+ IFS="-" read cpu vendor <<EOF
+$basic_machine
+EOF
+ IFS=$saved_IFS
;;
- s390x | s390x-*)
- basic_machine=s390x-ibm
+ # We use `pc' rather than `unknown'
+ # because (1) that's what they normally are, and
+ # (2) the word "unknown" tends to confuse beginning users.
+ i*86 | x86_64)
+ cpu=$basic_machine
+ vendor=pc
;;
- sa29200)
- basic_machine=a29k-amd
- os=-udi
+ # These rules are duplicated from below for sake of the special case above;
+ # i.e. things that normalized to x86 arches should also default to "pc"
+ pc98)
+ cpu=i386
+ vendor=pc
;;
- sb1)
- basic_machine=mipsisa64sb1-unknown
+ x64 | amd64)
+ cpu=x86_64
+ vendor=pc
;;
- sb1el)
- basic_machine=mipsisa64sb1el-unknown
+ # Recognize the basic CPU types without company name.
+ *)
+ cpu=$basic_machine
+ vendor=unknown
;;
- sde)
- basic_machine=mipsisa32-sde
- os=-elf
+esac
+
+unset -v basic_machine
+
+# Decode basic machines in the full and proper CPU-Company form.
+case $cpu-$vendor in
+ # Here we handle the default manufacturer of certain CPU types in canonical form. It is in
+ # some cases the only manufacturer, in others, it is the most popular.
+ craynv-unknown)
+ vendor=cray
+ basic_os=${basic_os:-unicosmp}
;;
- sei)
- basic_machine=mips-sei
- os=-seiux
+ c90-unknown | c90-cray)
+ vendor=cray
+ basic_os=${Basic_os:-unicos}
;;
- sequent)
- basic_machine=i386-sequent
+ fx80-unknown)
+ vendor=alliant
;;
- sh5el)
- basic_machine=sh5le-unknown
+ romp-unknown)
+ vendor=ibm
;;
- simso-wrs)
- basic_machine=sparclite-wrs
- os=-vxworks
+ mmix-unknown)
+ vendor=knuth
;;
- sps7)
- basic_machine=m68k-bull
- os=-sysv2
+ microblaze-unknown | microblazeel-unknown)
+ vendor=xilinx
;;
- spur)
- basic_machine=spur-unknown
+ rs6000-unknown)
+ vendor=ibm
;;
- st2000)
- basic_machine=m68k-tandem
+ vax-unknown)
+ vendor=dec
;;
- stratus)
- basic_machine=i860-stratus
- os=-sysv4
+ pdp11-unknown)
+ vendor=dec
;;
- strongarm-* | thumb-*)
- basic_machine=arm-`echo "$basic_machine" | sed 's/^[^-]*-//'`
+ we32k-unknown)
+ vendor=att
;;
- sun2)
- basic_machine=m68000-sun
+ cydra-unknown)
+ vendor=cydrome
;;
- sun2os3)
- basic_machine=m68000-sun
- os=-sunos3
+ i370-ibm*)
+ vendor=ibm
;;
- sun2os4)
- basic_machine=m68000-sun
- os=-sunos4
+ orion-unknown)
+ vendor=highlevel
;;
- sun3os3)
- basic_machine=m68k-sun
- os=-sunos3
+ xps-unknown | xps100-unknown)
+ cpu=xps100
+ vendor=honeywell
;;
- sun3os4)
- basic_machine=m68k-sun
- os=-sunos4
+
+ # Here we normalize CPU types with a missing or matching vendor
+ armh-unknown | armh-alt)
+ cpu=armv7l
+ vendor=alt
+ basic_os=${basic_os:-linux-gnueabihf}
;;
- sun4os3)
- basic_machine=sparc-sun
- os=-sunos3
+ dpx20-unknown | dpx20-bull)
+ cpu=rs6000
+ vendor=bull
+ basic_os=${basic_os:-bosx}
;;
- sun4os4)
- basic_machine=sparc-sun
- os=-sunos4
+
+ # Here we normalize CPU types irrespective of the vendor
+ amd64-*)
+ cpu=x86_64
;;
- sun4sol2)
- basic_machine=sparc-sun
- os=-solaris2
+ blackfin-*)
+ cpu=bfin
+ basic_os=linux
;;
- sun3 | sun3-*)
- basic_machine=m68k-sun
+ c54x-*)
+ cpu=tic54x
;;
- sun4)
- basic_machine=sparc-sun
+ c55x-*)
+ cpu=tic55x
;;
- sun386 | sun386i | roadrunner)
- basic_machine=i386-sun
+ c6x-*)
+ cpu=tic6x
;;
- sv1)
- basic_machine=sv1-cray
- os=-unicos
+ e500v[12]-*)
+ cpu=powerpc
+ basic_os=${basic_os}"spe"
;;
- symmetry)
- basic_machine=i386-sequent
- os=-dynix
+ mips3*-*)
+ cpu=mips64
;;
- t3e)
- basic_machine=alphaev5-cray
- os=-unicos
+ ms1-*)
+ cpu=mt
;;
- t90)
- basic_machine=t90-cray
- os=-unicos
+ m68knommu-*)
+ cpu=m68k
+ basic_os=linux
;;
- tile*)
- basic_machine=$basic_machine-unknown
- os=-linux-gnu
+ m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
+ cpu=s12z
;;
- tx39)
- basic_machine=mipstx39-unknown
+ openrisc-*)
+ cpu=or32
;;
- tx39el)
- basic_machine=mipstx39el-unknown
+ parisc-*)
+ cpu=hppa
+ basic_os=linux
;;
- toad1)
- basic_machine=pdp10-xkl
- os=-tops20
+ pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
+ cpu=i586
;;
- tower | tower-32)
- basic_machine=m68k-ncr
+ pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*)
+ cpu=i686
;;
- tpf)
- basic_machine=s390x-ibm
- os=-tpf
+ pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
+ cpu=i686
;;
- udi29k)
- basic_machine=a29k-amd
- os=-udi
+ pentium4-*)
+ cpu=i786
;;
- ultra3)
- basic_machine=a29k-nyu
- os=-sym1
+ pc98-*)
+ cpu=i386
;;
- v810 | necv810)
- basic_machine=v810-nec
- os=-none
+ ppc-* | ppcbe-*)
+ cpu=powerpc
;;
- vaxv)
- basic_machine=vax-dec
- os=-sysv
+ ppcle-* | powerpclittle-*)
+ cpu=powerpcle
;;
- vms)
- basic_machine=vax-dec
- os=-vms
+ ppc64-*)
+ cpu=powerpc64
;;
- vpp*|vx|vx-*)
- basic_machine=f301-fujitsu
+ ppc64le-* | powerpc64little-*)
+ cpu=powerpc64le
;;
- vxworks960)
- basic_machine=i960-wrs
- os=-vxworks
+ sb1-*)
+ cpu=mipsisa64sb1
;;
- vxworks68)
- basic_machine=m68k-wrs
- os=-vxworks
+ sb1el-*)
+ cpu=mipsisa64sb1el
;;
- vxworks29k)
- basic_machine=a29k-wrs
- os=-vxworks
+ sh5e[lb]-*)
+ cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'`
;;
- w65*)
- basic_machine=w65-wdc
- os=-none
+ spur-*)
+ cpu=spur
;;
- w89k-*)
- basic_machine=hppa1.1-winbond
- os=-proelf
+ strongarm-* | thumb-*)
+ cpu=arm
;;
- x64)
- basic_machine=x86_64-pc
+ tx39-*)
+ cpu=mipstx39
;;
- xbox)
- basic_machine=i686-pc
- os=-mingw32
+ tx39el-*)
+ cpu=mipstx39el
;;
- xps | xps100)
- basic_machine=xps100-honeywell
+ x64-*)
+ cpu=x86_64
;;
xscale-* | xscalee[bl]-*)
- basic_machine=`echo "$basic_machine" | sed 's/^xscale/arm/'`
- ;;
- ymp)
- basic_machine=ymp-cray
- os=-unicos
+ cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
;;
- none)
- basic_machine=none-none
- os=-none
+ arm64-* | aarch64le-*)
+ cpu=aarch64
;;
-# Here we handle the default manufacturer of certain CPU types. It is in
-# some cases the only manufacturer, in others, it is the most popular.
- w89k)
- basic_machine=hppa1.1-winbond
- ;;
- op50n)
- basic_machine=hppa1.1-oki
- ;;
- op60c)
- basic_machine=hppa1.1-oki
- ;;
- romp)
- basic_machine=romp-ibm
- ;;
- mmix)
- basic_machine=mmix-knuth
+ # Recognize the canonical CPU Types that limit and/or modify the
+ # company names they are paired with.
+ cr16-*)
+ basic_os=${basic_os:-elf}
;;
- rs6000)
- basic_machine=rs6000-ibm
+ crisv32-* | etraxfs*-*)
+ cpu=crisv32
+ vendor=axis
;;
- vax)
- basic_machine=vax-dec
+ cris-* | etrax*-*)
+ cpu=cris
+ vendor=axis
;;
- pdp11)
- basic_machine=pdp11-dec
+ crx-*)
+ basic_os=${basic_os:-elf}
;;
- we32k)
- basic_machine=we32k-att
+ neo-tandem)
+ cpu=neo
+ vendor=tandem
;;
- sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
- basic_machine=sh-unknown
+ nse-tandem)
+ cpu=nse
+ vendor=tandem
;;
- cydra)
- basic_machine=cydra-cydrome
+ nsr-tandem)
+ cpu=nsr
+ vendor=tandem
;;
- orion)
- basic_machine=orion-highlevel
+ nsv-tandem)
+ cpu=nsv
+ vendor=tandem
;;
- orion105)
- basic_machine=clipper-highlevel
+ nsx-tandem)
+ cpu=nsx
+ vendor=tandem
;;
- mac | mpw | mac-mpw)
- basic_machine=m68k-apple
+ mipsallegrexel-sony)
+ cpu=mipsallegrexel
+ vendor=sony
;;
- pmac | pmac-mpw)
- basic_machine=powerpc-apple
- ;;
- *-unknown)
- # Make sure to match an already-canonicalized machine name.
+ tile*-*)
+ basic_os=${basic_os:-linux-gnu}
;;
+
*)
- echo Invalid configuration \`"$1"\': machine \`"$basic_machine"\' not recognized 1>&2
- exit 1
+ # Recognize the canonical CPU types that are allowed with any
+ # company name.
+ case $cpu in
+ 1750a | 580 \
+ | a29k \
+ | aarch64 | aarch64_be \
+ | abacus \
+ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \
+ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \
+ | alphapca5[67] | alpha64pca5[67] \
+ | am33_2.0 \
+ | amdgcn \
+ | arc | arceb | arc32 | arc64 \
+ | arm | arm[lb]e | arme[lb] | armv* \
+ | avr | avr32 \
+ | asmjs \
+ | ba \
+ | be32 | be64 \
+ | bfin | bpf | bs2000 \
+ | c[123]* | c30 | [cjt]90 | c4x \
+ | c8051 | clipper | craynv | csky | cydra \
+ | d10v | d30v | dlx | dsp16xx \
+ | e2k | elxsi | epiphany \
+ | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \
+ | h8300 | h8500 \
+ | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+ | hexagon \
+ | i370 | i*86 | i860 | i960 | ia16 | ia64 \
+ | ip2k | iq2000 \
+ | k1om \
+ | le32 | le64 \
+ | lm32 \
+ | loongarch32 | loongarch64 | loongarchx32 \
+ | m32c | m32r | m32rle \
+ | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
+ | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
+ | m88110 | m88k | maxq | mb | mcore | mep | metag \
+ | microblaze | microblazeel \
+ | mips | mipsbe | mipseb | mipsel | mipsle \
+ | mips16 \
+ | mips64 | mips64eb | mips64el \
+ | mips64octeon | mips64octeonel \
+ | mips64orion | mips64orionel \
+ | mips64r5900 | mips64r5900el \
+ | mips64vr | mips64vrel \
+ | mips64vr4100 | mips64vr4100el \
+ | mips64vr4300 | mips64vr4300el \
+ | mips64vr5000 | mips64vr5000el \
+ | mips64vr5900 | mips64vr5900el \
+ | mipsisa32 | mipsisa32el \
+ | mipsisa32r2 | mipsisa32r2el \
+ | mipsisa32r3 | mipsisa32r3el \
+ | mipsisa32r5 | mipsisa32r5el \
+ | mipsisa32r6 | mipsisa32r6el \
+ | mipsisa64 | mipsisa64el \
+ | mipsisa64r2 | mipsisa64r2el \
+ | mipsisa64r3 | mipsisa64r3el \
+ | mipsisa64r5 | mipsisa64r5el \
+ | mipsisa64r6 | mipsisa64r6el \
+ | mipsisa64sb1 | mipsisa64sb1el \
+ | mipsisa64sr71k | mipsisa64sr71kel \
+ | mipsr5900 | mipsr5900el \
+ | mipstx39 | mipstx39el \
+ | mmix \
+ | mn10200 | mn10300 \
+ | moxie \
+ | mt \
+ | msp430 \
+ | nds32 | nds32le | nds32be \
+ | nfp \
+ | nios | nios2 | nios2eb | nios2el \
+ | none | np1 | ns16k | ns32k | nvptx \
+ | open8 \
+ | or1k* \
+ | or32 \
+ | orion \
+ | picochip \
+ | pdp10 | pdp11 | pj | pjl | pn | power \
+ | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \
+ | pru \
+ | pyramid \
+ | riscv | riscv32 | riscv32be | riscv64 | riscv64be \
+ | rl78 | romp | rs6000 | rx \
+ | s390 | s390x \
+ | score \
+ | sh | shl \
+ | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \
+ | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \
+ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \
+ | sparclite \
+ | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \
+ | spu \
+ | tahoe \
+ | thumbv7* \
+ | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \
+ | tron \
+ | ubicom32 \
+ | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
+ | vax \
+ | visium \
+ | w65 \
+ | wasm32 | wasm64 \
+ | we32k \
+ | x86 | x86_64 | xc16x | xgate | xps100 \
+ | xstormy16 | xtensa* \
+ | ymp \
+ | z8k | z80)
+ ;;
+
+ *)
+ echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2
+ exit 1
+ ;;
+ esac
;;
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
;;
*)
;;
# Decode manufacturer-specific aliases for certain operating systems.
-if [ x"$os" != x"" ]
+if test x$basic_os != x
then
+
+# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just
+# set os.
+case $basic_os in
+ gnu/linux*)
+ kernel=linux
+ os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'`
+ ;;
+ os2-emx)
+ kernel=os2
+ os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'`
+ ;;
+ nto-qnx*)
+ kernel=nto
+ os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'`
+ ;;
+ *-*)
+ # shellcheck disable=SC2162
+ saved_IFS=$IFS
+ IFS="-" read kernel os <<EOF
+$basic_os
+EOF
+ IFS=$saved_IFS
+ ;;
+ # Default OS when just kernel was specified
+ nto*)
+ kernel=nto
+ os=`echo "$basic_os" | sed -e 's|nto|qnx|'`
+ ;;
+ linux*)
+ kernel=linux
+ os=`echo "$basic_os" | sed -e 's|linux|gnu|'`
+ ;;
+ *)
+ kernel=
+ os=$basic_os
+ ;;
+esac
+
+# Now, normalize the OS (knowing we just have one component, it's not a kernel,
+# etc.)
case $os in
# First match some system type aliases that might get confused
# with valid system types.
- # -solaris* is a basic system type, with this one exception.
- -auroraux)
- os=-auroraux
+ # solaris* is a basic system type, with this one exception.
+ auroraux)
+ os=auroraux
;;
- -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|'`
;;
- -unixware*)
- os=-sysv4.2uw
+ solaris)
+ os=solaris2
;;
- -gnu/linux*)
- os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
+ unixware*)
+ os=sysv4.2uw
;;
# es1800 is here to avoid being matched by es* (a different OS)
- -es1800*)
- os=-ose
+ es1800*)
+ os=ose
;;
- # Now accept the basic system types.
- # The portable systems comes first.
- # Each alternative MUST end in a * to match a version number.
- # -sysv* is not here because it comes later, after sysvr4.
- -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
- | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
- | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
- | -sym* | -kopensolaris* | -plan9* \
- | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
- | -aos* | -aros* | -cloudabi* | -sortix* \
- | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
- | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
- | -hiux* | -knetbsd* | -mirbsd* | -netbsd* \
- | -bitrig* | -openbsd* | -solidbsd* | -libertybsd* \
- | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
- | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
- | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
- | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
- | -chorusos* | -chorusrdb* | -cegcc* | -glidix* \
- | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
- | -midipix* | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
- | -linux-newlib* | -linux-musl* | -linux-uclibc* \
- | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \
- | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* \
- | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
- | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
- | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
- | -morphos* | -superux* | -rtmk* | -windiss* \
- | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
- | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \
- | -onefs* | -tirtos* | -phoenix* | -fuchsia* | -redox* | -bme* \
- | -midnightbsd*)
- # Remember, each alternative MUST END IN *, to match a version number.
- ;;
- -qnx*)
- case $basic_machine in
- x86-* | i*86-*)
- ;;
- *)
- os=-nto$os
- ;;
- esac
+ # Some version numbers need modification
+ chorusos*)
+ os=chorusos
;;
- -nto-qnx*)
+ isc)
+ os=isc2.2
;;
- -nto*)
- os=`echo $os | sed -e 's|nto|nto-qnx|'`
+ sco6)
+ os=sco5v6
;;
- -sim | -xray | -os68k* | -v88r* \
- | -windows* | -osx | -abug | -netware* | -os9* \
- | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
+ sco5)
+ os=sco3.2v5
;;
- -mac*)
- os=`echo "$os" | sed -e 's|mac|macos|'`
+ sco4)
+ os=sco3.2v4
;;
- -linux-dietlibc)
- os=-linux-dietlibc
+ sco3.2.[4-9]*)
+ os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'`
;;
- -linux*)
- os=`echo $os | sed -e 's|linux|linux-gnu|'`
+ sco*v* | scout)
+ # Don't match below
;;
- -sunos5*)
- os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
+ sco*)
+ os=sco3.2v2
;;
- -sunos6*)
- os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
+ psos*)
+ os=psos
;;
- -opened*)
- os=-openedition
+ qnx*)
+ os=qnx
;;
- -os400*)
- os=-os400
+ hiux*)
+ os=hiuxwe2
;;
- -wince*)
- os=-wince
+ lynx*178)
+ os=lynxos178
;;
- -utek*)
- os=-bsd
+ lynx*5)
+ os=lynxos5
;;
- -dynix*)
- os=-bsd
+ lynxos*)
+ # don't get caught up in next wildcard
;;
- -acis*)
- os=-aos
+ lynx*)
+ os=lynxos
;;
- -atheos*)
- os=-atheos
+ mac[0-9]*)
+ os=`echo "$os" | sed -e 's|mac|macos|'`
;;
- -syllable*)
- os=-syllable
+ opened*)
+ os=openedition
;;
- -386bsd)
- os=-bsd
+ os400*)
+ os=os400
;;
- -ctix* | -uts*)
- os=-sysv
+ sunos5*)
+ os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
;;
- -nova*)
- os=-rtmk-nova
+ sunos6*)
+ os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
;;
- -ns2)
- os=-nextstep2
+ wince*)
+ os=wince
;;
- -nsk*)
- os=-nsk
+ utek*)
+ os=bsd
;;
- # Preserve the version number of sinix5.
- -sinix5.*)
- os=`echo $os | sed -e 's|sinix|sysv|'`
+ dynix*)
+ os=bsd
;;
- -sinix*)
- os=-sysv4
+ acis*)
+ os=aos
;;
- -tpf*)
- os=-tpf
+ atheos*)
+ os=atheos
;;
- -triton*)
- os=-sysv3
+ syllable*)
+ os=syllable
+ ;;
+ 386bsd)
+ os=bsd
+ ;;
+ ctix* | uts*)
+ os=sysv
+ ;;
+ nova*)
+ os=rtmk-nova
+ ;;
+ ns2)
+ os=nextstep2
+ ;;
+ # Preserve the version number of sinix5.
+ sinix5.*)
+ os=`echo "$os" | sed -e 's|sinix|sysv|'`
;;
- -oss*)
- os=-sysv3
+ sinix*)
+ os=sysv4
;;
- -svr4*)
- os=-sysv4
+ tpf*)
+ os=tpf
;;
- -svr3)
- os=-sysv3
+ triton*)
+ os=sysv3
;;
- -sysvr4)
- os=-sysv4
+ oss*)
+ os=sysv3
;;
- # This must come after -sysvr4.
- -sysv*)
+ svr4*)
+ os=sysv4
;;
- -ose*)
- os=-ose
+ svr3)
+ os=sysv3
;;
- -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
- os=-mint
+ sysvr4)
+ os=sysv4
;;
- -zvmoe)
- os=-zvmoe
+ ose*)
+ os=ose
;;
- -dicos*)
- os=-dicos
+ *mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
+ os=mint
;;
- -pikeos*)
+ dicos*)
+ os=dicos
+ ;;
+ pikeos*)
# Until real need of OS specific support for
# particular features comes up, bare metal
# configurations are quite functional.
- case $basic_machine in
+ case $cpu in
arm*)
- os=-eabi
+ os=eabi
;;
*)
- os=-elf
+ os=elf
;;
esac
;;
- -nacl*)
- ;;
- -ios)
- ;;
- -none)
- ;;
*)
- # Get rid of the `-' at the beginning of $os.
- os=`echo $os | sed 's/[^-]*-//'`
- echo Invalid configuration \`"$1"\': system \`"$os"\' not recognized 1>&2
- exit 1
+ # No normalization, but not necessarily accepted, that comes below.
;;
esac
+
else
# Here we handle the default operating systems that come with various machines.
# will signal an error saying that MANUFACTURER isn't an operating
# system, and we'll never get to this point.
-case $basic_machine in
+kernel=
+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
+ kernel=linux
+ os=gnu
;;
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
+ os=beos
;;
*-ibm)
- os=-aix
+ os=aix
;;
*-knuth)
- os=-mmixware
+ os=mmixware
;;
*-wec)
- os=-proelf
+ os=proelf
;;
*-winbond)
- os=-proelf
+ os=proelf
;;
*-oki)
- os=-proelf
+ os=proelf
;;
*-hp)
- os=-hpux
+ os=hpux
;;
*-hitachi)
- os=-hiux
+ os=hiux
;;
i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
- os=-sysv
+ os=sysv
;;
*-cbm)
- os=-amigaos
+ os=amigaos
;;
*-dg)
- os=-dgux
+ os=dgux
;;
*-dolphin)
- os=-sysv3
+ os=sysv3
;;
m68k-ccur)
- os=-rtu
+ os=rtu
;;
m88k-omron*)
- os=-luna
+ os=luna
;;
*-next)
- os=-nextstep
+ os=nextstep
;;
*-sequent)
- os=-ptx
+ os=ptx
;;
*-crds)
- os=-unos
+ os=unos
;;
*-ns)
- os=-genix
+ os=genix
;;
i370-*)
- os=-mvs
+ os=mvs
;;
*-gould)
- os=-sysv
+ os=sysv
;;
*-highlevel)
- os=-bsd
+ os=bsd
;;
*-encore)
- os=-bsd
+ os=bsd
;;
*-sgi)
- os=-irix
+ os=irix
;;
*-siemens)
- os=-sysv4
+ os=sysv4
;;
*-masscomp)
- os=-rtu
+ os=rtu
;;
f30[01]-fujitsu | f700-fujitsu)
- os=-uxpv
+ os=uxpv
;;
*-rom68k)
- os=-coff
+ os=coff
;;
*-*bug)
- os=-coff
+ os=coff
;;
*-apple)
- os=-macos
+ os=macos
;;
*-atari*)
- os=-mint
+ os=mint
+ ;;
+ *-wrs)
+ os=vxworks
;;
*)
- os=-none
+ os=none
;;
esac
+
fi
+# Now, validate our (potentially fixed-up) OS.
+case $os in
+ # Sometimes we do "kernel-libc", so those need to count as OSes.
+ musl* | newlib* | relibc* | uclibc*)
+ ;;
+ # Likewise for "kernel-abi"
+ eabi* | gnueabi*)
+ ;;
+ # VxWorks passes extra cpu info in the 4th filed.
+ simlinux | simwindows | spe)
+ ;;
+ # Now accept the basic system types.
+ # The portable systems comes first.
+ # Each alternative MUST end in a * to match a version number.
+ gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \
+ | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \
+ | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
+ | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \
+ | hiux* | abug | nacl* | netware* | windows* \
+ | os9* | macos* | osx* | ios* \
+ | mpw* | magic* | mmixware* | mon960* | lnews* \
+ | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
+ | aos* | aros* | cloudabi* | sortix* | twizzler* \
+ | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
+ | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
+ | mirbsd* | netbsd* | dicos* | openedition* | ose* \
+ | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \
+ | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \
+ | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
+ | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
+ | udi* | lites* | ieee* | go32* | aux* | hcos* \
+ | chorusrdb* | cegcc* | glidix* | serenity* \
+ | cygwin* | msys* | pe* | moss* | proelf* | rtems* \
+ | midipix* | mingw32* | mingw64* | mint* \
+ | 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* \
+ | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \
+ | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
+ | skyos* | haiku* | rdos* | toppers* | drops* | es* \
+ | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
+ | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
+ | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \
+ | fiwix* )
+ ;;
+ # This one is extra strict with allowed versions
+ sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
+ # Don't forget version if it is 3.2v4 or newer.
+ ;;
+ none)
+ ;;
+ *)
+ echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2
+ exit 1
+ ;;
+esac
+
+# As a final step for OS-related things, validate the OS-kernel combination
+# (given a valid OS), if there is a kernel.
+case $kernel-$os in
+ linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \
+ | linux-musl* | linux-relibc* | linux-uclibc* )
+ ;;
+ uclinux-uclibc* )
+ ;;
+ -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* )
+ # These are just libc implementations, not actual OSes, and thus
+ # require a kernel.
+ echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2
+ exit 1
+ ;;
+ kfreebsd*-gnu* | kopensolaris*-gnu*)
+ ;;
+ vxworks-simlinux | vxworks-simwindows | vxworks-spe)
+ ;;
+ nto-qnx*)
+ ;;
+ os2-emx)
+ ;;
+ *-eabi* | *-gnueabi*)
+ ;;
+ -*)
+ # Blank kernel with real OS is always fine.
+ ;;
+ *-*)
+ echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2
+ exit 1
+ ;;
+esac
+
# 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 $os in
- -riscix*)
+case $vendor in
+ unknown)
+ case $cpu-$os in
+ *-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*)
vendor=ibm
;;
- -os400*)
+ s390-* | s390x-*)
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-${kernel:+$kernel-}$os"
exit
# Local variables:
-# eval: (add-hook 'write-file-functions 'time-stamp)
+# eval: (add-hook 'before-save-hook 'time-stamp)
# time-stamp-start: "timestamp='"
# time-stamp-format: "%:y-%02m-%02d"
# time-stamp-end: "'"
scriptversion=2018-03-07.03; # UTC
-# Copyright (C) 1999-2018 Free Software Foundation, Inc.
+# Copyright (C) 1999-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
#!/bin/sh
# install - install a program, script, or datafile
-scriptversion=2018-03-11.20; # UTC
+scriptversion=2020-11-14.01; # UTC
# This originates from X11R5 (mit/util/scripts/install.sh), which was
# later released in X11R6 (xc/config/util/install.sh) with the
# Desired mode of installed file.
mode=0755
+# Create dirs (including intermediate dirs) using mode 755.
+# This is like GNU 'install' as of coreutils 8.32 (2020).
+mkdir_umask=22
+
+backupsuffix=
chgrpcmd=
chmodcmd=$chmodprog
chowncmd=
--version display version info and exit.
-c (ignored)
- -C install only if different (preserve the last data modification time)
+ -C install only if different (preserve data modification time)
-d create directories instead of installing files.
-g GROUP $chgrpprog installed files to GROUP.
-m MODE $chmodprog installed files to MODE.
-o USER $chownprog installed files to USER.
+ -p pass -p to $cpprog.
-s $stripprog installed files.
+ -S SUFFIX attempt to back up existing files, with suffix SUFFIX.
-t DIRECTORY install into DIRECTORY.
-T report an error if DSTFILE is a directory.
Environment variables override the default commands:
CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
RMPROG STRIPPROG
+
+By default, rm is invoked with -f; when overridden with RMPROG,
+it's up to you to specify -f if you want it.
+
+If -S is not specified, no backups are attempted.
+
+Email bug reports to bug-automake@gnu.org.
+Automake home page: https://www.gnu.org/software/automake/
"
while test $# -ne 0; do
-o) chowncmd="$chownprog $2"
shift;;
+ -p) cpprog="$cpprog -p";;
+
-s) stripcmd=$stripprog;;
+ -S) backupsuffix="$2"
+ shift;;
+
-t)
is_target_a_directory=always
dst_arg=$2
dstdir=$dst
test -d "$dstdir"
dstdir_status=$?
+ # Don't chown directories that already exist.
+ if test $dstdir_status = 0; then
+ chowncmd=""
+ fi
else
# Waiting for this to be detected by the "$cpprog $src $dsttmp" command
if test $dstdir_status != 0; then
case $posix_mkdir in
'')
- # Create intermediate dirs using mode 755 as modified by the umask.
- # This is like FreeBSD 'install' as of 1997-10-28.
- umask=`umask`
- case $stripcmd.$umask in
- # Optimize common cases.
- *[2367][2367]) mkdir_umask=$umask;;
- .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
-
- *[0-7])
- mkdir_umask=`expr $umask + 22 \
- - $umask % 100 % 40 + $umask % 20 \
- - $umask % 10 % 4 + $umask % 2
- `;;
- *) mkdir_umask=$umask,go-w;;
- esac
-
# With -d, create the new directory with the user-specified mode.
# Otherwise, rely on $mkdir_umask.
if test -n "$dir_arg"; then
fi
posix_mkdir=false
- case $umask in
- *[123567][0-7][0-7])
- # POSIX mkdir -p sets u+wx bits regardless of umask, which
- # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
- ;;
- *)
- # Note that $RANDOM variable is not portable (e.g. dash); Use it
- # here however when possible just to lower collision chance.
- tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
-
- trap 'ret=$?; rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null; exit $ret' 0
-
- # Because "mkdir -p" follows existing symlinks and we likely work
- # directly in world-writeable /tmp, make sure that the '$tmpdir'
- # directory is successfully created first before we actually test
- # 'mkdir -p' feature.
- if (umask $mkdir_umask &&
- $mkdirprog $mkdir_mode "$tmpdir" &&
- exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1
- then
- if test -z "$dir_arg" || {
- # Check for POSIX incompatibilities with -m.
- # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
- # other-writable bit of parent directory when it shouldn't.
- # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
- test_tmpdir="$tmpdir/a"
- ls_ld_tmpdir=`ls -ld "$test_tmpdir"`
- case $ls_ld_tmpdir in
- d????-?r-*) different_mode=700;;
- d????-?--*) different_mode=755;;
- *) false;;
- esac &&
- $mkdirprog -m$different_mode -p -- "$test_tmpdir" && {
- ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"`
- test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
- }
- }
- then posix_mkdir=:
- fi
- rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir"
- else
- # Remove any dirs left behind by ancient mkdir implementations.
- rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null
- fi
- trap '' 0;;
- esac;;
+ # The $RANDOM variable is not portable (e.g., dash). Use it
+ # here however when possible just to lower collision chance.
+ tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
+
+ trap '
+ ret=$?
+ rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null
+ exit $ret
+ ' 0
+
+ # Because "mkdir -p" follows existing symlinks and we likely work
+ # directly in world-writeable /tmp, make sure that the '$tmpdir'
+ # directory is successfully created first before we actually test
+ # 'mkdir -p'.
+ if (umask $mkdir_umask &&
+ $mkdirprog $mkdir_mode "$tmpdir" &&
+ exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1
+ then
+ if test -z "$dir_arg" || {
+ # Check for POSIX incompatibilities with -m.
+ # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
+ # other-writable bit of parent directory when it shouldn't.
+ # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
+ test_tmpdir="$tmpdir/a"
+ ls_ld_tmpdir=`ls -ld "$test_tmpdir"`
+ case $ls_ld_tmpdir in
+ d????-?r-*) different_mode=700;;
+ d????-?--*) different_mode=755;;
+ *) false;;
+ esac &&
+ $mkdirprog -m$different_mode -p -- "$test_tmpdir" && {
+ ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"`
+ test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
+ }
+ }
+ then posix_mkdir=:
+ fi
+ rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir"
+ else
+ # Remove any dirs left behind by ancient mkdir implementations.
+ rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null
+ fi
+ trap '' 0;;
esac
if
then :
else
- # The umask is ridiculous, or mkdir does not conform to POSIX,
+ # mkdir does not conform to POSIX,
# or it failed possibly due to a race condition. Create the
# directory the slow way, step by step, checking for races as we go.
prefixes=
else
if $posix_mkdir; then
- (umask=$mkdir_umask &&
+ (umask $mkdir_umask &&
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
# Don't fail if two instances are running concurrently.
test -d "$prefix" || exit 1
trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
# Copy the file name to the temp name.
- (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
+ (umask $cp_umask &&
+ { test -z "$stripcmd" || {
+ # Create $dsttmp read-write so that cp doesn't create it read-only,
+ # which would cause strip to fail.
+ if test -z "$doit"; then
+ : >"$dsttmp" # No need to fork-exec 'touch'.
+ else
+ $doit touch "$dsttmp"
+ fi
+ }
+ } &&
+ $doit_exec $cpprog "$src" "$dsttmp") &&
# and set any options; do chmod last to preserve setuid bits.
#
then
rm -f "$dsttmp"
else
+ # If $backupsuffix is set, and the file being installed
+ # already exists, attempt a backup. Don't worry if it fails,
+ # e.g., if mv doesn't support -f.
+ if test -n "$backupsuffix" && test -f "$dst"; then
+ $doit $mvcmd -f "$dst" "$dst$backupsuffix" 2>/dev/null
+ fi
+
# Rename the file to the real destination.
$doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
# file should still install successfully.
{
test ! -f "$dst" ||
- $doit $rmcmd -f "$dst" 2>/dev/null ||
+ $doit $rmcmd "$dst" 2>/dev/null ||
{ $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
- { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
+ { $doit $rmcmd "$rmtmp" 2>/dev/null; :; }
} ||
{ echo "$0: cannot unlink or rename $dst" >&2
(exit 1); exit 1
PROGRAM=libtool
PACKAGE=libtool
-VERSION="2.4.6 Debian-2.4.6-14"
+VERSION="2.4.6 Debian-2.4.6-15build2"
package_revision=2.4.6
compiler: $LTCC
compiler flags: $LTCFLAGS
linker: $LD (gnu? $with_gnu_ld)
- version: $progname $scriptversion Debian-2.4.6-14
+ version: $progname $scriptversion Debian-2.4.6-15build2
automake: `($AUTOMAKE --version) 2>/dev/null |$SED 1q`
autoconf: `($AUTOCONF --version) 2>/dev/null |$SED 1q`
--- /dev/null
+# ============================================================================
+# https://www.gnu.org/software/autoconf-archive/ax_compile_check_sizeof.html
+# ============================================================================
+#
+# SYNOPSIS
+#
+# AX_COMPILE_CHECK_SIZEOF(TYPE [, HEADERS [, EXTRA_SIZES...]])
+#
+# DESCRIPTION
+#
+# This macro checks for the size of TYPE using compile checks, not run
+# checks. You can supply extra HEADERS to look into. the check will cycle
+# through 1 2 4 8 16 and any EXTRA_SIZES the user supplies. If a match is
+# found, it will #define SIZEOF_`TYPE' to that value. Otherwise it will
+# emit a configure time error indicating the size of the type could not be
+# determined.
+#
+# The trick is that C will not allow duplicate case labels. While this is
+# valid C code:
+#
+# switch (0) case 0: case 1:;
+#
+# The following is not:
+#
+# switch (0) case 0: case 0:;
+#
+# Thus, the AC_COMPILE_IFELSE will fail if the currently tried size does
+# not match.
+#
+# Here is an example skeleton configure.in script, demonstrating the
+# macro's usage:
+#
+# AC_PROG_CC
+# AC_CHECK_HEADERS(stddef.h unistd.h)
+# AC_TYPE_SIZE_T
+# AC_CHECK_TYPE(ssize_t, int)
+#
+# headers='#ifdef HAVE_STDDEF_H
+# #include <stddef.h>
+# #endif
+# #ifdef HAVE_UNISTD_H
+# #include <unistd.h>
+# #endif
+# '
+#
+# AX_COMPILE_CHECK_SIZEOF(char)
+# AX_COMPILE_CHECK_SIZEOF(short)
+# AX_COMPILE_CHECK_SIZEOF(int)
+# AX_COMPILE_CHECK_SIZEOF(long)
+# AX_COMPILE_CHECK_SIZEOF(unsigned char *)
+# AX_COMPILE_CHECK_SIZEOF(void *)
+# AX_COMPILE_CHECK_SIZEOF(size_t, $headers)
+# AX_COMPILE_CHECK_SIZEOF(ssize_t, $headers)
+# AX_COMPILE_CHECK_SIZEOF(ptrdiff_t, $headers)
+# AX_COMPILE_CHECK_SIZEOF(off_t, $headers)
+#
+# LICENSE
+#
+# Copyright (c) 2008 Kaveh Ghazi <ghazi@caip.rutgers.edu>
+# Copyright (c) 2017 Reini Urban <rurban@cpan.org>
+#
+# This program is free software: you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the
+# Free Software Foundation, either version 3 of the License, or (at your
+# option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
+# Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program. If not, see <https://www.gnu.org/licenses/>.
+#
+# As a special exception, the respective Autoconf Macro's copyright owner
+# gives unlimited permission to copy, distribute and modify the configure
+# scripts that are the output of Autoconf when processing the Macro. You
+# need not follow the terms of the GNU General Public License when using
+# or distributing such scripts, even though portions of the text of the
+# Macro appear in them. The GNU General Public License (GPL) does govern
+# all other use of the material that constitutes the Autoconf Macro.
+#
+# This special exception to the GPL applies to versions of the Autoconf
+# Macro released by the Autoconf Archive. When you make and distribute a
+# modified version of the Autoconf Macro, you may extend this special
+# exception to the GPL to apply to your modified version as well.
+
+#serial 8
+
+AU_ALIAS([AC_COMPILE_CHECK_SIZEOF], [AX_COMPILE_CHECK_SIZEOF])
+AC_DEFUN([AX_COMPILE_CHECK_SIZEOF],
+[changequote(<<, >>)dnl
+dnl The name to #define.
+define(<<AC_TYPE_NAME>>, translit(sizeof_$1, [a-z *], [A-Z_P]))dnl
+dnl The cache variable name.
+define(<<AC_CV_NAME>>, translit(ac_cv_sizeof_$1, [ *], [_p]))dnl
+changequote([, ])dnl
+AC_MSG_CHECKING(size of $1)
+AC_CACHE_VAL(AC_CV_NAME,
+[for ac_size in 4 8 1 2 16 $3 ; do # List sizes in rough order of prevalence.
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+#include <sys/types.h>
+$2
+]], [[switch (0) case 0: case (sizeof ($1) == $ac_size):;]])], [AC_CV_NAME=$ac_size])
+ if test x$AC_CV_NAME != x ; then break; fi
+done
+])
+if test x$AC_CV_NAME = x ; then
+ AC_MSG_ERROR([cannot determine a size for $1])
+fi
+AC_MSG_RESULT($AC_CV_NAME)
+AC_DEFINE_UNQUOTED(AC_TYPE_NAME, $AC_CV_NAME, [The number of bytes in type $1])
+undefine([AC_TYPE_NAME])dnl
+undefine([AC_CV_NAME])dnl
+])
scriptversion=2018-03-07.03; # UTC
-# Copyright (C) 1996-2018 Free Software Foundation, Inc.
+# Copyright (C) 1996-2021 Free Software Foundation, Inc.
# Originally written by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
# This program is free software; you can redistribute it and/or modify
scriptversion=2018-03-07.03; # UTC
-# Copyright (C) 2011-2018 Free Software Foundation, Inc.
+# Copyright (C) 2011-2021 Free Software Foundation, Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
{
cat <<END
Usage:
- test-driver --test-name=NAME --log-file=PATH --trs-file=PATH
- [--expect-failure={yes|no}] [--color-tests={yes|no}]
- [--enable-hard-errors={yes|no}] [--]
+ test-driver --test-name NAME --log-file PATH --trs-file PATH
+ [--expect-failure {yes|no}] [--color-tests {yes|no}]
+ [--enable-hard-errors {yes|no}] [--]
TEST-SCRIPT [TEST-SCRIPT-ARGUMENTS]
+
The '--test-name', '--log-file' and '--trs-file' options are mandatory.
+See the GNU Automake documentation for information.
END
}
trap "st=141; $do_exit" 13
trap "st=143; $do_exit" 15
-# Test script is run here.
-"$@" >$log_file 2>&1
+# Test script is run here. We create the file first, then append to it,
+# to ameliorate tests themselves also writing to the log file. Our tests
+# don't, but others can (automake bug#35762).
+: >"$log_file"
+"$@" >>"$log_file" 2>&1
estatus=$?
if test $enable_hard_errors = no && test $estatus -eq 99; then
# know whether the test passed or failed simply by looking at the '.log'
# file, without the need of also peaking into the corresponding '.trs'
# file (automake bug#11814).
-echo "$res $test_name (exit status: $estatus)" >>$log_file
+echo "$res $test_name (exit status: $estatus)" >>"$log_file"
# Report outcome to console.
echo "${col}${res}${std}: $test_name"
set(MBEDTLS_LIBRARIES "${MBEDTLS_LIBRARY}" "${MBEDX509_LIBRARY}" "${MBEDCRYPTO_LIBRARY}")
include(FindPackageHandleStandardArgs)
-find_package_handle_standard_args(MBEDTLS DEFAULT_MSG
+find_package_handle_standard_args(MbedTLS DEFAULT_MSG
MBEDTLS_INCLUDE_DIRS MBEDTLS_LIBRARY MBEDX509_LIBRARY MBEDCRYPTO_LIBRARY)
mark_as_advanced(MBEDTLS_INCLUDE_DIRS MBEDTLS_LIBRARY MBEDX509_LIBRARY MBEDCRYPTO_LIBRARY)
#cmakedefine HAVE_UNSIGNED___INT64
/* The sizes of various standard integer types. */
-@SIZE_OF_SHORT_CODE@
-@SIZE_OF_INT_CODE@
-@SIZE_OF_LONG_CODE@
-@SIZE_OF_LONG_LONG_CODE@
-@SIZE_OF_UNSIGNED_SHORT_CODE@
-@SIZE_OF_UNSIGNED_CODE@
-@SIZE_OF_UNSIGNED_LONG_CODE@
-@SIZE_OF_UNSIGNED_LONG_LONG_CODE@
+@SIZEOF_SHORT_CODE@
+@SIZEOF_INT_CODE@
+@SIZEOF_LONG_CODE@
+@SIZEOF_LONG_LONG_CODE@
+@SIZEOF_UNSIGNED_SHORT_CODE@
+@SIZEOF_UNSIGNED_CODE@
+@SIZEOF_UNSIGNED_LONG_CODE@
+@SIZEOF_UNSIGNED_LONG_LONG_CODE@
/*
* If we lack int64_t, define it to the first of __int64, int, long, and long long
#define HAVE_INT64_T
#endif
-#if !defined(HAVE_INT64_T) && SIZE_OF_INT == 8
+#if !defined(HAVE_INT64_T) && SIZEOF_INT == 8
typedef int int64_t;
#define HAVE_INT64_T
#endif
-#if !defined(HAVE_INT64_T) && SIZE_OF_LONG == 8
+#if !defined(HAVE_INT64_T) && SIZEOF_LONG == 8
typedef long int64_t;
#define HAVE_INT64_T
#endif
-#if !defined(HAVE_INT64_T) && SIZE_OF_LONG_LONG == 8
+#if !defined(HAVE_INT64_T) && SIZEOF_LONG_LONG == 8
typedef long long int64_t;
#define HAVE_INT64_T
#endif
/*
* Similarly for int32_t
*/
-#if !defined(HAVE_INT32_T) && SIZE_OF_INT == 4
+#if !defined(HAVE_INT32_T) && SIZEOF_INT == 4
typedef int int32_t;
#define HAVE_INT32_T
#endif
-#if !defined(HAVE_INT32_T) && SIZE_OF_LONG == 4
+#if !defined(HAVE_INT32_T) && SIZEOF_LONG == 4
typedef long int32_t;
#define HAVE_INT32_T
#endif
/*
* Similarly for int16_t
*/
-#if !defined(HAVE_INT16_T) && SIZE_OF_INT == 2
+#if !defined(HAVE_INT16_T) && SIZEOF_INT == 2
typedef int int16_t;
#define HAVE_INT16_T
#endif
-#if !defined(HAVE_INT16_T) && SIZE_OF_SHORT == 2
+#if !defined(HAVE_INT16_T) && SIZEOF_SHORT == 2
typedef short int16_t;
#define HAVE_INT16_T
#endif
#define HAVE_UINT64_T
#endif
-#if !defined(HAVE_UINT64_T) && SIZE_OF_UNSIGNED == 8
+#if !defined(HAVE_UINT64_T) && SIZEOF_UNSIGNED == 8
typedef unsigned uint64_t;
#define HAVE_UINT64_T
#endif
-#if !defined(HAVE_UINT64_T) && SIZE_OF_UNSIGNED_LONG == 8
+#if !defined(HAVE_UINT64_T) && SIZEOF_UNSIGNED_LONG == 8
typedef unsigned long uint64_t;
#define HAVE_UINT64_T
#endif
-#if !defined(HAVE_UINT64_T) && SIZE_OF_UNSIGNED_LONG_LONG == 8
+#if !defined(HAVE_UINT64_T) && SIZEOF_UNSIGNED_LONG_LONG == 8
typedef unsigned long long uint64_t;
#define HAVE_UINT64_T
#endif
/*
* Similarly for uint32_t
*/
-#if !defined(HAVE_UINT32_T) && SIZE_OF_UNSIGNED == 4
+#if !defined(HAVE_UINT32_T) && SIZEOF_UNSIGNED == 4
typedef unsigned uint32_t;
#define HAVE_UINT32_T
#endif
-#if !defined(HAVE_UINT32_T) && SIZE_OF_UNSIGNED_LONG == 4
+#if !defined(HAVE_UINT32_T) && SIZEOF_UNSIGNED_LONG == 4
typedef unsigned long uint32_t;
#define HAVE_UINT32_T
#endif
/*
* Similarly for uint16_t
*/
-#if !defined(HAVE_UINT16_T) && SIZE_OF_UNSIGNED == 2
+#if !defined(HAVE_UINT16_T) && SIZEOF_UNSIGNED == 2
typedef unsigned uint16_t;
#define HAVE_UINT16_T
#endif
-#if !defined(HAVE_UINT16_T) && SIZE_OF_UNSIGNED_SHORT == 2
+#if !defined(HAVE_UINT16_T) && SIZEOF_UNSIGNED_SHORT == 2
typedef unsigned short uint16_t;
#define HAVE_UINT16_T
#endif
#define HAVE_UINT8_T
#endif
-#if !defined(HAVE_UINT16_T)
+#if !defined(HAVE_UINT8_T)
#error No 8-bit unsigned integer type was found.
#endif
/* MD5 via ARCHIVE_CRYPTO_MD5_LIBSYSTEM supported. */
#cmakedefine ARCHIVE_CRYPTO_MD5_LIBSYSTEM 1
+/* MD5 via ARCHIVE_CRYPTO_MD5_MBEDTLS supported. */
+#cmakedefine ARCHIVE_CRYPTO_MD5_MBEDTLS 1
+
/* MD5 via ARCHIVE_CRYPTO_MD5_NETTLE supported. */
#cmakedefine ARCHIVE_CRYPTO_MD5_NETTLE 1
/* RMD160 via ARCHIVE_CRYPTO_RMD160_NETTLE supported. */
#cmakedefine ARCHIVE_CRYPTO_RMD160_NETTLE 1
+/* RMD160 via ARCHIVE_CRYPTO_RMD160_MBEDTLS supported. */
+#cmakedefine ARCHIVE_CRYPTO_RMD160_MBEDTLS 1
+
/* RMD160 via ARCHIVE_CRYPTO_RMD160_OPENSSL supported. */
#cmakedefine ARCHIVE_CRYPTO_RMD160_OPENSSL 1
/* SHA1 via ARCHIVE_CRYPTO_SHA1_LIBSYSTEM supported. */
#cmakedefine ARCHIVE_CRYPTO_SHA1_LIBSYSTEM 1
+/* SHA1 via ARCHIVE_CRYPTO_SHA1_MBEDTLS supported. */
+#cmakedefine ARCHIVE_CRYPTO_SHA1_MBEDTLS 1
+
/* SHA1 via ARCHIVE_CRYPTO_SHA1_NETTLE supported. */
#cmakedefine ARCHIVE_CRYPTO_SHA1_NETTLE 1
/* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBSYSTEM supported. */
#cmakedefine ARCHIVE_CRYPTO_SHA256_LIBSYSTEM 1
+/* SHA256 via ARCHIVE_CRYPTO_SHA256_MBEDTLS supported. */
+#cmakedefine ARCHIVE_CRYPTO_SHA256_MBEDTLS 1
+
/* SHA256 via ARCHIVE_CRYPTO_SHA256_NETTLE supported. */
#cmakedefine ARCHIVE_CRYPTO_SHA256_NETTLE 1
/* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBSYSTEM supported. */
#cmakedefine ARCHIVE_CRYPTO_SHA384_LIBSYSTEM 1
+/* SHA384 via ARCHIVE_CRYPTO_SHA384_MBEDTLS supported. */
+#cmakedefine ARCHIVE_CRYPTO_SHA384_MBEDTLS 1
+
/* SHA384 via ARCHIVE_CRYPTO_SHA384_NETTLE supported. */
#cmakedefine ARCHIVE_CRYPTO_SHA384_NETTLE 1
/* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBSYSTEM supported. */
#cmakedefine ARCHIVE_CRYPTO_SHA512_LIBSYSTEM 1
+/* SHA512 via ARCHIVE_CRYPTO_SHA512_MBEDTLS supported. */
+#cmakedefine ARCHIVE_CRYPTO_SHA512_MBEDTLS 1
+
/* SHA512 via ARCHIVE_CRYPTO_SHA512_NETTLE supported. */
#cmakedefine ARCHIVE_CRYPTO_SHA512_NETTLE 1
#cmakedefine ARCHIVE_XATTR_LINUX 1
/* Version number of bsdcpio */
-#cmakedefine BSDCPIO_VERSION_STRING "${BSDCPIO_VERSION_STRING}"
+#cmakedefine BSDCPIO_VERSION_STRING "@BSDCPIO_VERSION_STRING@"
/* Version number of bsdtar */
-#cmakedefine BSDTAR_VERSION_STRING "${BSDTAR_VERSION_STRING}"
+#cmakedefine BSDTAR_VERSION_STRING "@BSDTAR_VERSION_STRING@"
/* Version number of bsdcat */
-#cmakedefine BSDCAT_VERSION_STRING "${BSDCAT_VERSION_STRING}"
+#cmakedefine BSDCAT_VERSION_STRING "@BSDCAT_VERSION_STRING@"
+
+/* Version number of bsdunzip */
+#cmakedefine BSDUNZIP_VERSION_STRING "@BSDUNZIP_VERSION_STRING@"
/* Define to 1 if you have the `acl_create_entry' function. */
#cmakedefine HAVE_ACL_CREATE_ENTRY 1
/* Define to 1 if you have the <attr/xattr.h> header file. */
#cmakedefine HAVE_ATTR_XATTR_H 1
-/* Define to 1 if you have the <Bcrypt.h> header file. */
+/* Define to 1 if you have the <bcrypt.h> header file. */
#cmakedefine HAVE_BCRYPT_H 1
/* Define to 1 if you have the <bsdxml.h> header file. */
/* Define to 1 if you have the `flistxattr' function. */
#cmakedefine HAVE_FLISTXATTR 1
+/* Define to 1 if you have the `fnmatch' function. */
+#cmakedefine HAVE_FNMATCH 1
+
+/* Define to 1 if you have the <fnmatch.h> header file. */
+#cmakedefine HAVE_FNMATCH_H 1
+
/* Define to 1 if you have the `fork' function. */
#cmakedefine HAVE_FORK 1
/* Define to 1 if you have the `getgrnam_r' function. */
#cmakedefine HAVE_GETGRNAM_R 1
+/* Define to 1 if you have the `getline' function. */
+#cmakedefine HAVE_GETLINE 1
+
/* Define to 1 if you have the `getpid' function. */
#cmakedefine HAVE_GETPID 1
/* Define to 1 if you have the `zstd' library (-lzstd). */
#cmakedefine HAVE_LIBZSTD 1
+/* Define to 1 if you have the `zstd' library (-lzstd) with compression
+ support. */
+#cmakedefine HAVE_LIBZSTD_COMPRESSOR 1
+
/* Define to 1 if you have the <limits.h> header file. */
#cmakedefine HAVE_LIMITS_H 1
/* Define to 1 if you have the <lzo/lzoconf.h> header file. */
#cmakedefine HAVE_LZO_LZOCONF_H 1
+/* Define to 1 if you have the <mbedtls/aes.h> header file. */
+#cmakedefine HAVE_MBEDTLS_AES_H 1
+
+/* Define to 1 if you have the <mbedtls/md.h> header file. */
+#cmakedefine HAVE_MBEDTLS_MD_H 1
+
+/* Define to 1 if you have the <mbedtls/pkcs5.h> header file. */
+#cmakedefine HAVE_MBEDTLS_PKCS5_H 1
+
/* Define to 1 if you have the `mbrtowc' function. */
#cmakedefine HAVE_MBRTOWC 1
/* Define to 1 if you have the `openat' function. */
#cmakedefine HAVE_OPENAT 1
+/* Define to 1 if you have the <openssl/evp.h> header file. */
+#cmakedefine HAVE_OPENSSL_EVP_H 1
+
/* Define to 1 if you have the <paths.h> header file. */
#cmakedefine HAVE_PATHS_H 1
/* Define to 1 if you have the `strrchr' function. */
#cmakedefine HAVE_STRRCHR 1
+/* Define to 1 if the system has the type `struct statfs'. */
+#cmakedefine HAVE_STRUCT_STATFS 1
+
+/* Define to 1 if `f_iosize' is a member of `struct statfs'. */
+#cmakedefine HAVE_STRUCT_STATFS_F_IOSIZE 1
+
/* Define to 1 if `f_namemax' is a member of `struct statfs'. */
#cmakedefine HAVE_STRUCT_STATFS_F_NAMEMAX 1
/* Define to 1 if you have the <sys/poll.h> header file. */
#cmakedefine HAVE_SYS_POLL_H 1
+/* Define to 1 if you have the <sys/queue.h> header file. */
+#cmakedefine HAVE_SYS_QUEUE_H 1
+
/* Define to 1 if you have the <sys/richacl.h> header file. */
#cmakedefine HAVE_SYS_RICHACL_H 1
/* Define to 1 if you have the <zstd.h> header file. */
#cmakedefine HAVE_ZSTD_H 1
-/* Define to 1 if you have the `_ctime64_s' function. */
-#cmakedefine HAVE__CTIME64_S 1
+/* Define to 1 if you have the `ctime_s' function. */
+#cmakedefine HAVE_CTIME_S 1
/* Define to 1 if you have the `_fseeki64' function. */
#cmakedefine HAVE__FSEEKI64 1
/* Define to 1 if you have the `_get_timezone' function. */
#cmakedefine HAVE__GET_TIMEZONE 1
-/* Define to 1 if you have the `_gmtime64_s' function. */
-#cmakedefine HAVE__GMTIME64_S 1
+/* Define to 1 if you have the `gmtime_s' function. */
+#cmakedefine HAVE_GMTIME_S 1
-/* Define to 1 if you have the `_localtime64_s' function. */
-#cmakedefine HAVE__LOCALTIME64_S 1
+/* Define to 1 if you have the `localtime_s' function. */
+#cmakedefine HAVE_LOCALTIME_S 1
-/* Define to 1 if you have the `_mkgmtime64' function. */
-#cmakedefine HAVE__MKGMTIME64 1
+/* Define to 1 if you have the `_mkgmtime' function. */
+#cmakedefine HAVE__MKGMTIME 1
/* Define as const if the declaration of iconv() needs const. */
-#define ICONV_CONST ${ICONV_CONST}
+#define ICONV_CONST @ICONV_CONST@
/* Version number of libarchive as a single integer */
-#cmakedefine LIBARCHIVE_VERSION_NUMBER "${LIBARCHIVE_VERSION_NUMBER}"
+#cmakedefine LIBARCHIVE_VERSION_NUMBER "@LIBARCHIVE_VERSION_NUMBER@"
/* Version number of libarchive */
-#cmakedefine LIBARCHIVE_VERSION_STRING "${LIBARCHIVE_VERSION_STRING}"
+#cmakedefine LIBARCHIVE_VERSION_STRING "@LIBARCHIVE_VERSION_STRING@"
/* Define to 1 if `lstat' dereferences a symlink specified with a trailing
slash. */
#cmakedefine NO_MINUS_C_MINUS_O 1
/* The size of `wchar_t', as computed by sizeof. */
-#cmakedefine SIZEOF_WCHAR_T ${SIZEOF_WCHAR_T}
+#cmakedefine SIZEOF_WCHAR_T @SIZEOF_WCHAR_T@
/* Define to 1 if strerror_r returns char *. */
#cmakedefine STRERROR_R_CHAR_P 1
#endif /* SAFE_TO_DEFINE_EXTENSIONS */
/* Version number of package */
-#cmakedefine VERSION "${VERSION}"
+#cmakedefine VERSION "@VERSION@"
/* Number of bits in a file offset, on hosts where this is settable. */
-#cmakedefine _FILE_OFFSET_BITS ${_FILE_OFFSET_BITS}
+#cmakedefine _FILE_OFFSET_BITS @_FILE_OFFSET_BITS@
/* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */
#cmakedefine _LARGEFILE_SOURCE 1
/* Define for large files, on AIX-style hosts. */
-#cmakedefine _LARGE_FILES ${_LARGE_FILES}
+#cmakedefine _LARGE_FILES @_LARGE_FILES@
/* Define to control Windows SDK version */
#ifndef NTDDI_VERSION
-#cmakedefine NTDDI_VERSION ${NTDDI_VERSION}
+#cmakedefine NTDDI_VERSION @NTDDI_VERSION@
#endif // NTDDI_VERSION
#ifndef _WIN32_WINNT
-#cmakedefine _WIN32_WINNT ${_WIN32_WINNT}
+#cmakedefine _WIN32_WINNT @_WIN32_WINNT@
#endif // _WIN32_WINNT
#ifndef WINVER
-#cmakedefine WINVER ${WINVER}
+#cmakedefine WINVER @WINVER@
#endif // WINVER
/* Define to empty if `const' does not conform to ANSI C. */
-#cmakedefine const ${const}
+#cmakedefine const @const@
/* Define to `int' if <sys/types.h> doesn't define. */
-#cmakedefine gid_t ${gid_t}
+#cmakedefine gid_t @gid_t@
/* Define to `unsigned long' if <sys/types.h> does not define. */
-#cmakedefine id_t ${id_t}
+#cmakedefine id_t @id_t@
/* Define to `int' if <sys/types.h> does not define. */
-#cmakedefine mode_t ${mode_t}
+#cmakedefine mode_t @mode_t@
/* Define to `long long' if <sys/types.h> does not define. */
-#cmakedefine off_t ${off_t}
+#cmakedefine off_t @off_t@
/* Define to `int' if <sys/types.h> doesn't define. */
-#cmakedefine pid_t ${pid_t}
+#cmakedefine pid_t @pid_t@
/* Define to `unsigned int' if <sys/types.h> does not define. */
-#cmakedefine size_t ${size_t}
+#cmakedefine size_t @size_t@
/* Define to `int' if <sys/types.h> does not define. */
-#cmakedefine ssize_t ${ssize_t}
+#cmakedefine ssize_t @ssize_t@
/* Define to `int' if <sys/types.h> doesn't define. */
-#cmakedefine uid_t ${uid_t}
+#cmakedefine uid_t @uid_t@
/* Define to `int' if <sys/types.h> does not define. */
-#cmakedefine intptr_t ${intptr_t}
+#cmakedefine intptr_t @intptr_t@
/* Define to `unsigned int' if <sys/types.h> does not define. */
-#cmakedefine uintptr_t ${uintptr_t}
+#cmakedefine uintptr_t @uintptr_t@
Cflags.private: -DLIBARCHIVE_STATIC
Libs: -L${libdir} -larchive
Libs.private: @LIBS@
+Requires.private: @LIBSREQUIRED@
*/
/*
- * Command line parser for tar.
+ * Command line parser for bsdcat.
*/
#include "bsdcat_platform.h"
#include "err.h"
/*
- * Short options for tar. Please keep this sorted.
+ * Short options for bsdcat. Please keep this sorted.
*/
static const char *short_options = "h";
/*
- * Long options for tar. Please keep this list sorted.
+ * Long options for bsdcat. Please keep this list sorted.
*
* The symbolic names for options that lack a short equivalent are
* defined in bsdcat.h. Also note that so far I've found no need
const char *name;
int required; /* 1 if this option requires an argument. */
int equivalent; /* Equivalent short option. */
-} tar_longopts[] = {
+} bsdcat_longopts[] = {
{ "help", 0, 'h' },
{ "version", 0, OPTION_VERSION },
{ NULL, 0, 0 }
* -W long options: There's an obscure GNU convention (only rarely
* supported even there) that allows "-W option=argument" as an
* alternative way to support long options. This was supported in
- * early bsdcat as a way to access long options on platforms that did
+ * early bsdtar as a way to access long options on platforms that did
* not support getopt_long() and is preserved here for backwards
* compatibility. (Of course, if I'd started with a custom
* command-line parser from the beginning, I would have had normal
}
/* Search the table for an unambiguous match. */
- for (popt = tar_longopts; popt->name != NULL; popt++) {
+ for (popt = bsdcat_longopts; popt->name != NULL; popt++) {
/* Short-circuit if first chars don't match. */
if (popt->name[0] != bsdcat->getopt_word[0])
continue;
/* Version number of bsdtar */
#undef BSDTAR_VERSION_STRING
+/* Version number of bsdunzip */
+#undef BSDUNZIP_VERSION_STRING
+
/* Define to 1 if the system has the type `ace_t'. */
#undef HAVE_ACE_T
/* Define to 1 if you have the `chroot' function. */
#undef HAVE_CHROOT
+/* cmtime_s function */
+#undef HAVE_CMTIME_S
+
/* Define to 1 if you have the <copyfile.h> header file. */
#undef HAVE_COPYFILE_H
/* Define to 1 if you have the `flistxattr' function. */
#undef HAVE_FLISTXATTR
+/* Define to 1 if you have the `fnmatch' function. */
+#undef HAVE_FNMATCH
+
+/* Define to 1 if you have the <fnmatch.h> header file. */
+#undef HAVE_FNMATCH_H
+
/* Define to 1 if you have the `fork' function. */
#undef HAVE_FORK
/* Define to 1 if you have the `getgrnam_r' function. */
#undef HAVE_GETGRNAM_R
+/* Define to 1 if you have the `getline' function. */
+#undef HAVE_GETLINE
+
/* Define to 1 if you have the `getpid' function. */
#undef HAVE_GETPID
/* Define to 1 if you have the `gmtime_r' function. */
#undef HAVE_GMTIME_R
+/* gmtime_s function */
+#undef HAVE_GMTIME_S
+
/* Define to 1 if you have the <grp.h> header file. */
#undef HAVE_GRP_H
/* Define to 1 if you have the `crypto' library (-lcrypto). */
#undef HAVE_LIBCRYPTO
-/* Define to 1 if you have the `eay32' library (-leay32). */
-#undef HAVE_LIBEAY32
-
-/* Define to 1 if you have the `eay64' library (-leay64). */
-#undef HAVE_LIBEAY64
-
/* Define to 1 if you have the `expat' library (-lexpat). */
#undef HAVE_LIBEXPAT
/* Define to 1 if you have the `zstd' library (-lzstd). */
#undef HAVE_LIBZSTD
+/* Define to 1 if you have the `zstd' library (-lzstd) with compression
+ support. */
+#undef HAVE_LIBZSTD_COMPRESSOR
+
/* Define to 1 if you have the <limits.h> header file. */
#undef HAVE_LIMITS_H
/* Define to 1 if you have the `localtime_r' function. */
#undef HAVE_LOCALTIME_R
+/* localtime_s function */
+#undef HAVE_LOCALTIME_S
+
/* Define to 1 if the system has the type `long long int'. */
#undef HAVE_LONG_LONG_INT
/* Define to 1 if you have the <lz4.h> header file. */
#undef HAVE_LZ4_H
+/* Define to 1 if you have the `LZMA_FILTER_ARM64' macro. */
+#undef HAVE_LZMA_FILTER_ARM64
+
/* Define to 1 if you have the <lzma.h> header file. */
#undef HAVE_LZMA_H
/* Define to 1 if you have the `memmove' function. */
#undef HAVE_MEMMOVE
-/* Define to 1 if you have the <memory.h> header file. */
-#undef HAVE_MEMORY_H
-
/* Define to 1 if you have the `memset' function. */
#undef HAVE_MEMSET
+/* Define to 1 if you have the <minix/config.h> header file. */
+#undef HAVE_MINIX_CONFIG_H
+
/* Define to 1 if you have the `mkdir' function. */
#undef HAVE_MKDIR
/* Define to 1 if you have the <stdint.h> header file. */
#undef HAVE_STDINT_H
+/* Define to 1 if you have the <stdio.h> header file. */
+#undef HAVE_STDIO_H
+
/* Define to 1 if you have the <stdlib.h> header file. */
#undef HAVE_STDLIB_H
/* Define to 1 if you have the `strerror' function. */
#undef HAVE_STRERROR
-/* Define to 1 if you have the `strerror_r' function. */
+/* Define if you have `strerror_r'. */
#undef HAVE_STRERROR_R
/* Define to 1 if you have the `strftime' function. */
/* Define to 1 if you have the <sys/poll.h> header file. */
#undef HAVE_SYS_POLL_H
+/* Define to 1 if you have the <sys/queue.h> header file. */
+#undef HAVE_SYS_QUEUE_H
+
/* Define to 1 if you have the <sys/richacl.h> header file. */
#undef HAVE_SYS_RICHACL_H
/* Define to 1 if you have the <zstd.h> header file. */
#undef HAVE_ZSTD_H
-/* Define to 1 if you have the `_ctime64_s' function. */
-#undef HAVE__CTIME64_S
-
/* Define to 1 if you have the `_fseeki64' function. */
#undef HAVE__FSEEKI64
/* Define to 1 if you have the `_get_timezone' function. */
#undef HAVE__GET_TIMEZONE
-/* Define to 1 if you have the `_gmtime64_s' function. */
-#undef HAVE__GMTIME64_S
-
-/* Define to 1 if you have the `_localtime64_s' function. */
-#undef HAVE__LOCALTIME64_S
-
-/* Define to 1 if you have the `_mkgmtime64' function. */
-#undef HAVE__MKGMTIME64
+/* _mkgmtime function */
+#undef HAVE__MKGMTIME
/* Define as const if the declaration of iconv() needs const. */
#undef ICONV_CONST
/* Define to 1 if PCRE_STATIC needs to be defined. */
#undef PCRE_STATIC
+/* The number of bytes in type int */
+#undef SIZEOF_INT
+
+/* The number of bytes in type long */
+#undef SIZEOF_LONG
+
/* The size of `wchar_t', as computed by sizeof. */
#undef SIZEOF_WCHAR_T
-/* Define to 1 if you have the ANSI C header files. */
+/* Define to 1 if all of the C90 standard headers exist (not just the ones
+ required in a freestanding environment). This macro is provided for
+ backward compatibility; new code need not use it. */
#undef STDC_HEADERS
/* Define to 1 if strerror_r returns char *. */
#undef STRERROR_R_CHAR_P
-/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
-#undef TIME_WITH_SYS_TIME
-
/* Enable extensions on AIX 3, Interix. */
#ifndef _ALL_SOURCE
# undef _ALL_SOURCE
#endif
+/* Enable general extensions on macOS. */
+#ifndef _DARWIN_C_SOURCE
+# undef _DARWIN_C_SOURCE
+#endif
+/* Enable general extensions on Solaris. */
+#ifndef __EXTENSIONS__
+# undef __EXTENSIONS__
+#endif
/* Enable GNU extensions on systems that have them. */
#ifndef _GNU_SOURCE
# undef _GNU_SOURCE
#endif
-/* Enable threading extensions on Solaris. */
+/* Enable X/Open compliant socket functions that do not require linking
+ with -lxnet on HP-UX 11.11. */
+#ifndef _HPUX_ALT_XOPEN_SOCKET_API
+# undef _HPUX_ALT_XOPEN_SOCKET_API
+#endif
+/* Identify the host operating system as Minix.
+ This macro does not affect the system headers' behavior.
+ A future release of Autoconf may stop defining this macro. */
+#ifndef _MINIX
+# undef _MINIX
+#endif
+/* Enable general extensions on NetBSD.
+ Enable NetBSD compatibility extensions on Minix. */
+#ifndef _NETBSD_SOURCE
+# undef _NETBSD_SOURCE
+#endif
+/* Enable OpenBSD compatibility extensions on NetBSD.
+ Oddly enough, this does nothing on OpenBSD. */
+#ifndef _OPENBSD_SOURCE
+# undef _OPENBSD_SOURCE
+#endif
+/* Define to 1 if needed for POSIX-compatible behavior. */
+#ifndef _POSIX_SOURCE
+# undef _POSIX_SOURCE
+#endif
+/* Define to 2 if needed for POSIX-compatible behavior. */
+#ifndef _POSIX_1_SOURCE
+# undef _POSIX_1_SOURCE
+#endif
+/* Enable POSIX-compatible threading on Solaris. */
#ifndef _POSIX_PTHREAD_SEMANTICS
# undef _POSIX_PTHREAD_SEMANTICS
#endif
+/* Enable extensions specified by ISO/IEC TS 18661-5:2014. */
+#ifndef __STDC_WANT_IEC_60559_ATTRIBS_EXT__
+# undef __STDC_WANT_IEC_60559_ATTRIBS_EXT__
+#endif
+/* Enable extensions specified by ISO/IEC TS 18661-1:2014. */
+#ifndef __STDC_WANT_IEC_60559_BFP_EXT__
+# undef __STDC_WANT_IEC_60559_BFP_EXT__
+#endif
+/* Enable extensions specified by ISO/IEC TS 18661-2:2015. */
+#ifndef __STDC_WANT_IEC_60559_DFP_EXT__
+# undef __STDC_WANT_IEC_60559_DFP_EXT__
+#endif
+/* Enable extensions specified by ISO/IEC TS 18661-4:2015. */
+#ifndef __STDC_WANT_IEC_60559_FUNCS_EXT__
+# undef __STDC_WANT_IEC_60559_FUNCS_EXT__
+#endif
+/* Enable extensions specified by ISO/IEC TS 18661-3:2015. */
+#ifndef __STDC_WANT_IEC_60559_TYPES_EXT__
+# undef __STDC_WANT_IEC_60559_TYPES_EXT__
+#endif
+/* Enable extensions specified by ISO/IEC TR 24731-2:2010. */
+#ifndef __STDC_WANT_LIB_EXT2__
+# undef __STDC_WANT_LIB_EXT2__
+#endif
+/* Enable extensions specified by ISO/IEC 24747:2009. */
+#ifndef __STDC_WANT_MATH_SPEC_FUNCS__
+# undef __STDC_WANT_MATH_SPEC_FUNCS__
+#endif
/* Enable extensions on HP NonStop. */
#ifndef _TANDEM_SOURCE
# undef _TANDEM_SOURCE
#endif
-/* Enable general extensions on Solaris. */
-#ifndef __EXTENSIONS__
-# undef __EXTENSIONS__
+/* Enable X/Open extensions. Define to 500 only if necessary
+ to make mbstate_t available. */
+#ifndef _XOPEN_SOURCE
+# undef _XOPEN_SOURCE
#endif
/* Define to '0x0502' for Windows Server 2003 APIs. */
#undef WINVER
-/* Enable large inode numbers on Mac OS X 10.5. */
-#ifndef _DARWIN_USE_64_BIT_INODE
-# define _DARWIN_USE_64_BIT_INODE 1
-#endif
-
/* Number of bits in a file offset, on hosts where this is settable. */
#undef _FILE_OFFSET_BITS
/* Define for large files, on AIX-style hosts. */
#undef _LARGE_FILES
-/* Define to 1 if on MINIX. */
-#undef _MINIX
-
-/* Define to 2 if the system does not provide POSIX.1 features except with
- this defined. */
-#undef _POSIX_1_SOURCE
-
-/* Define to 1 if you need to in order for `stat' and other things to work. */
-#undef _POSIX_SOURCE
-
/* Define for Solaris 2.5.1 so the uint32_t typedef from <sys/synch.h>,
<pthread.h>, or <semaphore.h> is not used. If the typedef were allowed, the
#define below would cause a syntax error. */
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for libarchive 3.5.2.
+# Generated by GNU Autoconf 2.71 for libarchive 3.7.2.
#
# Report bugs to <libarchive-discuss@googlegroups.com>.
#
#
-# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
+# Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation,
+# Inc.
#
#
# This configure script is free software; the Free Software Foundation
# Be more Bourne compatible
DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+as_nop=:
+if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1
+then :
emulate sh
NULLCMD=:
# Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
# is contrary to our usage. Disable this feature.
alias -g '${1+"$@"}'='"$@"'
setopt NO_GLOB_SUBST
-else
+else $as_nop
case `(set -o) 2>/dev/null` in #(
*posix*) :
set -o posix ;; #(
fi
+
+# Reset variables that may have inherited troublesome values from
+# the environment.
+
+# IFS needs to be set, to space, tab, and newline, in precisely that order.
+# (If _AS_PATH_WALK were called with IFS unset, it would have the
+# side effect of setting IFS to empty, thus disabling word splitting.)
+# Quoting is to prevent editors from complaining about space-tab.
as_nl='
'
export as_nl
-# Printing a long string crashes Solaris 7 /usr/bin/printf.
-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-# Prefer a ksh shell builtin over an external printf program on Solaris,
-# but without wasting forks for bash or zsh.
-if test -z "$BASH_VERSION$ZSH_VERSION" \
- && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
- as_echo='print -r --'
- as_echo_n='print -rn --'
-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
- as_echo='printf %s\n'
- as_echo_n='printf %s'
-else
- if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
- as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
- as_echo_n='/usr/ucb/echo -n'
- else
- as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
- as_echo_n_body='eval
- arg=$1;
- case $arg in #(
- *"$as_nl"*)
- expr "X$arg" : "X\\(.*\\)$as_nl";
- arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
- esac;
- expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
- '
- export as_echo_n_body
- as_echo_n='sh -c $as_echo_n_body as_echo'
- fi
- export as_echo_body
- as_echo='sh -c $as_echo_body as_echo'
-fi
+IFS=" "" $as_nl"
+
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# Ensure predictable behavior from utilities with locale-dependent output.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# We cannot yet rely on "unset" to work, but we need these variables
+# to be unset--not just set to an empty or harmless value--now, to
+# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct
+# also avoids known problems related to "unset" and subshell syntax
+# in other old shells (e.g. bash 2.01 and pdksh 5.2.14).
+for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH
+do eval test \${$as_var+y} \
+ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+
+# Ensure that fds 0, 1, and 2 are open.
+if (exec 3>&0) 2>/dev/null; then :; else exec 0</dev/null; fi
+if (exec 3>&1) 2>/dev/null; then :; else exec 1>/dev/null; fi
+if (exec 3>&2) ; then :; else exec 2>/dev/null; fi
# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
+if ${PATH_SEPARATOR+false} :; then
PATH_SEPARATOR=:
(PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
(PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
fi
-# IFS
-# We need space, tab and new line, in precisely that order. Quoting is
-# there to prevent editors from complaining about space-tab.
-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
-# splitting by setting IFS to empty value.)
-IFS=" "" $as_nl"
-
# Find who we are. Look in the path if we contain no directory separator.
as_myself=
case $0 in #((
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ test -r "$as_dir$0" && as_myself=$as_dir$0 && break
done
IFS=$as_save_IFS
as_myself=$0
fi
if test ! -f "$as_myself"; then
- $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+ printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
exit 1
fi
-# Unset variables that we do not need and which cause bugs (e.g. in
-# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
-# suppresses any "Segmentation fault" message there. '((' could
-# trigger a bug in pdksh 5.2.14.
-for as_var in BASH_ENV ENV MAIL MAILPATH
-do eval test x\${$as_var+set} = xset \
- && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
-done
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-LC_ALL=C
-export LC_ALL
-LANGUAGE=C
-export LANGUAGE
-
-# CDPATH.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
# Use a proper internal environment variable to ensure we don't fall
# into an infinite loop, continuously re-executing ourselves.
exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
# Admittedly, this is quite paranoid, since all the known shells bail
# out after a failed `exec'.
-$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
-as_fn_exit 255
+printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2
+exit 255
fi
# We don't want this to propagate to other subprocesses.
{ _as_can_reexec=; unset _as_can_reexec;}
if test "x$CONFIG_SHELL" = x; then
- as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
+ as_bourne_compatible="as_nop=:
+if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1
+then :
emulate sh
NULLCMD=:
# Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
# is contrary to our usage. Disable this feature.
alias -g '\${1+\"\$@\"}'='\"\$@\"'
setopt NO_GLOB_SUBST
-else
+else \$as_nop
case \`(set -o) 2>/dev/null\` in #(
*posix*) :
set -o posix ;; #(
as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
-if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
+if ( set x; as_fn_ret_success y && test x = \"\$1\" )
+then :
-else
+else \$as_nop
exitcode=1; echo positional parameters were not saved.
fi
test x\$exitcode = x0 || exit 1
+blah=\$(echo \$(echo blah))
+test x\"\$blah\" = xblah || exit 1
test -x / || exit 1"
as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
-test \$(( 1 + 1 )) = 2 || exit 1
test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || (
ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO
PATH=/empty FPATH=/empty; export PATH FPATH
test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\
- || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1"
- if (eval "$as_required") 2>/dev/null; then :
+ || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1
+test \$(( 1 + 1 )) = 2 || exit 1"
+ if (eval "$as_required") 2>/dev/null
+then :
as_have_required=yes
-else
+else $as_nop
as_have_required=no
fi
- if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
+ if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null
+then :
-else
+else $as_nop
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
as_found=false
for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
as_found=:
case $as_dir in #(
/*)
for as_base in sh bash ksh sh5; do
# Try only shells that exist, to save several forks.
- as_shell=$as_dir/$as_base
+ as_shell=$as_dir$as_base
if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
- { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
+ as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null
+then :
CONFIG_SHELL=$as_shell as_have_required=yes
- if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
+ if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null
+then :
break 2
fi
fi
esac
as_found=false
done
-$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
- { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
- CONFIG_SHELL=$SHELL as_have_required=yes
-fi; }
IFS=$as_save_IFS
+if $as_found
+then :
+
+else $as_nop
+ if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
+ as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null
+then :
+ CONFIG_SHELL=$SHELL as_have_required=yes
+fi
+fi
- if test "x$CONFIG_SHELL" != x; then :
+ if test "x$CONFIG_SHELL" != x
+then :
export CONFIG_SHELL
# We cannot yet assume a decent shell, so we have to provide a
# neutralization value for shells without unset; and this also
exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
# Admittedly, this is quite paranoid, since all the known shells bail
# out after a failed `exec'.
-$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2
exit 255
fi
- if test x$as_have_required = xno; then :
- $as_echo "$0: This script requires a shell more modern than all"
- $as_echo "$0: the shells that I found on your system."
- if test x${ZSH_VERSION+set} = xset ; then
- $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
- $as_echo "$0: be upgraded to zsh 4.3.4 or later."
+ if test x$as_have_required = xno
+then :
+ printf "%s\n" "$0: This script requires a shell more modern than all"
+ printf "%s\n" "$0: the shells that I found on your system."
+ if test ${ZSH_VERSION+y} ; then
+ printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should"
+ printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later."
else
- $as_echo "$0: Please tell bug-autoconf@gnu.org and
+ printf "%s\n" "$0: Please tell bug-autoconf@gnu.org and
$0: libarchive-discuss@googlegroups.com about your system,
$0: including any error possibly output before this
$0: message. Then install a modern shell, or manually run
}
as_unset=as_fn_unset
+
# as_fn_set_status STATUS
# -----------------------
# Set $? to STATUS, without forking.
as_fn_set_status $1
exit $1
} # as_fn_exit
+# as_fn_nop
+# ---------
+# Do nothing but, unlike ":", preserve the value of $?.
+as_fn_nop ()
+{
+ return $?
+}
+as_nop=as_fn_nop
# as_fn_mkdir_p
# -------------
as_dirs=
while :; do
case $as_dir in #(
- *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+ *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
*) as_qdir=$as_dir;;
esac
as_dirs="'$as_qdir' $as_dirs"
X"$as_dir" : 'X\(//\)[^/]' \| \
X"$as_dir" : 'X\(//\)$' \| \
X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
+printf "%s\n" X"$as_dir" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
s//\1/
q
# advantage of any shell optimizations that allow amortized linear growth over
# repeated appends, instead of the typical quadratic growth present in naive
# implementations.
-if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null
+then :
eval 'as_fn_append ()
{
eval $1+=\$2
}'
-else
+else $as_nop
as_fn_append ()
{
eval $1=\$$1\$2
# Perform arithmetic evaluation on the ARGs, and store the result in the
# global $as_val. Take advantage of shells that can avoid forks. The arguments
# must be portable across $(()) and expr.
-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null
+then :
eval 'as_fn_arith ()
{
as_val=$(( $* ))
}'
-else
+else $as_nop
as_fn_arith ()
{
as_val=`expr "$@" || test $? -eq 1`
}
fi # as_fn_arith
+# as_fn_nop
+# ---------
+# Do nothing but, unlike ":", preserve the value of $?.
+as_fn_nop ()
+{
+ return $?
+}
+as_nop=as_fn_nop
# as_fn_error STATUS ERROR [LINENO LOG_FD]
# ----------------------------------------
as_status=$1; test $as_status -eq 0 && as_status=1
if test "$4"; then
as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
fi
- $as_echo "$as_me: error: $2" >&2
+ printf "%s\n" "$as_me: error: $2" >&2
as_fn_exit $as_status
} # as_fn_error
$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
X"$0" : 'X\(//\)$' \| \
X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/"$0" |
+printf "%s\n" X/"$0" |
sed '/^.*\/\([^/][^/]*\)\/*$/{
s//\1/
q
s/-\n.*//
' >$as_me.lineno &&
chmod +x "$as_me.lineno" ||
- { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
+ { printf "%s\n" "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
# If we had to re-execute with $CONFIG_SHELL, we're ensured to have
# already done that, so ensure we don't try to do so again and fall
exit
}
+
+# Determine whether it's possible to make 'echo' print without a newline.
+# These variables are no longer used directly by Autoconf, but are AC_SUBSTed
+# for compatibility with existing Makefiles.
ECHO_C= ECHO_N= ECHO_T=
case `echo -n x` in #(((((
-n*)
ECHO_N='-n';;
esac
+# For backward compatibility with old third-party macros, we provide
+# the shell variables $as_echo and $as_echo_n. New code should use
+# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively.
+as_echo='printf %s\n'
+as_echo_n='printf %s'
+
+
rm -f conf$$ conf$$.exe conf$$.file
if test -d conf$$.dir; then
rm -f conf$$.dir/conf$$.file
# Identity of this package.
PACKAGE_NAME='libarchive'
PACKAGE_TARNAME='libarchive'
-PACKAGE_VERSION='3.5.2'
-PACKAGE_STRING='libarchive 3.5.2'
+PACKAGE_VERSION='3.7.2'
+PACKAGE_STRING='libarchive 3.7.2'
PACKAGE_BUGREPORT='libarchive-discuss@googlegroups.com'
PACKAGE_URL=''
ac_unique_file="libarchive"
# Factoring default headers for most tests.
ac_includes_default="\
-#include <stdio.h>
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_STAT_H
-# include <sys/stat.h>
+#include <stddef.h>
+#ifdef HAVE_STDIO_H
+# include <stdio.h>
#endif
-#ifdef STDC_HEADERS
+#ifdef HAVE_STDLIB_H
# include <stdlib.h>
-# include <stddef.h>
-#else
-# ifdef HAVE_STDLIB_H
-# include <stdlib.h>
-# endif
#endif
#ifdef HAVE_STRING_H
-# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
-# include <memory.h>
-# endif
# include <string.h>
#endif
-#ifdef HAVE_STRINGS_H
-# include <strings.h>
-#endif
#ifdef HAVE_INTTYPES_H
# include <inttypes.h>
#endif
#ifdef HAVE_STDINT_H
# include <stdint.h>
#endif
+#ifdef HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
#ifdef HAVE_UNISTD_H
# include <unistd.h>
#endif"
+ac_header_c_list=
+ac_func_c_list=
ac_subst_vars='am__EXEEXT_FALSE
am__EXEEXT_TRUE
LTLIBOBJS
+LIBSREQUIRED
INC_FREEBSD_ACL_FALSE
INC_FREEBSD_ACL_TRUE
INC_DARWIN_ACL_FALSE
INC_LINUX_ACL_FALSE
INC_LINUX_ACL_TRUE
LIBOBJS
+GC_SECTIONS
LIBXML2_PC_LIBS
LIBXML2_PC_CFLAGS
PKG_CONFIG_LIBDIR
LIBICONV
INC_BLAKE2_FALSE
INC_BLAKE2_TRUE
+STATIC_BSDUNZIP_FALSE
+STATIC_BSDUNZIP_TRUE
+BUILD_BSDUNZIP_FALSE
+BUILD_BSDUNZIP_TRUE
STATIC_BSDCPIO_FALSE
STATIC_BSDCPIO_TRUE
BUILD_BSDCPIO_FALSE
DUMPBIN
LD
FGREP
+EGREP
+GREP
SED
LIBTOOL
OBJDUMP
DLLTOOL
AS
-EGREP
-GREP
CPP
am__fastdepCC_FALSE
am__fastdepCC_TRUE
build
LIBARCHIVE_VERSION_NUMBER
LIBARCHIVE_VERSION_STRING
+BSDUNZIP_VERSION_STRING
BSDCAT_VERSION_STRING
BSDTAR_VERSION_STRING
BSDCPIO_VERSION_STRING
AM_DEFAULT_VERBOSITY
AM_DEFAULT_V
AM_V
+CSCOPE
+ETAGS
+CTAGS
am__untar
am__tar
AMTAR
enable_bsdtar
enable_bsdcat
enable_bsdcpio
+enable_bsdunzip
with_zlib
with_bz2lib
with_libb2
*) ac_optarg=yes ;;
esac
- # Accept the important Cygnus configure options, so we can diagnose typos.
-
case $ac_dashdash$ac_option in
--)
ac_dashdash=yes ;;
ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
# Reject names that are not valid shell variable names.
expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
- as_fn_error $? "invalid feature name: $ac_useropt"
+ as_fn_error $? "invalid feature name: \`$ac_useropt'"
ac_useropt_orig=$ac_useropt
- ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'`
case $ac_user_opts in
*"
"enable_$ac_useropt"
ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
# Reject names that are not valid shell variable names.
expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
- as_fn_error $? "invalid feature name: $ac_useropt"
+ as_fn_error $? "invalid feature name: \`$ac_useropt'"
ac_useropt_orig=$ac_useropt
- ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'`
case $ac_user_opts in
*"
"enable_$ac_useropt"
ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
# Reject names that are not valid shell variable names.
expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
- as_fn_error $? "invalid package name: $ac_useropt"
+ as_fn_error $? "invalid package name: \`$ac_useropt'"
ac_useropt_orig=$ac_useropt
- ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'`
case $ac_user_opts in
*"
"with_$ac_useropt"
ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
# Reject names that are not valid shell variable names.
expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
- as_fn_error $? "invalid package name: $ac_useropt"
+ as_fn_error $? "invalid package name: \`$ac_useropt'"
ac_useropt_orig=$ac_useropt
- ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'`
case $ac_user_opts in
*"
"with_$ac_useropt"
*)
# FIXME: should be removed in autoconf 3.0.
- $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+ printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2
expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
- $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+ printf "%s\n" "$as_me: WARNING: invalid host type: $ac_option" >&2
: "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
;;
case $enable_option_checking in
no) ;;
fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
- *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
+ *) printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
esac
fi
X"$as_myself" : 'X\(//\)[^/]' \| \
X"$as_myself" : 'X\(//\)$' \| \
X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_myself" |
+printf "%s\n" X"$as_myself" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
s//\1/
q
# 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.5.2 to adapt to many kinds of systems.
+\`configure' configures libarchive 3.7.2 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of libarchive 3.5.2:";;
+ short | recursive ) echo "Configuration of libarchive 3.7.2:";;
esac
cat <<\_ACEOF
--enable-bsdcpio=static static build of bsdcpio
--enable-bsdcpio=shared dynamic build of bsdcpio
--disable-bsdcpio disable build of bsdcpio
+ --enable-bsdunzip enable build of bsdunzip (default)
+ --enable-bsdunzip=static
+ force static build of bsdunzip
+ --enable-bsdunzip=shared
+ force dynamic build of bsdunzip
+ --disable-bsdunzip disable build of bsdunzip
--disable-rpath do not hardcode runtime library paths
--enable-posix-regex-lib
choose what library to use for POSIX regular
case "$ac_dir" in
.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
*)
- ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+ ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'`
# A ".." for each directory in $ac_dir_suffix.
- ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+ ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
case $ac_top_builddir_sub in
"") ac_top_builddir_sub=. ac_top_build_prefix= ;;
*) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
cd "$ac_dir" || { ac_status=$?; continue; }
- # Check for guested configure.
+ # Check for configure.gnu first; this name is used for a wrapper for
+ # Metaconfig's "Configure" on case-insensitive file systems.
if test -f "$ac_srcdir/configure.gnu"; then
echo &&
$SHELL "$ac_srcdir/configure.gnu" --help=recursive
echo &&
$SHELL "$ac_srcdir/configure" --help=recursive
else
- $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+ printf "%s\n" "$as_me: WARNING: no configuration information is in $ac_dir" >&2
fi || ac_status=$?
cd "$ac_pwd" || { ac_status=$?; break; }
done
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-libarchive configure 3.5.2
-generated by GNU Autoconf 2.69
+libarchive configure 3.7.2
+generated by GNU Autoconf 2.71
-Copyright (C) 2012 Free Software Foundation, Inc.
+Copyright (C) 2021 Free Software Foundation, Inc.
This configure script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it.
_ACEOF
ac_fn_c_try_compile ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- rm -f conftest.$ac_objext
+ rm -f conftest.$ac_objext conftest.beam
if { { ac_try="$ac_compile"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
(eval "$ac_compile") 2>conftest.err
ac_status=$?
if test -s conftest.err; then
cat conftest.er1 >&5
mv -f conftest.er1 conftest.err
fi
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } && {
test -z "$ac_c_werror_flag" ||
test ! -s conftest.err
- } && test -s conftest.$ac_objext; then :
+ } && test -s conftest.$ac_objext
+then :
ac_retval=0
-else
- $as_echo "$as_me: failed program was:" >&5
+else $as_nop
+ printf "%s\n" "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_retval=1
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
(eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
ac_status=$?
if test -s conftest.err; then
cat conftest.er1 >&5
mv -f conftest.er1 conftest.err
fi
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } > conftest.i && {
test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
test ! -s conftest.err
- }; then :
+ }
+then :
ac_retval=0
-else
- $as_echo "$as_me: failed program was:" >&5
+else $as_nop
+ printf "%s\n" "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_retval=1
} # ac_fn_c_try_cpp
-# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
-# -------------------------------------------------------
-# Tests whether HEADER exists, giving a warning if it cannot be compiled using
-# the include files in INCLUDES and setting the cache variable VAR
-# accordingly.
-ac_fn_c_check_header_mongrel ()
-{
- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- if eval \${$3+:} false; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
- $as_echo_n "(cached) " >&6
-fi
-eval ac_res=\$$3
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-else
- # Is the header compilable?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
-$as_echo_n "checking $2 usability... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-$4
-#include <$2>
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_header_compiler=yes
-else
- ac_header_compiler=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
-$as_echo "$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
-$as_echo_n "checking $2 presence... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <$2>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
- ac_header_preproc=yes
-else
- ac_header_preproc=no
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
-$as_echo "$ac_header_preproc" >&6; }
-
-# So? What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
- yes:no: )
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
-$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
- ;;
- no:yes:* )
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
-$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5
-$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
-$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5
-$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
-( $as_echo "## -------------------------------------------------- ##
-## Report this to libarchive-discuss@googlegroups.com ##
-## -------------------------------------------------- ##"
- ) | sed "s/^/$as_me: WARNING: /" >&2
- ;;
-esac
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- eval "$3=\$ac_header_compiler"
-fi
-eval ac_res=\$$3
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-fi
- eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} # ac_fn_c_check_header_mongrel
-
-# ac_fn_c_try_run LINENO
-# ----------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
-# that executables *can* be run.
-ac_fn_c_try_run ()
-{
- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- if { { ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_link") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
- { { case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; }; then :
- ac_retval=0
-else
- $as_echo "$as_me: program exited with status $ac_status" >&5
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_retval=$ac_status
-fi
- rm -rf conftest.dSYM conftest_ipa8_conftest.oo
- eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
- as_fn_set_status $ac_retval
-
-} # ac_fn_c_try_run
-
# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
# -------------------------------------------------------
# Tests whether HEADER exists and can be compiled using the include files in
ac_fn_c_check_header_compile ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+printf %s "checking for $2... " >&6; }
+if eval test \${$3+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$4
#include <$2>
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
eval "$3=yes"
-else
+else $as_nop
eval "$3=no"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
eval ac_res=\$$3
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf "%s\n" "$ac_res" >&6; }
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
} # ac_fn_c_check_header_compile
ac_fn_c_try_link ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- rm -f conftest.$ac_objext conftest$ac_exeext
+ rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext
if { { ac_try="$ac_link"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
(eval "$ac_link") 2>conftest.err
ac_status=$?
if test -s conftest.err; then
cat conftest.er1 >&5
mv -f conftest.er1 conftest.err
fi
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } && {
test -z "$ac_c_werror_flag" ||
test ! -s conftest.err
} && test -s conftest$ac_exeext && {
test "$cross_compiling" = yes ||
test -x conftest$ac_exeext
- }; then :
+ }
+then :
ac_retval=0
-else
- $as_echo "$as_me: failed program was:" >&5
+else $as_nop
+ printf "%s\n" "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_retval=1
ac_fn_c_check_func ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+printf %s "checking for $2... " >&6; }
+if eval test \${$3+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
/* Define $2 to an innocuous variant, in case <limits.h> declares $2.
#define $2 innocuous_$2
/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $2 (); below.
- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
- <limits.h> exists even on freestanding compilers. */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
+ which can conflict with char $2 (); below. */
+#include <limits.h>
#undef $2
/* Override any GCC internal prototype to avoid an error.
#endif
int
-main ()
+main (void)
{
return $2 ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
eval "$3=yes"
-else
+else $as_nop
eval "$3=no"
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
fi
eval ac_res=\$$3
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf "%s\n" "$ac_res" >&6; }
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
} # ac_fn_c_check_func
+# ac_fn_c_try_run LINENO
+# ----------------------
+# Try to run conftest.$ac_ext, and return whether this succeeded. Assumes that
+# executables *can* be run.
+ac_fn_c_try_run ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ if { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+printf "%s\n" "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
+ { { case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+printf "%s\n" "$ac_try_echo"; } >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }
+then :
+ ac_retval=0
+else $as_nop
+ printf "%s\n" "$as_me: program exited with status $ac_status" >&5
+ printf "%s\n" "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=$ac_status
+fi
+ rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_run
+
# ac_fn_c_check_type LINENO TYPE VAR INCLUDES
# -------------------------------------------
# Tests whether TYPE exists after having included INCLUDES, setting cache
ac_fn_c_check_type ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+printf %s "checking for $2... " >&6; }
+if eval test \${$3+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
eval "$3=no"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$4
int
-main ()
+main (void)
{
if (sizeof ($2))
return 0;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$4
int
-main ()
+main (void)
{
if (sizeof (($2)))
return 0;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
-else
+else $as_nop
eval "$3=yes"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
eval ac_res=\$$3
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf "%s\n" "$ac_res" >&6; }
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
} # ac_fn_c_check_type
ac_fn_c_check_member ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5
-$as_echo_n "checking for $2.$3... " >&6; }
-if eval \${$4+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5
+printf %s "checking for $2.$3... " >&6; }
+if eval test \${$4+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$5
int
-main ()
+main (void)
{
static $2 ac_aggr;
if (ac_aggr.$3)
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
eval "$4=yes"
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$5
int
-main ()
+main (void)
{
static $2 ac_aggr;
if (sizeof ac_aggr.$3)
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
eval "$4=yes"
-else
+else $as_nop
eval "$4=no"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
eval ac_res=\$$4
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf "%s\n" "$ac_res" >&6; }
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
} # ac_fn_c_check_member
ac_fn_c_find_intX_t ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for int$2_t" >&5
-$as_echo_n "checking for int$2_t... " >&6; }
-if eval \${$3+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for int$2_t" >&5
+printf %s "checking for int$2_t... " >&6; }
+if eval test \${$3+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
eval "$3=no"
# Order is important - never check a type that is potentially smaller
# than half of the expected target width.
$ac_includes_default
enum { N = $2 / 2 - 1 };
int
-main ()
+main (void)
{
static int test_array [1 - 2 * !(0 < ($ac_type) ((((($ac_type) 1 << N) << N) - 1) * 2 + 1))];
test_array [0] = 0;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$ac_includes_default
enum { N = $2 / 2 - 1 };
int
-main ()
+main (void)
{
static int test_array [1 - 2 * !(($ac_type) ((((($ac_type) 1 << N) << N) - 1) * 2 + 1)
< ($ac_type) ((((($ac_type) 1 << N) << N) - 1) * 2 + 2))];
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
-else
+else $as_nop
case $ac_type in #(
int$2_t) :
eval "$3=yes" ;; #(
eval "$3=\$ac_type" ;;
esac
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- if eval test \"x\$"$3"\" = x"no"; then :
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+ if eval test \"x\$"$3"\" = x"no"
+then :
-else
+else $as_nop
break
fi
done
fi
eval ac_res=\$$3
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf "%s\n" "$ac_res" >&6; }
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
} # ac_fn_c_find_intX_t
ac_fn_c_find_uintX_t ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for uint$2_t" >&5
-$as_echo_n "checking for uint$2_t... " >&6; }
-if eval \${$3+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for uint$2_t" >&5
+printf %s "checking for uint$2_t... " >&6; }
+if eval test \${$3+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
eval "$3=no"
# Order is important - never check a type that is potentially smaller
# than half of the expected target width.
/* end confdefs.h. */
$ac_includes_default
int
-main ()
+main (void)
{
static int test_array [1 - 2 * !((($ac_type) -1 >> ($2 / 2 - 1)) >> ($2 / 2 - 1) == 3)];
test_array [0] = 0;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
case $ac_type in #(
uint$2_t) :
eval "$3=yes" ;; #(
eval "$3=\$ac_type" ;;
esac
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- if eval test \"x\$"$3"\" = x"no"; then :
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+ if eval test \"x\$"$3"\" = x"no"
+then :
-else
+else $as_nop
break
fi
done
fi
eval ac_res=\$$3
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf "%s\n" "$ac_res" >&6; }
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
} # ac_fn_c_find_uintX_t
-# ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES
-# ---------------------------------------------
+# ac_fn_check_decl LINENO SYMBOL VAR INCLUDES EXTRA-OPTIONS FLAG-VAR
+# ------------------------------------------------------------------
# Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR
-# accordingly.
-ac_fn_c_check_decl ()
+# accordingly. Pass EXTRA-OPTIONS to the compiler, using FLAG-VAR.
+ac_fn_check_decl ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
as_decl_name=`echo $2|sed 's/ *(.*//'`
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5
+printf %s "checking whether $as_decl_name is declared... " >&6; }
+if eval test \${$3+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'`
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5
-$as_echo_n "checking whether $as_decl_name is declared... " >&6; }
-if eval \${$3+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ eval ac_save_FLAGS=\$$6
+ as_fn_append $6 " $5"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$4
int
-main ()
+main (void)
{
#ifndef $as_decl_name
#ifdef __cplusplus
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
eval "$3=yes"
-else
+else $as_nop
eval "$3=no"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+ eval $6=\$ac_save_FLAGS
+
fi
eval ac_res=\$$3
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf "%s\n" "$ac_res" >&6; }
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-} # ac_fn_c_check_decl
+} # ac_fn_check_decl
# ac_fn_c_compute_int LINENO EXPR VAR INCLUDES
# --------------------------------------------
/* end confdefs.h. */
$4
int
-main ()
+main (void)
{
static int test_array [1 - 2 * !(($2) >= 0)];
test_array [0] = 0;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_lo=0 ac_mid=0
while :; do
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$4
int
-main ()
+main (void)
{
static int test_array [1 - 2 * !(($2) <= $ac_mid)];
test_array [0] = 0;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_hi=$ac_mid; break
-else
+else $as_nop
as_fn_arith $ac_mid + 1 && ac_lo=$as_val
if test $ac_lo -le $ac_mid; then
ac_lo= ac_hi=
fi
as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
done
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$4
int
-main ()
+main (void)
{
static int test_array [1 - 2 * !(($2) < 0)];
test_array [0] = 0;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_hi=-1 ac_mid=-1
while :; do
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$4
int
-main ()
+main (void)
{
static int test_array [1 - 2 * !(($2) >= $ac_mid)];
test_array [0] = 0;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_lo=$ac_mid; break
-else
+else $as_nop
as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val
if test $ac_mid -le $ac_hi; then
ac_lo= ac_hi=
fi
as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
done
-else
+else $as_nop
ac_lo= ac_hi=
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
# Binary search between lo and hi bounds.
while test "x$ac_lo" != "x$ac_hi"; do
as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val
/* end confdefs.h. */
$4
int
-main ()
+main (void)
{
static int test_array [1 - 2 * !(($2) <= $ac_mid)];
test_array [0] = 0;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_hi=$ac_mid
-else
+else $as_nop
as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
done
case $ac_lo in #((
?*) eval "$3=\$ac_lo"; ac_retval=0 ;;
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$4
-static long int longval () { return $2; }
-static unsigned long int ulongval () { return $2; }
+static long int longval (void) { return $2; }
+static unsigned long int ulongval (void) { return $2; }
#include <stdio.h>
#include <stdlib.h>
int
-main ()
+main (void)
{
FILE *f = fopen ("conftest.val", "w");
return 0;
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
echo >>conftest.val; read $3 <conftest.val; ac_retval=0
-else
+else $as_nop
ac_retval=1
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
as_fn_set_status $ac_retval
} # ac_fn_c_compute_int
+ac_configure_args_raw=
+for ac_arg
+do
+ case $ac_arg in
+ *\'*)
+ ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ esac
+ as_fn_append ac_configure_args_raw " '$ac_arg'"
+done
+
+case $ac_configure_args_raw in
+ *$as_nl*)
+ ac_safe_unquote= ;;
+ *)
+ ac_unsafe_z='|&;<>()$`\\"*?[ '' ' # This string ends in space, tab.
+ ac_unsafe_a="$ac_unsafe_z#~"
+ ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g"
+ ac_configure_args_raw=` printf "%s\n" "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;;
+esac
+
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.5.2, which was
-generated by GNU Autoconf 2.69. Invocation command line was
+It was created by libarchive $as_me 3.7.2, which was
+generated by GNU Autoconf 2.71. Invocation command line was
- $ $0 $@
+ $ $0$ac_configure_args_raw
_ACEOF
exec 5>>config.log
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- $as_echo "PATH: $as_dir"
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ printf "%s\n" "PATH: $as_dir"
done
IFS=$as_save_IFS
| -silent | --silent | --silen | --sile | --sil)
continue ;;
*\'*)
- ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
esac
case $ac_pass in
1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
# WARNING: Use '\'' to represent an apostrophe within the trap.
# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
trap 'exit_status=$?
+ # Sanitize IFS.
+ IFS=" "" $as_nl"
# Save into config.log some information that might help in debugging.
{
echo
- $as_echo "## ---------------- ##
+ printf "%s\n" "## ---------------- ##
## Cache variables. ##
## ---------------- ##"
echo
case $ac_val in #(
*${as_nl}*)
case $ac_var in #(
- *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+ *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
esac
case $ac_var in #(
_ | IFS | as_nl) ;; #(
)
echo
- $as_echo "## ----------------- ##
+ printf "%s\n" "## ----------------- ##
## Output variables. ##
## ----------------- ##"
echo
do
eval ac_val=\$$ac_var
case $ac_val in
- *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+ *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
esac
- $as_echo "$ac_var='\''$ac_val'\''"
+ printf "%s\n" "$ac_var='\''$ac_val'\''"
done | sort
echo
if test -n "$ac_subst_files"; then
- $as_echo "## ------------------- ##
+ printf "%s\n" "## ------------------- ##
## File substitutions. ##
## ------------------- ##"
echo
do
eval ac_val=\$$ac_var
case $ac_val in
- *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+ *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
esac
- $as_echo "$ac_var='\''$ac_val'\''"
+ printf "%s\n" "$ac_var='\''$ac_val'\''"
done | sort
echo
fi
if test -s confdefs.h; then
- $as_echo "## ----------- ##
+ printf "%s\n" "## ----------- ##
## confdefs.h. ##
## ----------- ##"
echo
echo
fi
test "$ac_signal" != 0 &&
- $as_echo "$as_me: caught signal $ac_signal"
- $as_echo "$as_me: exit $exit_status"
+ printf "%s\n" "$as_me: caught signal $ac_signal"
+ printf "%s\n" "$as_me: exit $exit_status"
} >&5
rm -f core *.core core.conftest.* &&
rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
# confdefs.h avoids OS command line length limits that DEFS can exceed.
rm -f -r conftest* confdefs.h
-$as_echo "/* confdefs.h */" > confdefs.h
+printf "%s\n" "/* confdefs.h */" > confdefs.h
# Predefined preprocessor variables.
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_NAME "$PACKAGE_NAME"
-_ACEOF
+printf "%s\n" "#define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
-_ACEOF
+printf "%s\n" "#define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_VERSION "$PACKAGE_VERSION"
-_ACEOF
+printf "%s\n" "#define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_STRING "$PACKAGE_STRING"
-_ACEOF
+printf "%s\n" "#define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
-_ACEOF
+printf "%s\n" "#define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_URL "$PACKAGE_URL"
-_ACEOF
+printf "%s\n" "#define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h
# Let the site file select an alternate cache file if it wants to.
# Prefer an explicitly selected file to automatically selected ones.
-ac_site_file1=NONE
-ac_site_file2=NONE
if test -n "$CONFIG_SITE"; then
- # We do not want a PATH search for config.site.
- case $CONFIG_SITE in #((
- -*) ac_site_file1=./$CONFIG_SITE;;
- */*) ac_site_file1=$CONFIG_SITE;;
- *) ac_site_file1=./$CONFIG_SITE;;
- esac
+ ac_site_files="$CONFIG_SITE"
elif test "x$prefix" != xNONE; then
- ac_site_file1=$prefix/share/config.site
- ac_site_file2=$prefix/etc/config.site
+ ac_site_files="$prefix/share/config.site $prefix/etc/config.site"
else
- ac_site_file1=$ac_default_prefix/share/config.site
- ac_site_file2=$ac_default_prefix/etc/config.site
+ ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
fi
-for ac_site_file in "$ac_site_file1" "$ac_site_file2"
+
+for ac_site_file in $ac_site_files
do
- test "x$ac_site_file" = xNONE && continue
- if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
-$as_echo "$as_me: loading site script $ac_site_file" >&6;}
+ case $ac_site_file in #(
+ */*) :
+ ;; #(
+ *) :
+ ac_site_file=./$ac_site_file ;;
+esac
+ if test -f "$ac_site_file" && test -r "$ac_site_file"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
+printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;}
sed 's/^/| /' "$ac_site_file" >&5
. "$ac_site_file" \
- || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "failed to load site script $ac_site_file
See \`config.log' for more details" "$LINENO" 5; }
fi
# Some versions of bash will fail to source /dev/null (special files
# actually), so we avoid doing that. DJGPP emulates it as a regular file.
if test /dev/null != "$cache_file" && test -f "$cache_file"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
-$as_echo "$as_me: loading cache $cache_file" >&6;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
+printf "%s\n" "$as_me: loading cache $cache_file" >&6;}
case $cache_file in
[\\/]* | ?:[\\/]* ) . "$cache_file";;
*) . "./$cache_file";;
esac
fi
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
-$as_echo "$as_me: creating cache $cache_file" >&6;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
+printf "%s\n" "$as_me: creating cache $cache_file" >&6;}
>$cache_file
fi
-# Check that the precious variables saved in the cache have kept the same
-# value.
-ac_cache_corrupted=false
-for ac_var in $ac_precious_vars; do
- eval ac_old_set=\$ac_cv_env_${ac_var}_set
- eval ac_new_set=\$ac_env_${ac_var}_set
- eval ac_old_val=\$ac_cv_env_${ac_var}_value
- eval ac_new_val=\$ac_env_${ac_var}_value
- case $ac_old_set,$ac_new_set in
- set,)
- { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
-$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
- ac_cache_corrupted=: ;;
- ,set)
- { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
-$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
- ac_cache_corrupted=: ;;
- ,);;
- *)
- if test "x$ac_old_val" != "x$ac_new_val"; then
- # differences in whitespace do not lead to failure.
- ac_old_val_w=`echo x $ac_old_val`
- ac_new_val_w=`echo x $ac_new_val`
- if test "$ac_old_val_w" != "$ac_new_val_w"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
-$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
- ac_cache_corrupted=:
- else
- { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
-$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
- eval $ac_var=\$ac_old_val
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5
-$as_echo "$as_me: former value: \`$ac_old_val'" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5
-$as_echo "$as_me: current value: \`$ac_new_val'" >&2;}
- fi;;
+# Test code for whether the C compiler supports C89 (global declarations)
+ac_c_conftest_c89_globals='
+/* Does the compiler advertise C89 conformance?
+ Do not test the value of __STDC__, because some compilers set it to 0
+ while being otherwise adequately conformant. */
+#if !defined __STDC__
+# error "Compiler does not advertise C89 conformance"
+#endif
+
+#include <stddef.h>
+#include <stdarg.h>
+struct stat;
+/* Most of the following tests are stolen from RCS 5.7 src/conf.sh. */
+struct buf { int x; };
+struct buf * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+ char **p;
+ int i;
+{
+ return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+ char *s;
+ va_list v;
+ va_start (v,p);
+ s = g (p, va_arg (v,int));
+ va_end (v);
+ return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
+ function prototypes and stuff, but not \xHH hex character constants.
+ These do not provoke an error unfortunately, instead are silently treated
+ as an "x". The following induces an error, until -std is added to get
+ proper ANSI mode. Curiously \x00 != x always comes out true, for an
+ array size at least. It is necessary to write \x00 == 0 to get something
+ that is true only with -std. */
+int osf4_cc_array ['\''\x00'\'' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+ inside strings and character constants. */
+#define FOO(x) '\''x'\''
+int xlc6_cc_array[FOO(a) == '\''x'\'' ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, int *(*)(struct buf *, struct stat *, int),
+ int, int);'
+
+# Test code for whether the C compiler supports C89 (body of main).
+ac_c_conftest_c89_main='
+ok |= (argc == 0 || f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]);
+'
+
+# Test code for whether the C compiler supports C99 (global declarations)
+ac_c_conftest_c99_globals='
+// Does the compiler advertise C99 conformance?
+#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L
+# error "Compiler does not advertise C99 conformance"
+#endif
+
+#include <stdbool.h>
+extern int puts (const char *);
+extern int printf (const char *, ...);
+extern int dprintf (int, const char *, ...);
+extern void *malloc (size_t);
+
+// Check varargs macros. These examples are taken from C99 6.10.3.5.
+// dprintf is used instead of fprintf to avoid needing to declare
+// FILE and stderr.
+#define debug(...) dprintf (2, __VA_ARGS__)
+#define showlist(...) puts (#__VA_ARGS__)
+#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__))
+static void
+test_varargs_macros (void)
+{
+ int x = 1234;
+ int y = 5678;
+ debug ("Flag");
+ debug ("X = %d\n", x);
+ showlist (The first, second, and third items.);
+ report (x>y, "x is %d but y is %d", x, y);
+}
+
+// Check long long types.
+#define BIG64 18446744073709551615ull
+#define BIG32 4294967295ul
+#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0)
+#if !BIG_OK
+ #error "your preprocessor is broken"
+#endif
+#if BIG_OK
+#else
+ #error "your preprocessor is broken"
+#endif
+static long long int bignum = -9223372036854775807LL;
+static unsigned long long int ubignum = BIG64;
+
+struct incomplete_array
+{
+ int datasize;
+ double data[];
+};
+
+struct named_init {
+ int number;
+ const wchar_t *name;
+ double average;
+};
+
+typedef const char *ccp;
+
+static inline int
+test_restrict (ccp restrict text)
+{
+ // See if C++-style comments work.
+ // Iterate through items via the restricted pointer.
+ // Also check for declarations in for loops.
+ for (unsigned int i = 0; *(text+i) != '\''\0'\''; ++i)
+ continue;
+ return 0;
+}
+
+// Check varargs and va_copy.
+static bool
+test_varargs (const char *format, ...)
+{
+ va_list args;
+ va_start (args, format);
+ va_list args_copy;
+ va_copy (args_copy, args);
+
+ const char *str = "";
+ int number = 0;
+ float fnumber = 0;
+
+ while (*format)
+ {
+ switch (*format++)
+ {
+ case '\''s'\'': // string
+ str = va_arg (args_copy, const char *);
+ break;
+ case '\''d'\'': // int
+ number = va_arg (args_copy, int);
+ break;
+ case '\''f'\'': // float
+ fnumber = va_arg (args_copy, double);
+ break;
+ default:
+ break;
+ }
+ }
+ va_end (args_copy);
+ va_end (args);
+
+ return *str && number && fnumber;
+}
+'
+
+# Test code for whether the C compiler supports C99 (body of main).
+ac_c_conftest_c99_main='
+ // Check bool.
+ _Bool success = false;
+ success |= (argc != 0);
+
+ // Check restrict.
+ if (test_restrict ("String literal") == 0)
+ success = true;
+ char *restrict newvar = "Another string";
+
+ // Check varargs.
+ success &= test_varargs ("s, d'\'' f .", "string", 65, 34.234);
+ test_varargs_macros ();
+
+ // Check flexible array members.
+ struct incomplete_array *ia =
+ malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10));
+ ia->datasize = 10;
+ for (int i = 0; i < ia->datasize; ++i)
+ ia->data[i] = i * 1.234;
+
+ // Check named initializers.
+ struct named_init ni = {
+ .number = 34,
+ .name = L"Test wide string",
+ .average = 543.34343,
+ };
+
+ ni.number = 58;
+
+ int dynamic_array[ni.number];
+ dynamic_array[0] = argv[0][0];
+ dynamic_array[ni.number - 1] = 543;
+
+ // work around unused variable warnings
+ ok |= (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == '\''x'\''
+ || dynamic_array[ni.number - 1] != 543);
+'
+
+# Test code for whether the C compiler supports C11 (global declarations)
+ac_c_conftest_c11_globals='
+// Does the compiler advertise C11 conformance?
+#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112L
+# error "Compiler does not advertise C11 conformance"
+#endif
+
+// Check _Alignas.
+char _Alignas (double) aligned_as_double;
+char _Alignas (0) no_special_alignment;
+extern char aligned_as_int;
+char _Alignas (0) _Alignas (int) aligned_as_int;
+
+// Check _Alignof.
+enum
+{
+ int_alignment = _Alignof (int),
+ int_array_alignment = _Alignof (int[100]),
+ char_alignment = _Alignof (char)
+};
+_Static_assert (0 < -_Alignof (int), "_Alignof is signed");
+
+// Check _Noreturn.
+int _Noreturn does_not_return (void) { for (;;) continue; }
+
+// Check _Static_assert.
+struct test_static_assert
+{
+ int x;
+ _Static_assert (sizeof (int) <= sizeof (long int),
+ "_Static_assert does not work in struct");
+ long int y;
+};
+
+// Check UTF-8 literals.
+#define u8 syntax error!
+char const utf8_literal[] = u8"happens to be ASCII" "another string";
+
+// Check duplicate typedefs.
+typedef long *long_ptr;
+typedef long int *long_ptr;
+typedef long_ptr long_ptr;
+
+// Anonymous structures and unions -- taken from C11 6.7.2.1 Example 1.
+struct anonymous
+{
+ union {
+ struct { int i; int j; };
+ struct { int k; long int l; } w;
+ };
+ int m;
+} v1;
+'
+
+# Test code for whether the C compiler supports C11 (body of main).
+ac_c_conftest_c11_main='
+ _Static_assert ((offsetof (struct anonymous, i)
+ == offsetof (struct anonymous, w.k)),
+ "Anonymous union alignment botch");
+ v1.i = 2;
+ v1.w.k = 5;
+ ok |= v1.i != 5;
+'
+
+# Test code for whether the C compiler supports C11 (complete).
+ac_c_conftest_c11_program="${ac_c_conftest_c89_globals}
+${ac_c_conftest_c99_globals}
+${ac_c_conftest_c11_globals}
+
+int
+main (int argc, char **argv)
+{
+ int ok = 0;
+ ${ac_c_conftest_c89_main}
+ ${ac_c_conftest_c99_main}
+ ${ac_c_conftest_c11_main}
+ return ok;
+}
+"
+
+# Test code for whether the C compiler supports C99 (complete).
+ac_c_conftest_c99_program="${ac_c_conftest_c89_globals}
+${ac_c_conftest_c99_globals}
+
+int
+main (int argc, char **argv)
+{
+ int ok = 0;
+ ${ac_c_conftest_c89_main}
+ ${ac_c_conftest_c99_main}
+ return ok;
+}
+"
+
+# Test code for whether the C compiler supports C89 (complete).
+ac_c_conftest_c89_program="${ac_c_conftest_c89_globals}
+
+int
+main (int argc, char **argv)
+{
+ int ok = 0;
+ ${ac_c_conftest_c89_main}
+ return ok;
+}
+"
+
+as_fn_append ac_header_c_list " stdio.h stdio_h HAVE_STDIO_H"
+as_fn_append ac_header_c_list " stdlib.h stdlib_h HAVE_STDLIB_H"
+as_fn_append ac_header_c_list " string.h string_h HAVE_STRING_H"
+as_fn_append ac_header_c_list " inttypes.h inttypes_h HAVE_INTTYPES_H"
+as_fn_append ac_header_c_list " stdint.h stdint_h HAVE_STDINT_H"
+as_fn_append ac_header_c_list " strings.h strings_h HAVE_STRINGS_H"
+as_fn_append ac_header_c_list " sys/stat.h sys_stat_h HAVE_SYS_STAT_H"
+as_fn_append ac_header_c_list " sys/types.h sys_types_h HAVE_SYS_TYPES_H"
+as_fn_append ac_header_c_list " unistd.h unistd_h HAVE_UNISTD_H"
+as_fn_append ac_header_c_list " wchar.h wchar_h HAVE_WCHAR_H"
+as_fn_append ac_header_c_list " minix/config.h minix_config_h HAVE_MINIX_CONFIG_H"
+as_fn_append ac_header_c_list " sys/time.h sys_time_h HAVE_SYS_TIME_H"
+as_fn_append ac_func_c_list " vprintf HAVE_VPRINTF"
+
+# Auxiliary files required by this configure script.
+ac_aux_files="config.rpath ltmain.sh compile config.guess config.sub missing install-sh"
+
+# Locations in which to look for auxiliary files.
+ac_aux_dir_candidates="${srcdir}/build/autoconf"
+
+# Search for a directory containing all of the required auxiliary files,
+# $ac_aux_files, from the $PATH-style list $ac_aux_dir_candidates.
+# If we don't find one directory that contains all the files we need,
+# we report the set of missing files from the *first* directory in
+# $ac_aux_dir_candidates and give up.
+ac_missing_aux_files=""
+ac_first_candidate=:
+printf "%s\n" "$as_me:${as_lineno-$LINENO}: looking for aux files: $ac_aux_files" >&5
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_found=false
+for as_dir in $ac_aux_dir_candidates
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ as_found=:
+
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: trying $as_dir" >&5
+ ac_aux_dir_found=yes
+ ac_install_sh=
+ for ac_aux in $ac_aux_files
+ do
+ # As a special case, if "install-sh" is required, that requirement
+ # can be satisfied by any of "install-sh", "install.sh", or "shtool",
+ # and $ac_install_sh is set appropriately for whichever one is found.
+ if test x"$ac_aux" = x"install-sh"
+ then
+ if test -f "${as_dir}install-sh"; then
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install-sh found" >&5
+ ac_install_sh="${as_dir}install-sh -c"
+ elif test -f "${as_dir}install.sh"; then
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install.sh found" >&5
+ ac_install_sh="${as_dir}install.sh -c"
+ elif test -f "${as_dir}shtool"; then
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}shtool found" >&5
+ ac_install_sh="${as_dir}shtool install -c"
+ else
+ ac_aux_dir_found=no
+ if $ac_first_candidate; then
+ ac_missing_aux_files="${ac_missing_aux_files} install-sh"
+ else
+ break
+ fi
+ fi
+ else
+ if test -f "${as_dir}${ac_aux}"; then
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}${ac_aux} found" >&5
+ else
+ ac_aux_dir_found=no
+ if $ac_first_candidate; then
+ ac_missing_aux_files="${ac_missing_aux_files} ${ac_aux}"
+ else
+ break
+ fi
+ fi
+ fi
+ done
+ if test "$ac_aux_dir_found" = yes; then
+ ac_aux_dir="$as_dir"
+ break
+ fi
+ ac_first_candidate=false
+
+ as_found=false
+done
+IFS=$as_save_IFS
+if $as_found
+then :
+
+else $as_nop
+ as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5
+fi
+
+
+# These three variables are undocumented and unsupported,
+# and are intended to be withdrawn in a future Autoconf release.
+# They can cause serious problems if a builder's source tree is in a directory
+# whose full name contains unusual characters.
+if test -f "${ac_aux_dir}config.guess"; then
+ ac_config_guess="$SHELL ${ac_aux_dir}config.guess"
+fi
+if test -f "${ac_aux_dir}config.sub"; then
+ ac_config_sub="$SHELL ${ac_aux_dir}config.sub"
+fi
+if test -f "$ac_aux_dir/configure"; then
+ ac_configure="$SHELL ${ac_aux_dir}configure"
+fi
+
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in $ac_precious_vars; do
+ eval ac_old_set=\$ac_cv_env_${ac_var}_set
+ eval ac_new_set=\$ac_env_${ac_var}_set
+ eval ac_old_val=\$ac_cv_env_${ac_var}_value
+ eval ac_new_val=\$ac_env_${ac_var}_value
+ case $ac_old_set,$ac_new_set in
+ set,)
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+printf "%s\n" "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+ ac_cache_corrupted=: ;;
+ ,set)
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
+printf "%s\n" "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+ ac_cache_corrupted=: ;;
+ ,);;
+ *)
+ if test "x$ac_old_val" != "x$ac_new_val"; then
+ # differences in whitespace do not lead to failure.
+ ac_old_val_w=`echo x $ac_old_val`
+ ac_new_val_w=`echo x $ac_new_val`
+ if test "$ac_old_val_w" != "$ac_new_val_w"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
+printf "%s\n" "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+ ac_cache_corrupted=:
+ else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
+printf "%s\n" "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
+ eval $ac_var=\$ac_old_val
+ fi
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5
+printf "%s\n" "$as_me: former value: \`$ac_old_val'" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5
+printf "%s\n" "$as_me: current value: \`$ac_new_val'" >&2;}
+ fi;;
esac
# Pass precious variables to config.status.
if test "$ac_new_set" = set; then
case $ac_new_val in
- *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+ *\'*) ac_arg=$ac_var=`printf "%s\n" "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
*) ac_arg=$ac_var=$ac_new_val ;;
esac
case " $ac_configure_args " in
fi
done
if $ac_cache_corrupted; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
-$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
- as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
+printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;}
+ as_fn_error $? "run \`${MAKE-make} distclean' and/or \`rm $cache_file'
+ and start over" "$LINENO" 5
fi
## -------------------- ##
## Main body of script. ##
# Make sure the srcdir contains "libarchive" directory
# Use auxiliary subscripts from this subdirectory (cleans up root)
-ac_aux_dir=
-for ac_dir in build/autoconf "$srcdir"/build/autoconf; do
- if test -f "$ac_dir/install-sh"; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/install-sh -c"
- break
- elif test -f "$ac_dir/install.sh"; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/install.sh -c"
- break
- elif test -f "$ac_dir/shtool"; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/shtool install -c"
- break
- fi
-done
-if test -z "$ac_aux_dir"; then
- as_fn_error $? "cannot find install-sh, install.sh, or shtool in build/autoconf \"$srcdir\"/build/autoconf" "$LINENO" 5
-fi
-
-# These three variables are undocumented and unsupported,
-# and are intended to be withdrawn in a future Autoconf release.
-# They can cause serious problems if a builder's source tree is in a directory
-# whose full name contains unusual characters.
-ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var.
-ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var.
-ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
-
# M4 scripts
# Must follow AC_CONFIG macros above...
am__api_version='1.16'
-# Find a good install program. We prefer a C program (faster),
+
+
+ # Find a good install program. We prefer a C program (faster),
# so one script is as good as another. But avoid the broken or
# incompatible versions:
# SysV /etc/install, /usr/sbin/install
# OS/2's system install, which has a completely different semantic
# ./install, which can be erroneously created by make from ./install.sh.
# Reject install programs that cannot install multiple files.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
-$as_echo_n "checking for a BSD-compatible install... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
+printf %s "checking for a BSD-compatible install... " >&6; }
if test -z "$INSTALL"; then
-if ${ac_cv_path_install+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+if test ${ac_cv_path_install+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- # Account for people who put trailing slashes in PATH elements.
-case $as_dir/ in #((
- ./ | .// | /[cC]/* | \
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ # Account for fact that we put trailing slashes in our PATH walk.
+case $as_dir in #((
+ ./ | /[cC]/* | \
/etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
/usr/ucb/* ) ;;
# by default.
for ac_prog in ginstall scoinst install; do
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext"; then
if test $ac_prog = install &&
- grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ grep dspmsg "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
# AIX install. It has an incompatible calling convention.
:
elif test $ac_prog = install &&
- grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ grep pwplus "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
# program-specific install script used by HP pwplus--don't use.
:
else
echo one > conftest.one
echo two > conftest.two
mkdir conftest.dir
- if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
+ if "$as_dir$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir/" &&
test -s conftest.one && test -s conftest.two &&
test -s conftest.dir/conftest.one &&
test -s conftest.dir/conftest.two
then
- ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+ ac_cv_path_install="$as_dir$ac_prog$ac_exec_ext -c"
break 3
fi
fi
rm -rf conftest.one conftest.two conftest.dir
fi
- if test "${ac_cv_path_install+set}" = set; then
+ if test ${ac_cv_path_install+y}; then
INSTALL=$ac_cv_path_install
else
# As a last resort, use the slow shell script. Don't cache a
INSTALL=$ac_install_sh
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
-$as_echo "$INSTALL" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
+printf "%s\n" "$INSTALL" >&6; }
# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
# It thinks the first close brace ends the variable substitution.
test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
-$as_echo_n "checking whether build environment is sane... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
+printf %s "checking whether build environment is sane... " >&6; }
# Reject unsafe characters in $srcdir or the absolute working directory
# name. Accept space and tab only in the latter.
am_lf='
as_fn_error $? "newly created file is older than distributed files!
Check your system clock" "$LINENO" 5
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
# If we didn't sleep, we still need to ensure time stamps of config.status and
# generated files are strictly newer.
am_sleep_pid=
# Double any \ or $.
# By default was `s,x,x', remove it if useless.
ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
-program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
+program_transform_name=`printf "%s\n" "$program_transform_name" | sed "$ac_script"`
+
# Expand $ac_aux_dir to an absolute path.
am_aux_dir=`cd "$ac_aux_dir" && pwd`
-if test x"${MISSING+set}" != xset; then
- case $am_aux_dir in
- *\ * | *\ *)
- MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
- *)
- MISSING="\${SHELL} $am_aux_dir/missing" ;;
- esac
+
+ if test x"${MISSING+set}" != xset; then
+ MISSING="\${SHELL} '$am_aux_dir/missing'"
fi
# Use eval to expand $SHELL
if eval "$MISSING --is-lightweight"; then
am_missing_run="$MISSING "
else
am_missing_run=
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5
-$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5
+printf "%s\n" "$as_me: WARNING: 'missing' script is too old or missing" >&2;}
fi
if test x"${install_sh+set}" != xset; then
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
set dummy ${ac_tool_prefix}strip; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_STRIP+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_STRIP+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$STRIP"; then
ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_STRIP="${ac_tool_prefix}strip"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
STRIP=$ac_cv_prog_STRIP
if test -n "$STRIP"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
-$as_echo "$STRIP" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
+printf "%s\n" "$STRIP" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
ac_ct_STRIP=$STRIP
# Extract the first word of "strip", so it can be a program name with args.
set dummy strip; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_STRIP+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$ac_ct_STRIP"; then
ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_STRIP="strip"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
if test -n "$ac_ct_STRIP"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
-$as_echo "$ac_ct_STRIP" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
+printf "%s\n" "$ac_ct_STRIP" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test "x$ac_ct_STRIP" = x; then
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
STRIP=$ac_ct_STRIP
fi
INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5
-$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a race-free mkdir -p" >&5
+printf %s "checking for a race-free mkdir -p... " >&6; }
if test -z "$MKDIR_P"; then
- if ${ac_cv_path_mkdir+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ if test ${ac_cv_path_mkdir+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_prog in mkdir gmkdir; do
for ac_exec_ext in '' $ac_executable_extensions; do
- as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue
- case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
- 'mkdir (GNU coreutils) '* | \
- 'mkdir (coreutils) '* | \
+ as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext" || continue
+ case `"$as_dir$ac_prog$ac_exec_ext" --version 2>&1` in #(
+ 'mkdir ('*'coreutils) '* | \
+ 'BusyBox '* | \
'mkdir (fileutils) '4.1*)
- ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
+ ac_cv_path_mkdir=$as_dir$ac_prog$ac_exec_ext
break 3;;
esac
done
fi
test -d ./--version && rmdir ./--version
- if test "${ac_cv_path_mkdir+set}" = set; then
+ if test ${ac_cv_path_mkdir+y}; then
MKDIR_P="$ac_cv_path_mkdir -p"
else
# As a last resort, use the slow shell script. Don't cache a
MKDIR_P="$ac_install_sh -d"
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
-$as_echo "$MKDIR_P" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
+printf "%s\n" "$MKDIR_P" >&6; }
for ac_prog in gawk mawk nawk awk
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_AWK+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_AWK+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$AWK"; then
ac_cv_prog_AWK="$AWK" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_AWK="$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
AWK=$ac_cv_prog_AWK
if test -n "$AWK"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
-$as_echo "$AWK" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
+printf "%s\n" "$AWK" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
test -n "$AWK" && break
done
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
-$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+printf %s "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
set x ${MAKE-make}
-ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
-if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ac_make=`printf "%s\n" "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
+if eval test \${ac_cv_prog_make_${ac_make}_set+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat >conftest.make <<\_ACEOF
SHELL = /bin/sh
all:
rm -f conftest.make
fi
if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
SET_MAKE=
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
SET_MAKE="MAKE=${MAKE-make}"
fi
rmdir .tst 2>/dev/null
# Check whether --enable-silent-rules was given.
-if test "${enable_silent_rules+set}" = set; then :
+if test ${enable_silent_rules+y}
+then :
enableval=$enable_silent_rules;
fi
*) AM_DEFAULT_VERBOSITY=1;;
esac
am_make=${MAKE-make}
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5
-$as_echo_n "checking whether $am_make supports nested variables... " >&6; }
-if ${am_cv_make_support_nested_variables+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if $as_echo 'TRUE=$(BAR$(V))
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5
+printf %s "checking whether $am_make supports nested variables... " >&6; }
+if test ${am_cv_make_support_nested_variables+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if printf "%s\n" 'TRUE=$(BAR$(V))
BAR0=false
BAR1=true
V=1
am_cv_make_support_nested_variables=no
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5
-$as_echo "$am_cv_make_support_nested_variables" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5
+printf "%s\n" "$am_cv_make_support_nested_variables" >&6; }
if test $am_cv_make_support_nested_variables = yes; then
AM_V='$(V)'
AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
# Define the identity of the package.
PACKAGE='libarchive'
- VERSION='3.5.2'
+ VERSION='3.7.2'
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE "$PACKAGE"
-_ACEOF
+printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h
-cat >>confdefs.h <<_ACEOF
-#define VERSION "$VERSION"
-_ACEOF
+printf "%s\n" "#define VERSION \"$VERSION\"" >>confdefs.h
# Some tools Automake needs.
+# Variables for tags utilities; see am/tags.am
+if test -z "$CTAGS"; then
+ CTAGS=ctags
+fi
+
+if test -z "$ETAGS"; then
+ ETAGS=etags
+fi
+
+if test -z "$CSCOPE"; then
+ CSCOPE=cscope
+fi
+
+
# POSIX will say in a future version that running "rm -f" with no argument
# is OK; and we want to be able to make that assumption in our Makefile
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5
-$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5
+printf %s "checking whether to enable maintainer-specific portions of Makefiles... " >&6; }
# Check whether --enable-maintainer-mode was given.
-if test "${enable_maintainer_mode+set}" = set; then :
+if test ${enable_maintainer_mode+y}
+then :
enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval
-else
+else $as_nop
USE_MAINTAINER_MODE=yes
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5
-$as_echo "$USE_MAINTAINER_MODE" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5
+printf "%s\n" "$USE_MAINTAINER_MODE" >&6; }
if test $USE_MAINTAINER_MODE = yes; then
MAINTAINER_MODE_TRUE=
MAINTAINER_MODE_FALSE='#'
# Check whether --enable-silent-rules was given.
-if test "${enable_silent_rules+set}" = set; then :
+if test ${enable_silent_rules+y}
+then :
enableval=$enable_silent_rules;
fi
*) AM_DEFAULT_VERBOSITY=0;;
esac
am_make=${MAKE-make}
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5
-$as_echo_n "checking whether $am_make supports nested variables... " >&6; }
-if ${am_cv_make_support_nested_variables+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if $as_echo 'TRUE=$(BAR$(V))
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5
+printf %s "checking whether $am_make supports nested variables... " >&6; }
+if test ${am_cv_make_support_nested_variables+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if printf "%s\n" 'TRUE=$(BAR$(V))
BAR0=false
BAR1=true
V=1
am_cv_make_support_nested_variables=no
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5
-$as_echo "$am_cv_make_support_nested_variables" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5
+printf "%s\n" "$am_cv_make_support_nested_variables" >&6; }
if test $am_cv_make_support_nested_variables = yes; then
AM_V='$(V)'
AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
# Libtool interface version bumps on any API change, so increments
# whenever libarchive minor version does.
-ARCHIVE_MINOR=$(( (3005002 / 1000) % 1000 ))
+ARCHIVE_MINOR=$(( (3007002 / 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
# Libarchive 3.1 == libtool interface 13
ARCHIVE_INTERFACE=`echo $((13 + ${ARCHIVE_MINOR}))`
# Libarchive revision is bumped on any source change === libtool revision
-ARCHIVE_REVISION=$(( 3005002 % 1000 ))
+ARCHIVE_REVISION=$(( 3007002 % 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_CONFIG_H_INCLUDED 1" >>confdefs.h
+printf "%s\n" "#define __LIBARCHIVE_CONFIG_H_INCLUDED 1" >>confdefs.h
-$as_echo "#define LIBARCHIVE_VERSION_STRING \"3.5.2\"" >>confdefs.h
+printf "%s\n" "#define LIBARCHIVE_VERSION_STRING \"3.7.2\"" >>confdefs.h
-cat >>confdefs.h <<_ACEOF
-#define LIBARCHIVE_VERSION_NUMBER "3005002"
-_ACEOF
+printf "%s\n" "#define LIBARCHIVE_VERSION_NUMBER \"3007002\"" >>confdefs.h
-$as_echo "#define BSDCPIO_VERSION_STRING \"3.5.2\"" >>confdefs.h
+printf "%s\n" "#define BSDCPIO_VERSION_STRING \"3.7.2\"" >>confdefs.h
-$as_echo "#define BSDTAR_VERSION_STRING \"3.5.2\"" >>confdefs.h
+printf "%s\n" "#define BSDTAR_VERSION_STRING \"3.7.2\"" >>confdefs.h
-$as_echo "#define BSDCAT_VERSION_STRING \"3.5.2\"" >>confdefs.h
+printf "%s\n" "#define BSDCAT_VERSION_STRING \"3.7.2\"" >>confdefs.h
+
+
+printf "%s\n" "#define BSDUNZIP_VERSION_STRING \"3.7.2\"" >>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.5.2
-BSDTAR_VERSION_STRING=3.5.2
-BSDCAT_VERSION_STRING=3.5.2
-LIBARCHIVE_VERSION_STRING=3.5.2
-LIBARCHIVE_VERSION_NUMBER=3005002
+BSDCPIO_VERSION_STRING=3.7.2
+BSDTAR_VERSION_STRING=3.7.2
+BSDCAT_VERSION_STRING=3.7.2
+BSDUNZIP_VERSION_STRING=3.7.2
+LIBARCHIVE_VERSION_STRING=3.7.2
+LIBARCHIVE_VERSION_NUMBER=3007002
# Substitute the above version numbers into the various files below.
# Yes, I believe this is the fourth time we define what are essentially
+
ac_config_headers="$ac_config_headers config.h"
ac_config_files="$ac_config_files Makefile"
# Check for host type
-# Make sure we can run config.sub.
-$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
- as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
-$as_echo_n "checking build system type... " >&6; }
-if ${ac_cv_build+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+
+
+ # Make sure we can run config.sub.
+$SHELL "${ac_aux_dir}config.sub" sun4 >/dev/null 2>&1 ||
+ as_fn_error $? "cannot run $SHELL ${ac_aux_dir}config.sub" "$LINENO" 5
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
+printf %s "checking build system type... " >&6; }
+if test ${ac_cv_build+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_build_alias=$build_alias
test "x$ac_build_alias" = x &&
- ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
+ ac_build_alias=`$SHELL "${ac_aux_dir}config.guess"`
test "x$ac_build_alias" = x &&
as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
-ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
- as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
+ac_cv_build=`$SHELL "${ac_aux_dir}config.sub" $ac_build_alias` ||
+ as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $ac_build_alias failed" "$LINENO" 5
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
-$as_echo "$ac_cv_build" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
+printf "%s\n" "$ac_cv_build" >&6; }
case $ac_cv_build in
*-*-*) ;;
*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
-$as_echo_n "checking host system type... " >&6; }
-if ${ac_cv_host+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
+printf %s "checking host system type... " >&6; }
+if test ${ac_cv_host+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test "x$host_alias" = x; then
ac_cv_host=$ac_cv_build
else
- ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
- as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
+ ac_cv_host=`$SHELL "${ac_aux_dir}config.sub" $host_alias` ||
+ as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $host_alias failed" "$LINENO" 5
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
-$as_echo "$ac_cv_host" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
+printf "%s\n" "$ac_cv_host" >&6; }
case $ac_cv_host in
*-*-*) ;;
*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
PLATFORMCPPFLAGS=
case "$host_os" in
- *mingw* ) PLATFORMCPPFLAGS=-D__USE_MINGW_ANSI_STDIO ;;
+ *mingw* ) PLATFORMCPPFLAGS=-D__USE_MINGW_ANSI_STDIO -D__MINGW_USE_VC2005_COMPAT ;;
esac
# Checks for programs.
+
+
+
+
+
+
+
+
+
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
set dummy ${ac_tool_prefix}gcc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_CC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$CC"; then
ac_cv_prog_CC="$CC" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_CC="${ac_tool_prefix}gcc"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
CC=$ac_cv_prog_CC
if test -n "$CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+printf "%s\n" "$CC" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
ac_ct_CC=$CC
# Extract the first word of "gcc", so it can be a program name with args.
set dummy gcc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_CC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$ac_ct_CC"; then
ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_CC="gcc"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
ac_ct_CC=$ac_cv_prog_ac_ct_CC
if test -n "$ac_ct_CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+printf "%s\n" "$ac_ct_CC" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test "x$ac_ct_CC" = x; then
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
CC=$ac_ct_CC
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
set dummy ${ac_tool_prefix}cc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_CC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$CC"; then
ac_cv_prog_CC="$CC" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_CC="${ac_tool_prefix}cc"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
CC=$ac_cv_prog_CC
if test -n "$CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+printf "%s\n" "$CC" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test -z "$CC"; then
# Extract the first word of "cc", so it can be a program name with args.
set dummy cc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_CC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$CC"; then
ac_cv_prog_CC="$CC" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ if test "$as_dir$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
ac_prog_rejected=yes
continue
fi
ac_cv_prog_CC="cc"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
# However, it has the same basename, so the bogon will be chosen
# first if we set CC to just the basename; use the full file name.
shift
- ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+ ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@"
fi
fi
fi
fi
CC=$ac_cv_prog_CC
if test -n "$CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+printf "%s\n" "$CC" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
do
# Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_CC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$CC"; then
ac_cv_prog_CC="$CC" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
CC=$ac_cv_prog_CC
if test -n "$CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+printf "%s\n" "$CC" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_CC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$ac_ct_CC"; then
ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_CC="$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
ac_ct_CC=$ac_cv_prog_ac_ct_CC
if test -n "$ac_ct_CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+printf "%s\n" "$ac_ct_CC" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
CC=$ac_ct_CC
fi
fi
+if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args.
+set dummy ${ac_tool_prefix}clang; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_CC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CC="${ac_tool_prefix}clang"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+printf "%s\n" "$CC" >&6; }
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+ ac_ct_CC=$CC
+ # Extract the first word of "clang", so it can be a program name with args.
+set dummy clang; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_CC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_CC="clang"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+printf "%s\n" "$ac_ct_CC" >&6; }
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+ if test "x$ac_ct_CC" = x; then
+ CC=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ CC=$ac_ct_CC
+ fi
+else
+ CC="$ac_cv_prog_CC"
+fi
+
+fi
-test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+
+test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "no acceptable C compiler found in \$PATH
See \`config.log' for more details" "$LINENO" 5; }
# Provide some information about the compiler.
-$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
set X $ac_compile
ac_compiler=$2
-for ac_option in --version -v -V -qversion; do
+for ac_option in --version -v -V -qversion -version; do
{ { ac_try="$ac_compiler $ac_option >&5"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
(eval "$ac_compiler $ac_option >&5") 2>conftest.err
ac_status=$?
if test -s conftest.err; then
cat conftest.er1 >&5
fi
rm -f conftest.er1 conftest.err
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
done
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
# Try to create an executable without -o first, disregard a.out.
# It will help us diagnose broken compilers, and finding out an intuition
# of exeext.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
-$as_echo_n "checking whether the C compiler works... " >&6; }
-ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
+printf %s "checking whether the C compiler works... " >&6; }
+ac_link_default=`printf "%s\n" "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
# The possible output files:
ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
(eval "$ac_link_default") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then :
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+then :
# Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
# in a Makefile. We should not override ac_cv_exeext if it was cached,
# certainly right.
break;;
*.* )
- if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
+ if test ${ac_cv_exeext+y} && test "$ac_cv_exeext" != no;
then :; else
ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
fi
done
test "$ac_cv_exeext" = no && ac_cv_exeext=
-else
+else $as_nop
ac_file=''
fi
-if test -z "$ac_file"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-$as_echo "$as_me: failed program was:" >&5
+if test -z "$ac_file"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+printf "%s\n" "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
-{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error 77 "C compiler cannot create executables
See \`config.log' for more details" "$LINENO" 5; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
-$as_echo_n "checking for C compiler default output file name... " >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
-$as_echo "$ac_file" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
+printf %s "checking for C compiler default output file name... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
+printf "%s\n" "$ac_file" >&6; }
ac_exeext=$ac_cv_exeext
rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
ac_clean_files=$ac_clean_files_save
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
-$as_echo_n "checking for suffix of executables... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
+printf %s "checking for suffix of executables... " >&6; }
if { { ac_try="$ac_link"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
(eval "$ac_link") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then :
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+then :
# If both `conftest.exe' and `conftest' are `present' (well, observable)
# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will
# work properly (i.e., refer to `conftest.exe'), while it won't with
* ) break;;
esac
done
-else
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+else $as_nop
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "cannot compute suffix of executables: cannot compile and link
See \`config.log' for more details" "$LINENO" 5; }
fi
rm -f conftest conftest$ac_cv_exeext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
-$as_echo "$ac_cv_exeext" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
+printf "%s\n" "$ac_cv_exeext" >&6; }
rm -f conftest.$ac_ext
EXEEXT=$ac_cv_exeext
/* end confdefs.h. */
#include <stdio.h>
int
-main ()
+main (void)
{
FILE *f = fopen ("conftest.out", "w");
return ferror (f) || fclose (f) != 0;
ac_clean_files="$ac_clean_files conftest.out"
# Check that the compiler produces executables we can run. If not, either
# the compiler is broken, or we cross compile.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
-$as_echo_n "checking whether we are cross compiling... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
+printf %s "checking whether we are cross compiling... " >&6; }
if test "$cross_compiling" != yes; then
{ { ac_try="$ac_link"
case "(($ac_try" in
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
(eval "$ac_link") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
if { ac_try='./conftest$ac_cv_exeext'
{ { case "(($ac_try" in
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
(eval "$ac_try") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; }; then
cross_compiling=no
else
if test "$cross_compiling" = maybe; then
cross_compiling=yes
else
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot run C compiled programs.
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "cannot run C compiled programs.
If you meant to cross compile, use \`--host'.
See \`config.log' for more details" "$LINENO" 5; }
fi
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
-$as_echo "$cross_compiling" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
+printf "%s\n" "$cross_compiling" >&6; }
rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
ac_clean_files=$ac_clean_files_save
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
-$as_echo_n "checking for suffix of object files... " >&6; }
-if ${ac_cv_objext+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
+printf %s "checking for suffix of object files... " >&6; }
+if test ${ac_cv_objext+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
(eval "$ac_compile") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then :
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+then :
for ac_file in conftest.o conftest.obj conftest.*; do
test -f "$ac_file" || continue;
case $ac_file in
break;;
esac
done
-else
- $as_echo "$as_me: failed program was:" >&5
+else $as_nop
+ printf "%s\n" "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
-{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "cannot compute suffix of object files: cannot compile
See \`config.log' for more details" "$LINENO" 5; }
fi
rm -f conftest.$ac_cv_objext conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
-$as_echo "$ac_cv_objext" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
+printf "%s\n" "$ac_cv_objext" >&6; }
OBJEXT=$ac_cv_objext
ac_objext=$OBJEXT
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
-$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
-if ${ac_cv_c_compiler_gnu+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5
+printf %s "checking whether the compiler supports GNU C... " >&6; }
+if test ${ac_cv_c_compiler_gnu+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-main ()
+main (void)
{
#ifndef __GNUC__
choke me
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_compiler_gnu=yes
-else
+else $as_nop
ac_compiler_gnu=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
ac_cv_c_compiler_gnu=$ac_compiler_gnu
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
-$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; }
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
if test $ac_compiler_gnu = yes; then
GCC=yes
else
GCC=
fi
-ac_test_CFLAGS=${CFLAGS+set}
+ac_test_CFLAGS=${CFLAGS+y}
ac_save_CFLAGS=$CFLAGS
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
-$as_echo_n "checking whether $CC accepts -g... " >&6; }
-if ${ac_cv_prog_cc_g+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+printf %s "checking whether $CC accepts -g... " >&6; }
+if test ${ac_cv_prog_cc_g+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_save_c_werror_flag=$ac_c_werror_flag
ac_c_werror_flag=yes
ac_cv_prog_cc_g=no
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_prog_cc_g=yes
-else
+else $as_nop
CFLAGS=""
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
-else
+else $as_nop
ac_c_werror_flag=$ac_save_c_werror_flag
CFLAGS="-g"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_prog_cc_g=yes
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
ac_c_werror_flag=$ac_save_c_werror_flag
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
-$as_echo "$ac_cv_prog_cc_g" >&6; }
-if test "$ac_test_CFLAGS" = set; then
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+printf "%s\n" "$ac_cv_prog_cc_g" >&6; }
+if test $ac_test_CFLAGS; then
CFLAGS=$ac_save_CFLAGS
elif test $ac_cv_prog_cc_g = yes; then
if test "$GCC" = yes; then
CFLAGS=
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
-$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
-if ${ac_cv_prog_cc_c89+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_cv_prog_cc_c89=no
+ac_prog_cc_stdc=no
+if test x$ac_prog_cc_stdc = xno
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5
+printf %s "checking for $CC option to enable C11 features... " >&6; }
+if test ${ac_cv_prog_cc_c11+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ ac_cv_prog_cc_c11=no
ac_save_CC=$CC
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#include <stdarg.h>
-#include <stdio.h>
-struct stat;
-/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
-struct buf { int x; };
-FILE * (*rcsopen) (struct buf *, struct stat *, int);
-static char *e (p, i)
- char **p;
- int i;
-{
- return p[i];
-}
-static char *f (char * (*g) (char **, int), char **p, ...)
-{
- char *s;
- va_list v;
- va_start (v,p);
- s = g (p, va_arg (v,int));
- va_end (v);
- return s;
-}
-
-/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
- function prototypes and stuff, but not '\xHH' hex character constants.
- These don't provoke an error unfortunately, instead are silently treated
- as 'x'. The following induces an error, until -std is added to get
- proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
- array size at least. It's necessary to write '\x00'==0 to get something
- that's true only with -std. */
-int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+$ac_c_conftest_c11_program
+_ACEOF
+for ac_arg in '' -std=gnu11
+do
+ CC="$ac_save_CC $ac_arg"
+ if ac_fn_c_try_compile "$LINENO"
+then :
+ ac_cv_prog_cc_c11=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam
+ test "x$ac_cv_prog_cc_c11" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+fi
-/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
- inside strings and character constants. */
-#define FOO(x) 'x'
-int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+if test "x$ac_cv_prog_cc_c11" = xno
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+printf "%s\n" "unsupported" >&6; }
+else $as_nop
+ if test "x$ac_cv_prog_cc_c11" = x
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+printf "%s\n" "none needed" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5
+printf "%s\n" "$ac_cv_prog_cc_c11" >&6; }
+ CC="$CC $ac_cv_prog_cc_c11"
+fi
+ ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11
+ ac_prog_cc_stdc=c11
+fi
+fi
+if test x$ac_prog_cc_stdc = xno
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5
+printf %s "checking for $CC option to enable C99 features... " >&6; }
+if test ${ac_cv_prog_cc_c99+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ ac_cv_prog_cc_c99=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$ac_c_conftest_c99_program
+_ACEOF
+for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99=
+do
+ CC="$ac_save_CC $ac_arg"
+ if ac_fn_c_try_compile "$LINENO"
+then :
+ ac_cv_prog_cc_c99=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam
+ test "x$ac_cv_prog_cc_c99" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+fi
-int test (int i, double x);
-struct s1 {int (*f) (int a);};
-struct s2 {int (*f) (double a);};
-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
-int argc;
-char **argv;
-int
-main ()
-{
-return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
- ;
- return 0;
-}
+if test "x$ac_cv_prog_cc_c99" = xno
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+printf "%s\n" "unsupported" >&6; }
+else $as_nop
+ if test "x$ac_cv_prog_cc_c99" = x
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+printf "%s\n" "none needed" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5
+printf "%s\n" "$ac_cv_prog_cc_c99" >&6; }
+ CC="$CC $ac_cv_prog_cc_c99"
+fi
+ ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99
+ ac_prog_cc_stdc=c99
+fi
+fi
+if test x$ac_prog_cc_stdc = xno
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5
+printf %s "checking for $CC option to enable C89 features... " >&6; }
+if test ${ac_cv_prog_cc_c89+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$ac_c_conftest_c89_program
_ACEOF
-for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
- -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
do
CC="$ac_save_CC $ac_arg"
- if ac_fn_c_try_compile "$LINENO"; then :
+ if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_prog_cc_c89=$ac_arg
fi
-rm -f core conftest.err conftest.$ac_objext
+rm -f core conftest.err conftest.$ac_objext conftest.beam
test "x$ac_cv_prog_cc_c89" != "xno" && break
done
rm -f conftest.$ac_ext
CC=$ac_save_CC
-
fi
-# AC_CACHE_VAL
-case "x$ac_cv_prog_cc_c89" in
- x)
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
-$as_echo "none needed" >&6; } ;;
- xno)
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
-$as_echo "unsupported" >&6; } ;;
- *)
- CC="$CC $ac_cv_prog_cc_c89"
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
-$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
-esac
-if test "x$ac_cv_prog_cc_c89" != xno; then :
+if test "x$ac_cv_prog_cc_c89" = xno
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+printf "%s\n" "unsupported" >&6; }
+else $as_nop
+ if test "x$ac_cv_prog_cc_c89" = x
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+printf "%s\n" "none needed" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+printf "%s\n" "$ac_cv_prog_cc_c89" >&6; }
+ CC="$CC $ac_cv_prog_cc_c89"
+fi
+ ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89
+ ac_prog_cc_stdc=c89
+fi
fi
ac_ext=c
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_c_compiler_gnu
-ac_ext=c
+
+ ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_c_compiler_gnu
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5
-$as_echo_n "checking whether $CC understands -c and -o together... " >&6; }
-if ${am_cv_prog_cc_c_o+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5
+printf %s "checking whether $CC understands -c and -o together... " >&6; }
+if test ${am_cv_prog_cc_c_o+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
rm -f core conftest*
unset am_i
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5
-$as_echo "$am_cv_prog_cc_c_o" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5
+printf "%s\n" "$am_cv_prog_cc_c_o" >&6; }
if test "$am_cv_prog_cc_c_o" != yes; then
# Losing compiler, so override with the script.
# FIXME: It is wrong to rewrite CC.
ac_config_commands="$ac_config_commands depfiles"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} supports the include directive" >&5
-$as_echo_n "checking whether ${MAKE-make} supports the include directive... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} supports the include directive" >&5
+printf %s "checking whether ${MAKE-make} supports the include directive... " >&6; }
cat > confinc.mk << 'END'
am__doit:
@echo this is the am__doit target >confinc.out
fi
done
rm -f confinc.* confmf.*
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${_am_result}" >&5
-$as_echo "${_am_result}" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${_am_result}" >&5
+printf "%s\n" "${_am_result}" >&6; }
# Check whether --enable-dependency-tracking was given.
-if test "${enable_dependency_tracking+set}" = set; then :
+if test ${enable_dependency_tracking+y}
+then :
enableval=$enable_dependency_tracking;
fi
depcc="$CC" am_compiler_list=
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
-$as_echo_n "checking dependency style of $depcc... " >&6; }
-if ${am_cv_CC_dependencies_compiler_type+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
+printf %s "checking dependency style of $depcc... " >&6; }
+if test ${am_cv_CC_dependencies_compiler_type+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
# We make a subdir and do the tests there. Otherwise we can end up
# making bogus files that we don't know about and never remove. For
# Copy depcomp to subdir because otherwise we won't find it if we're
# using a relative directory.
cp "$am_depcomp" conftest.dir
- cd conftest.dir
- # We will build objects and dependencies in a subdirectory because
- # it helps to detect inapplicable dependency modes. For instance
- # both Tru64's cc and ICC support -MD to output dependencies as a
- # side effect of compilation, but ICC will put the dependencies in
- # the current directory while Tru64 will put them in the object
- # directory.
- mkdir sub
-
- am_cv_CC_dependencies_compiler_type=none
- if test "$am_compiler_list" = ""; then
- am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
- fi
- am__universal=false
- case " $depcc " in #(
- *\ -arch\ *\ -arch\ *) am__universal=true ;;
- esac
-
- for depmode in $am_compiler_list; do
- # Setup a source with many dependencies, because some compilers
- # like to wrap large dependency lists on column 80 (with \), and
- # we should not choose a depcomp mode which is confused by this.
- #
- # We need to recreate these files for each test, as the compiler may
- # overwrite some of them when testing with obscure command lines.
- # This happens at least with the AIX C compiler.
- : > sub/conftest.c
- for i in 1 2 3 4 5 6; do
- echo '#include "conftst'$i'.h"' >> sub/conftest.c
- # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
- # Solaris 10 /bin/sh.
- echo '/* dummy */' > sub/conftst$i.h
- done
- echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
-
- # We check with '-c' and '-o' for the sake of the "dashmstdout"
- # mode. It turns out that the SunPro C++ compiler does not properly
- # handle '-M -o', and we need to detect this. Also, some Intel
- # versions had trouble with output in subdirs.
- am__obj=sub/conftest.${OBJEXT-o}
- am__minus_obj="-o $am__obj"
- case $depmode in
- gcc)
- # This depmode causes a compiler race in universal mode.
- test "$am__universal" = false || continue
- ;;
- nosideeffect)
- # After this tag, mechanisms are not by side-effect, so they'll
- # only be used when explicitly requested.
- if test "x$enable_dependency_tracking" = xyes; then
- continue
- else
- break
- fi
- ;;
- msvc7 | msvc7msys | msvisualcpp | msvcmsys)
- # This compiler won't grok '-c -o', but also, the minuso test has
- # not run yet. These depmodes are late enough in the game, and
- # so weak that their functioning should not be impacted.
- am__obj=conftest.${OBJEXT-o}
- am__minus_obj=
- ;;
- none) break ;;
- esac
- if depmode=$depmode \
- source=sub/conftest.c object=$am__obj \
- depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
- $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
- >/dev/null 2>conftest.err &&
- grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
- grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
- grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
- ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
- # icc doesn't choke on unknown options, it will just issue warnings
- # or remarks (even with -Werror). So we grep stderr for any message
- # that says an option was ignored or not supported.
- # When given -MP, icc 7.0 and 7.1 complain thusly:
- # icc: Command line warning: ignoring option '-M'; no argument required
- # The diagnosis changed in icc 8.0:
- # icc: Command line remark: option '-MP' not supported
- if (grep 'ignoring option' conftest.err ||
- grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
- am_cv_CC_dependencies_compiler_type=$depmode
- break
- fi
- fi
- done
-
- cd ..
- rm -rf conftest.dir
-else
- am_cv_CC_dependencies_compiler_type=none
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
-$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
-CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
-
- if
- test "x$enable_dependency_tracking" != xno \
- && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
- am__fastdepCC_TRUE=
- am__fastdepCC_FALSE='#'
-else
- am__fastdepCC_TRUE='#'
- am__fastdepCC_FALSE=
-fi
-
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C99" >&5
-$as_echo_n "checking for $CC option to accept ISO C99... " >&6; }
-if ${ac_cv_prog_cc_c99+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_cv_prog_cc_c99=no
-ac_save_CC=$CC
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <stdarg.h>
-#include <stdbool.h>
-#include <stdlib.h>
-#include <wchar.h>
-#include <stdio.h>
-
-// Check varargs macros. These examples are taken from C99 6.10.3.5.
-#define debug(...) fprintf (stderr, __VA_ARGS__)
-#define showlist(...) puts (#__VA_ARGS__)
-#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__))
-static void
-test_varargs_macros (void)
-{
- int x = 1234;
- int y = 5678;
- debug ("Flag");
- debug ("X = %d\n", x);
- showlist (The first, second, and third items.);
- report (x>y, "x is %d but y is %d", x, y);
-}
-
-// Check long long types.
-#define BIG64 18446744073709551615ull
-#define BIG32 4294967295ul
-#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0)
-#if !BIG_OK
- your preprocessor is broken;
-#endif
-#if BIG_OK
-#else
- your preprocessor is broken;
-#endif
-static long long int bignum = -9223372036854775807LL;
-static unsigned long long int ubignum = BIG64;
-
-struct incomplete_array
-{
- int datasize;
- double data[];
-};
-
-struct named_init {
- int number;
- const wchar_t *name;
- double average;
-};
-
-typedef const char *ccp;
-
-static inline int
-test_restrict (ccp restrict text)
-{
- // See if C++-style comments work.
- // Iterate through items via the restricted pointer.
- // Also check for declarations in for loops.
- for (unsigned int i = 0; *(text+i) != '\0'; ++i)
- continue;
- return 0;
-}
-
-// Check varargs and va_copy.
-static void
-test_varargs (const char *format, ...)
-{
- va_list args;
- va_start (args, format);
- va_list args_copy;
- va_copy (args_copy, args);
-
- const char *str;
- int number;
- float fnumber;
-
- while (*format)
- {
- switch (*format++)
- {
- case 's': // string
- str = va_arg (args_copy, const char *);
- break;
- case 'd': // int
- number = va_arg (args_copy, int);
- break;
- case 'f': // float
- fnumber = va_arg (args_copy, double);
- break;
- default:
- break;
- }
- }
- va_end (args_copy);
- va_end (args);
-}
-
-int
-main ()
-{
-
- // Check bool.
- _Bool success = false;
-
- // Check restrict.
- if (test_restrict ("String literal") == 0)
- success = true;
- char *restrict newvar = "Another string";
-
- // Check varargs.
- test_varargs ("s, d' f .", "string", 65, 34.234);
- test_varargs_macros ();
-
- // Check flexible array members.
- struct incomplete_array *ia =
- malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10));
- ia->datasize = 10;
- for (int i = 0; i < ia->datasize; ++i)
- ia->data[i] = i * 1.234;
-
- // Check named initializers.
- struct named_init ni = {
- .number = 34,
- .name = L"Test wide string",
- .average = 543.34343,
- };
+ cd conftest.dir
+ # We will build objects and dependencies in a subdirectory because
+ # it helps to detect inapplicable dependency modes. For instance
+ # both Tru64's cc and ICC support -MD to output dependencies as a
+ # side effect of compilation, but ICC will put the dependencies in
+ # the current directory while Tru64 will put them in the object
+ # directory.
+ mkdir sub
- ni.number = 58;
+ am_cv_CC_dependencies_compiler_type=none
+ if test "$am_compiler_list" = ""; then
+ am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+ fi
+ am__universal=false
+ case " $depcc " in #(
+ *\ -arch\ *\ -arch\ *) am__universal=true ;;
+ esac
- int dynamic_array[ni.number];
- dynamic_array[ni.number - 1] = 543;
+ for depmode in $am_compiler_list; do
+ # Setup a source with many dependencies, because some compilers
+ # like to wrap large dependency lists on column 80 (with \), and
+ # we should not choose a depcomp mode which is confused by this.
+ #
+ # We need to recreate these files for each test, as the compiler may
+ # overwrite some of them when testing with obscure command lines.
+ # This happens at least with the AIX C compiler.
+ : > sub/conftest.c
+ for i in 1 2 3 4 5 6; do
+ echo '#include "conftst'$i'.h"' >> sub/conftest.c
+ # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+ # Solaris 10 /bin/sh.
+ echo '/* dummy */' > sub/conftst$i.h
+ done
+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
- // work around unused variable warnings
- return (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == 'x'
- || dynamic_array[ni.number - 1] != 543);
+ # We check with '-c' and '-o' for the sake of the "dashmstdout"
+ # mode. It turns out that the SunPro C++ compiler does not properly
+ # handle '-M -o', and we need to detect this. Also, some Intel
+ # versions had trouble with output in subdirs.
+ am__obj=sub/conftest.${OBJEXT-o}
+ am__minus_obj="-o $am__obj"
+ case $depmode in
+ gcc)
+ # This depmode causes a compiler race in universal mode.
+ test "$am__universal" = false || continue
+ ;;
+ nosideeffect)
+ # After this tag, mechanisms are not by side-effect, so they'll
+ # only be used when explicitly requested.
+ if test "x$enable_dependency_tracking" = xyes; then
+ continue
+ else
+ break
+ fi
+ ;;
+ msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+ # This compiler won't grok '-c -o', but also, the minuso test has
+ # not run yet. These depmodes are late enough in the game, and
+ # so weak that their functioning should not be impacted.
+ am__obj=conftest.${OBJEXT-o}
+ am__minus_obj=
+ ;;
+ none) break ;;
+ esac
+ if depmode=$depmode \
+ source=sub/conftest.c object=$am__obj \
+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+ >/dev/null 2>conftest.err &&
+ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+ # icc doesn't choke on unknown options, it will just issue warnings
+ # or remarks (even with -Werror). So we grep stderr for any message
+ # that says an option was ignored or not supported.
+ # When given -MP, icc 7.0 and 7.1 complain thusly:
+ # icc: Command line warning: ignoring option '-M'; no argument required
+ # The diagnosis changed in icc 8.0:
+ # icc: Command line remark: option '-MP' not supported
+ if (grep 'ignoring option' conftest.err ||
+ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+ am_cv_CC_dependencies_compiler_type=$depmode
+ break
+ fi
+ fi
+ done
- ;
- return 0;
-}
-_ACEOF
-for ac_arg in '' -std=gnu99 -std=c99 -c99 -AC99 -D_STDC_C99= -qlanglvl=extc99
-do
- CC="$ac_save_CC $ac_arg"
- if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_prog_cc_c99=$ac_arg
+ cd ..
+ rm -rf conftest.dir
+else
+ am_cv_CC_dependencies_compiler_type=none
fi
-rm -f core conftest.err conftest.$ac_objext
- test "x$ac_cv_prog_cc_c99" != "xno" && break
-done
-rm -f conftest.$ac_ext
-CC=$ac_save_CC
fi
-# AC_CACHE_VAL
-case "x$ac_cv_prog_cc_c99" in
- x)
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
-$as_echo "none needed" >&6; } ;;
- xno)
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
-$as_echo "unsupported" >&6; } ;;
- *)
- CC="$CC $ac_cv_prog_cc_c99"
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5
-$as_echo "$ac_cv_prog_cc_c99" >&6; } ;;
-esac
-if test "x$ac_cv_prog_cc_c99" != xno; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
+printf "%s\n" "$am_cv_CC_dependencies_compiler_type" >&6; }
+CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
+ if
+ test "x$enable_dependency_tracking" != xno \
+ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
+ am__fastdepCC_TRUE=
+ am__fastdepCC_FALSE='#'
+else
+ am__fastdepCC_TRUE='#'
+ am__fastdepCC_FALSE=
fi
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_c_compiler_gnu
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
-$as_echo_n "checking how to run the C preprocessor... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
+printf %s "checking how to run the C preprocessor... " >&6; }
# On Suns, sometimes $CPP names a directory.
if test -n "$CPP" && test -d "$CPP"; then
CPP=
fi
if test -z "$CPP"; then
- if ${ac_cv_prog_CPP+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- # Double quotes because CPP needs to be expanded
- for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
+ if test ${ac_cv_prog_CPP+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ # Double quotes because $CC needs to be expanded
+ for CPP in "$CC -E" "$CC -E -traditional-cpp" cpp /lib/cpp
do
ac_preproc_ok=false
for ac_c_preproc_warn_flag in '' yes
do
# Use a header file that comes with gcc, so configuring glibc
# with a fresh cross-compiler works.
- # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
- # <limits.h> exists even on freestanding compilers.
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp. "Syntax error" is here to catch this case.
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
+#include <limits.h>
Syntax error
_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
+if ac_fn_c_try_cpp "$LINENO"
+then :
-else
+else $as_nop
# Broken: fails on valid input.
continue
fi
/* end confdefs.h. */
#include <ac_nonexistent.h>
_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
+if ac_fn_c_try_cpp "$LINENO"
+then :
# Broken: success on invalid input.
continue
-else
+else $as_nop
# Passes both tests.
ac_preproc_ok=:
break
done
# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
+if $ac_preproc_ok
+then :
break
fi
else
ac_cv_prog_CPP=$CPP
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
-$as_echo "$CPP" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
+printf "%s\n" "$CPP" >&6; }
ac_preproc_ok=false
for ac_c_preproc_warn_flag in '' yes
do
# Use a header file that comes with gcc, so configuring glibc
# with a fresh cross-compiler works.
- # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
- # <limits.h> exists even on freestanding compilers.
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp. "Syntax error" is here to catch this case.
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
+#include <limits.h>
Syntax error
_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
+if ac_fn_c_try_cpp "$LINENO"
+then :
-else
+else $as_nop
# Broken: fails on valid input.
continue
fi
/* end confdefs.h. */
#include <ac_nonexistent.h>
_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
+if ac_fn_c_try_cpp "$LINENO"
+then :
# Broken: success on invalid input.
continue
-else
+else $as_nop
# Passes both tests.
ac_preproc_ok=:
break
done
# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
+if $ac_preproc_ok
+then :
-else
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+else $as_nop
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
See \`config.log' for more details" "$LINENO" 5; }
fi
ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
-$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
-if ${ac_cv_path_GREP+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -z "$GREP"; then
- ac_path_GREP_found=false
- # Loop through the user's path and test for each of PROGNAME-LIST
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+ac_header= ac_cache=
+for ac_item in $ac_header_c_list
do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_prog in grep ggrep; do
- for ac_exec_ext in '' $ac_executable_extensions; do
- ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
- as_fn_executable_p "$ac_path_GREP" || continue
-# Check for GNU ac_path_GREP and select it if it is found.
- # Check for GNU $ac_path_GREP
-case `"$ac_path_GREP" --version 2>&1` in
-*GNU*)
- ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
-*)
- ac_count=0
- $as_echo_n 0123456789 >"conftest.in"
- while :
- do
- cat "conftest.in" "conftest.in" >"conftest.tmp"
- mv "conftest.tmp" "conftest.in"
- cp "conftest.in" "conftest.nl"
- $as_echo 'GREP' >> "conftest.nl"
- "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
- diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
- as_fn_arith $ac_count + 1 && ac_count=$as_val
- if test $ac_count -gt ${ac_path_GREP_max-0}; then
- # Best one so far, save it but keep looking for a better one
- ac_cv_path_GREP="$ac_path_GREP"
- ac_path_GREP_max=$ac_count
+ if test $ac_cache; then
+ ac_fn_c_check_header_compile "$LINENO" $ac_header ac_cv_header_$ac_cache "$ac_includes_default"
+ if eval test \"x\$ac_cv_header_$ac_cache\" = xyes; then
+ printf "%s\n" "#define $ac_item 1" >> confdefs.h
fi
- # 10*(2^10) chars as input seems more than enough
- test $ac_count -gt 10 && break
- done
- rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
- $ac_path_GREP_found && break 3
- done
- done
- done
-IFS=$as_save_IFS
- if test -z "$ac_cv_path_GREP"; then
- as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+ ac_header= ac_cache=
+ elif test $ac_header; then
+ ac_cache=$ac_item
+ else
+ ac_header=$ac_item
fi
-else
- ac_cv_path_GREP=$GREP
-fi
+done
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
-$as_echo "$ac_cv_path_GREP" >&6; }
- GREP="$ac_cv_path_GREP"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
-$as_echo_n "checking for egrep... " >&6; }
-if ${ac_cv_path_EGREP+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
- then ac_cv_path_EGREP="$GREP -E"
- else
- if test -z "$EGREP"; then
- ac_path_EGREP_found=false
- # Loop through the user's path and test for each of PROGNAME-LIST
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_prog in egrep; do
- for ac_exec_ext in '' $ac_executable_extensions; do
- ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
- as_fn_executable_p "$ac_path_EGREP" || continue
-# Check for GNU ac_path_EGREP and select it if it is found.
- # Check for GNU $ac_path_EGREP
-case `"$ac_path_EGREP" --version 2>&1` in
-*GNU*)
- ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
-*)
- ac_count=0
- $as_echo_n 0123456789 >"conftest.in"
- while :
- do
- cat "conftest.in" "conftest.in" >"conftest.tmp"
- mv "conftest.tmp" "conftest.in"
- cp "conftest.in" "conftest.nl"
- $as_echo 'EGREP' >> "conftest.nl"
- "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
- diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
- as_fn_arith $ac_count + 1 && ac_count=$as_val
- if test $ac_count -gt ${ac_path_EGREP_max-0}; then
- # Best one so far, save it but keep looking for a better one
- ac_cv_path_EGREP="$ac_path_EGREP"
- ac_path_EGREP_max=$ac_count
- fi
- # 10*(2^10) chars as input seems more than enough
- test $ac_count -gt 10 && break
- done
- rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
- $ac_path_EGREP_found && break 3
- done
- done
- done
-IFS=$as_save_IFS
- if test -z "$ac_cv_path_EGREP"; then
- as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
- fi
-else
- ac_cv_path_EGREP=$EGREP
-fi
- fi
+
+
+
+if test $ac_cv_header_stdlib_h = yes && test $ac_cv_header_string_h = yes
+then :
+
+printf "%s\n" "#define STDC_HEADERS 1" >>confdefs.h
+
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
-$as_echo "$ac_cv_path_EGREP" >&6; }
- EGREP="$ac_cv_path_EGREP"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
-$as_echo_n "checking for ANSI C header files... " >&6; }
-if ${ac_cv_header_stdc+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+
+
+
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5
+printf %s "checking whether it is safe to define __EXTENSIONS__... " >&6; }
+if test ${ac_cv_safe_to_define___extensions__+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
+# define __EXTENSIONS__ 1
+ $ac_includes_default
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_header_stdc=yes
-else
- ac_cv_header_stdc=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-if test $ac_cv_header_stdc = yes; then
- # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <string.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "memchr" >/dev/null 2>&1; then :
-
-else
- ac_cv_header_stdc=no
+if ac_fn_c_try_compile "$LINENO"
+then :
+ ac_cv_safe_to_define___extensions__=yes
+else $as_nop
+ ac_cv_safe_to_define___extensions__=no
fi
-rm -f conftest*
-
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5
+printf "%s\n" "$ac_cv_safe_to_define___extensions__" >&6; }
-if test $ac_cv_header_stdc = yes; then
- # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether _XOPEN_SOURCE should be defined" >&5
+printf %s "checking whether _XOPEN_SOURCE should be defined... " >&6; }
+if test ${ac_cv_should_define__xopen_source+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ ac_cv_should_define__xopen_source=no
+ if test $ac_cv_header_wchar_h = yes
+then :
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#include <stdlib.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "free" >/dev/null 2>&1; then :
-else
- ac_cv_header_stdc=no
-fi
-rm -f conftest*
+ #include <wchar.h>
+ mbstate_t x;
+int
+main (void)
+{
-fi
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
-if test $ac_cv_header_stdc = yes; then
- # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
- if test "$cross_compiling" = yes; then :
- :
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#include <ctype.h>
-#include <stdlib.h>
-#if ((' ' & 0x0FF) == 0x020)
-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-#else
-# define ISLOWER(c) \
- (('a' <= (c) && (c) <= 'i') \
- || ('j' <= (c) && (c) <= 'r') \
- || ('s' <= (c) && (c) <= 'z'))
-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
-#endif
-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+ #define _XOPEN_SOURCE 500
+ #include <wchar.h>
+ mbstate_t x;
int
-main ()
+main (void)
{
- int i;
- for (i = 0; i < 256; i++)
- if (XOR (islower (i), ISLOWER (i))
- || toupper (i) != TOUPPER (i))
- return 2;
+
+ ;
return 0;
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-
-else
- ac_cv_header_stdc=no
+if ac_fn_c_try_compile "$LINENO"
+then :
+ ac_cv_should_define__xopen_source=yes
fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
- conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
-$as_echo "$ac_cv_header_stdc" >&6; }
-if test $ac_cv_header_stdc = yes; then
-
-$as_echo "#define STDC_HEADERS 1" >>confdefs.h
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_should_define__xopen_source" >&5
+printf "%s\n" "$ac_cv_should_define__xopen_source" >&6; }
-fi
+ printf "%s\n" "#define _ALL_SOURCE 1" >>confdefs.h
-# On IRIX 5.3, sys/types and inttypes.h are conflicting.
-for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
- inttypes.h stdint.h unistd.h
-do :
- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
-"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
+ printf "%s\n" "#define _DARWIN_C_SOURCE 1" >>confdefs.h
-fi
+ printf "%s\n" "#define _GNU_SOURCE 1" >>confdefs.h
-done
+ printf "%s\n" "#define _HPUX_ALT_XOPEN_SOCKET_API 1" >>confdefs.h
+ printf "%s\n" "#define _NETBSD_SOURCE 1" >>confdefs.h
+ printf "%s\n" "#define _OPENBSD_SOURCE 1" >>confdefs.h
- ac_fn_c_check_header_mongrel "$LINENO" "minix/config.h" "ac_cv_header_minix_config_h" "$ac_includes_default"
-if test "x$ac_cv_header_minix_config_h" = xyes; then :
- MINIX=yes
-else
- MINIX=
-fi
+ printf "%s\n" "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h
+ printf "%s\n" "#define __STDC_WANT_IEC_60559_ATTRIBS_EXT__ 1" >>confdefs.h
- if test "$MINIX" = yes; then
+ printf "%s\n" "#define __STDC_WANT_IEC_60559_BFP_EXT__ 1" >>confdefs.h
-$as_echo "#define _POSIX_SOURCE 1" >>confdefs.h
+ printf "%s\n" "#define __STDC_WANT_IEC_60559_DFP_EXT__ 1" >>confdefs.h
+ printf "%s\n" "#define __STDC_WANT_IEC_60559_FUNCS_EXT__ 1" >>confdefs.h
-$as_echo "#define _POSIX_1_SOURCE 2" >>confdefs.h
+ printf "%s\n" "#define __STDC_WANT_IEC_60559_TYPES_EXT__ 1" >>confdefs.h
+ printf "%s\n" "#define __STDC_WANT_LIB_EXT2__ 1" >>confdefs.h
-$as_echo "#define _MINIX 1" >>confdefs.h
+ printf "%s\n" "#define __STDC_WANT_MATH_SPEC_FUNCS__ 1" >>confdefs.h
- fi
+ printf "%s\n" "#define _TANDEM_SOURCE 1" >>confdefs.h
+ if test $ac_cv_header_minix_config_h = yes
+then :
+ MINIX=yes
+ printf "%s\n" "#define _MINIX 1" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5
-$as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; }
-if ${ac_cv_safe_to_define___extensions__+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
+ printf "%s\n" "#define _POSIX_SOURCE 1" >>confdefs.h
-# define __EXTENSIONS__ 1
- $ac_includes_default
-int
-main ()
-{
+ printf "%s\n" "#define _POSIX_1_SOURCE 2" >>confdefs.h
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_safe_to_define___extensions__=yes
-else
- ac_cv_safe_to_define___extensions__=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else $as_nop
+ MINIX=
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5
-$as_echo "$ac_cv_safe_to_define___extensions__" >&6; }
- test $ac_cv_safe_to_define___extensions__ = yes &&
- $as_echo "#define __EXTENSIONS__ 1" >>confdefs.h
-
- $as_echo "#define _ALL_SOURCE 1" >>confdefs.h
+ if test $ac_cv_safe_to_define___extensions__ = yes
+then :
+ printf "%s\n" "#define __EXTENSIONS__ 1" >>confdefs.h
- $as_echo "#define _GNU_SOURCE 1" >>confdefs.h
-
- $as_echo "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h
-
- $as_echo "#define _TANDEM_SOURCE 1" >>confdefs.h
+fi
+ if test $ac_cv_should_define__xopen_source = yes
+then :
+ printf "%s\n" "#define _XOPEN_SOURCE 500" >>confdefs.h
+fi
enable_win32_dll=yes
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args.
set dummy ${ac_tool_prefix}as; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_AS+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_AS+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$AS"; then
ac_cv_prog_AS="$AS" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_AS="${ac_tool_prefix}as"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
AS=$ac_cv_prog_AS
if test -n "$AS"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AS" >&5
-$as_echo "$AS" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AS" >&5
+printf "%s\n" "$AS" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
ac_ct_AS=$AS
# Extract the first word of "as", so it can be a program name with args.
set dummy as; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_AS+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_AS+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$ac_ct_AS"; then
ac_cv_prog_ac_ct_AS="$ac_ct_AS" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_AS="as"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
ac_ct_AS=$ac_cv_prog_ac_ct_AS
if test -n "$ac_ct_AS"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AS" >&5
-$as_echo "$ac_ct_AS" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AS" >&5
+printf "%s\n" "$ac_ct_AS" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test "x$ac_ct_AS" = x; then
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
AS=$ac_ct_AS
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
set dummy ${ac_tool_prefix}dlltool; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_DLLTOOL+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_DLLTOOL+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$DLLTOOL"; then
ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
DLLTOOL=$ac_cv_prog_DLLTOOL
if test -n "$DLLTOOL"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
-$as_echo "$DLLTOOL" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
+printf "%s\n" "$DLLTOOL" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
ac_ct_DLLTOOL=$DLLTOOL
# Extract the first word of "dlltool", so it can be a program name with args.
set dummy dlltool; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_DLLTOOL+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$ac_ct_DLLTOOL"; then
ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_DLLTOOL="dlltool"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
if test -n "$ac_ct_DLLTOOL"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
-$as_echo "$ac_ct_DLLTOOL" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
+printf "%s\n" "$ac_ct_DLLTOOL" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test "x$ac_ct_DLLTOOL" = x; then
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
DLLTOOL=$ac_ct_DLLTOOL
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
set dummy ${ac_tool_prefix}objdump; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_OBJDUMP+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_OBJDUMP+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$OBJDUMP"; then
ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
OBJDUMP=$ac_cv_prog_OBJDUMP
if test -n "$OBJDUMP"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
-$as_echo "$OBJDUMP" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
+printf "%s\n" "$OBJDUMP" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
ac_ct_OBJDUMP=$OBJDUMP
# Extract the first word of "objdump", so it can be a program name with args.
set dummy objdump; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_OBJDUMP+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$ac_ct_OBJDUMP"; then
ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_OBJDUMP="objdump"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
if test -n "$ac_ct_OBJDUMP"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
-$as_echo "$ac_ct_OBJDUMP" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
+printf "%s\n" "$ac_ct_OBJDUMP" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test "x$ac_ct_OBJDUMP" = x; then
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
OBJDUMP=$ac_ct_OBJDUMP
case `pwd` in
*\ * | *\ *)
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5
-$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;;
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5
+printf "%s\n" "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;;
esac
+
ltmain=$ac_aux_dir/ltmain.sh
# Backslashify metacharacters that are still active within
ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5
-$as_echo_n "checking how to print strings... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5
+printf %s "checking how to print strings... " >&6; }
# Test print first, because it will be a builtin if present.
if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
}
case $ECHO in
- printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5
-$as_echo "printf" >&6; } ;;
- print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5
-$as_echo "print -r" >&6; } ;;
- *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5
-$as_echo "cat" >&6; } ;;
+ printf*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: printf" >&5
+printf "%s\n" "printf" >&6; } ;;
+ print*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: print -r" >&5
+printf "%s\n" "print -r" >&6; } ;;
+ *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: cat" >&5
+printf "%s\n" "cat" >&6; } ;;
esac
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
-$as_echo_n "checking for a sed that does not truncate output... " >&6; }
-if ${ac_cv_path_SED+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
+printf %s "checking for a sed that does not truncate output... " >&6; }
+if test ${ac_cv_path_SED+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
for ac_i in 1 2 3 4 5 6 7; do
ac_script="$ac_script$as_nl$ac_script"
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_prog in sed gsed; do
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_prog in sed gsed
+ do
for ac_exec_ext in '' $ac_executable_extensions; do
- ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
+ ac_path_SED="$as_dir$ac_prog$ac_exec_ext"
as_fn_executable_p "$ac_path_SED" || continue
# Check for GNU ac_path_SED and select it if it is found.
# Check for GNU $ac_path_SED
ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
*)
ac_count=0
- $as_echo_n 0123456789 >"conftest.in"
+ printf %s 0123456789 >"conftest.in"
while :
do
cat "conftest.in" "conftest.in" >"conftest.tmp"
mv "conftest.tmp" "conftest.in"
cp "conftest.in" "conftest.nl"
- $as_echo '' >> "conftest.nl"
+ printf "%s\n" '' >> "conftest.nl"
"$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break
diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
as_fn_arith $ac_count + 1 && ac_count=$as_val
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
-$as_echo "$ac_cv_path_SED" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
+printf "%s\n" "$ac_cv_path_SED" >&6; }
SED="$ac_cv_path_SED"
rm -f conftest.sed
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5
-$as_echo_n "checking for fgrep... " >&6; }
-if ${ac_cv_path_FGREP+:} false; then :
- $as_echo_n "(cached) " >&6
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
+printf %s "checking for grep that handles long lines and -e... " >&6; }
+if test ${ac_cv_path_GREP+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test -z "$GREP"; then
+ ac_path_GREP_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_prog in grep ggrep
+ do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_GREP="$as_dir$ac_prog$ac_exec_ext"
+ as_fn_executable_p "$ac_path_GREP" || continue
+# Check for GNU ac_path_GREP and select it if it is found.
+ # Check for GNU $ac_path_GREP
+case `"$ac_path_GREP" --version 2>&1` in
+*GNU*)
+ ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+*)
+ ac_count=0
+ printf %s 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ printf "%s\n" 'GREP' >> "conftest.nl"
+ "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ as_fn_arith $ac_count + 1 && ac_count=$as_val
+ if test $ac_count -gt ${ac_path_GREP_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_GREP="$ac_path_GREP"
+ ac_path_GREP_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+ $ac_path_GREP_found && break 3
+ done
+ done
+ done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_GREP"; then
+ as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+ fi
+else
+ ac_cv_path_GREP=$GREP
+fi
+
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
+printf "%s\n" "$ac_cv_path_GREP" >&6; }
+ GREP="$ac_cv_path_GREP"
+
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
+printf %s "checking for egrep... " >&6; }
+if test ${ac_cv_path_EGREP+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
+ then ac_cv_path_EGREP="$GREP -E"
+ else
+ if test -z "$EGREP"; then
+ ac_path_EGREP_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_prog in egrep
+ do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_EGREP="$as_dir$ac_prog$ac_exec_ext"
+ as_fn_executable_p "$ac_path_EGREP" || continue
+# Check for GNU ac_path_EGREP and select it if it is found.
+ # Check for GNU $ac_path_EGREP
+case `"$ac_path_EGREP" --version 2>&1` in
+*GNU*)
+ ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+*)
+ ac_count=0
+ printf %s 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ printf "%s\n" 'EGREP' >> "conftest.nl"
+ "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ as_fn_arith $ac_count + 1 && ac_count=$as_val
+ if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_EGREP="$ac_path_EGREP"
+ ac_path_EGREP_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+ $ac_path_EGREP_found && break 3
+ done
+ done
+ done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_EGREP"; then
+ as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+ fi
else
+ ac_cv_path_EGREP=$EGREP
+fi
+
+ fi
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
+printf "%s\n" "$ac_cv_path_EGREP" >&6; }
+ EGREP="$ac_cv_path_EGREP"
+
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5
+printf %s "checking for fgrep... " >&6; }
+if test ${ac_cv_path_FGREP+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1
then ac_cv_path_FGREP="$GREP -F"
else
for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_prog in fgrep; do
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_prog in fgrep
+ do
for ac_exec_ext in '' $ac_executable_extensions; do
- ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext"
+ ac_path_FGREP="$as_dir$ac_prog$ac_exec_ext"
as_fn_executable_p "$ac_path_FGREP" || continue
# Check for GNU ac_path_FGREP and select it if it is found.
# Check for GNU $ac_path_FGREP
ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;;
*)
ac_count=0
- $as_echo_n 0123456789 >"conftest.in"
+ printf %s 0123456789 >"conftest.in"
while :
do
cat "conftest.in" "conftest.in" >"conftest.tmp"
mv "conftest.tmp" "conftest.in"
cp "conftest.in" "conftest.nl"
- $as_echo 'FGREP' >> "conftest.nl"
+ printf "%s\n" 'FGREP' >> "conftest.nl"
"$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break
diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
as_fn_arith $ac_count + 1 && ac_count=$as_val
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5
-$as_echo "$ac_cv_path_FGREP" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5
+printf "%s\n" "$ac_cv_path_FGREP" >&6; }
FGREP="$ac_cv_path_FGREP"
# Check whether --with-gnu-ld was given.
-if test "${with_gnu_ld+set}" = set; then :
+if test ${with_gnu_ld+y}
+then :
withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes
-else
+else $as_nop
with_gnu_ld=no
fi
ac_prog=ld
if test yes = "$GCC"; then
# Check if gcc -print-prog-name=ld gives a path.
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
-$as_echo_n "checking for ld used by $CC... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
+printf %s "checking for ld used by $CC... " >&6; }
case $host in
*-*-mingw*)
# gcc leaves a trailing carriage return, which upsets mingw
;;
esac
elif test yes = "$with_gnu_ld"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
-$as_echo_n "checking for GNU ld... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
+printf %s "checking for GNU ld... " >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
-$as_echo_n "checking for non-GNU ld... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
+printf %s "checking for non-GNU ld... " >&6; }
fi
-if ${lt_cv_path_LD+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+if test ${lt_cv_path_LD+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -z "$LD"; then
lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
for ac_dir in $PATH; do
LD=$lt_cv_path_LD
if test -n "$LD"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
-$as_echo "$LD" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
+printf "%s\n" "$LD" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
-$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
-if ${lt_cv_prog_gnu_ld+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
+printf %s "checking if the linker ($LD) is GNU ld... " >&6; }
+if test ${lt_cv_prog_gnu_ld+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
# I'd rather use --version here, but apparently some GNU lds only accept -v.
case `$LD -v 2>&1 </dev/null` in
*GNU* | *'with BFD'*)
;;
esac
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5
-$as_echo "$lt_cv_prog_gnu_ld" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5
+printf "%s\n" "$lt_cv_prog_gnu_ld" >&6; }
with_gnu_ld=$lt_cv_prog_gnu_ld
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5
-$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; }
-if ${lt_cv_path_NM+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5
+printf %s "checking for BSD- or MS-compatible name lister (nm)... " >&6; }
+if test ${lt_cv_path_NM+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$NM"; then
# Let the user override the test.
lt_cv_path_NM=$NM
: ${lt_cv_path_NM=no}
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5
-$as_echo "$lt_cv_path_NM" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5
+printf "%s\n" "$lt_cv_path_NM" >&6; }
if test no != "$lt_cv_path_NM"; then
NM=$lt_cv_path_NM
else
do
# Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_DUMPBIN+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_DUMPBIN+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$DUMPBIN"; then
ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
DUMPBIN=$ac_cv_prog_DUMPBIN
if test -n "$DUMPBIN"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5
-$as_echo "$DUMPBIN" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5
+printf "%s\n" "$DUMPBIN" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_DUMPBIN+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$ac_ct_DUMPBIN"; then
ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_DUMPBIN="$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN
if test -n "$ac_ct_DUMPBIN"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5
-$as_echo "$ac_ct_DUMPBIN" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5
+printf "%s\n" "$ac_ct_DUMPBIN" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
DUMPBIN=$ac_ct_DUMPBIN
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5
-$as_echo_n "checking the name lister ($NM) interface... " >&6; }
-if ${lt_cv_nm_interface+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5
+printf %s "checking the name lister ($NM) interface... " >&6; }
+if test ${lt_cv_nm_interface+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
lt_cv_nm_interface="BSD nm"
echo "int some_variable = 0;" > conftest.$ac_ext
(eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5)
fi
rm -f conftest*
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5
-$as_echo "$lt_cv_nm_interface" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5
+printf "%s\n" "$lt_cv_nm_interface" >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
-$as_echo_n "checking whether ln -s works... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
+printf %s "checking whether ln -s works... " >&6; }
LN_S=$as_ln_s
if test "$LN_S" = "ln -s"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5
-$as_echo "no, using $LN_S" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5
+printf "%s\n" "no, using $LN_S" >&6; }
fi
# find the maximum length of command line arguments
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5
-$as_echo_n "checking the maximum length of command line arguments... " >&6; }
-if ${lt_cv_sys_max_cmd_len+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5
+printf %s "checking the maximum length of command line arguments... " >&6; }
+if test ${lt_cv_sys_max_cmd_len+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
i=0
teststring=ABCD
fi
if test -n "$lt_cv_sys_max_cmd_len"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5
-$as_echo "$lt_cv_sys_max_cmd_len" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5
+printf "%s\n" "$lt_cv_sys_max_cmd_len" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5
-$as_echo "none" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none" >&5
+printf "%s\n" "none" >&6; }
fi
max_cmd_len=$lt_cv_sys_max_cmd_len
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5
-$as_echo_n "checking how to convert $build file names to $host format... " >&6; }
-if ${lt_cv_to_host_file_cmd+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5
+printf %s "checking how to convert $build file names to $host format... " >&6; }
+if test ${lt_cv_to_host_file_cmd+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $host in
*-*-mingw* )
case $build in
fi
to_host_file_cmd=$lt_cv_to_host_file_cmd
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5
-$as_echo "$lt_cv_to_host_file_cmd" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5
+printf "%s\n" "$lt_cv_to_host_file_cmd" >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5
-$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; }
-if ${lt_cv_to_tool_file_cmd+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5
+printf %s "checking how to convert $build file names to toolchain format... " >&6; }
+if test ${lt_cv_to_tool_file_cmd+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
#assume ordinary cross tools, or native build.
lt_cv_to_tool_file_cmd=func_convert_file_noop
case $host in
fi
to_tool_file_cmd=$lt_cv_to_tool_file_cmd
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5
-$as_echo "$lt_cv_to_tool_file_cmd" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5
+printf "%s\n" "$lt_cv_to_tool_file_cmd" >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
-$as_echo_n "checking for $LD option to reload object files... " >&6; }
-if ${lt_cv_ld_reload_flag+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
+printf %s "checking for $LD option to reload object files... " >&6; }
+if test ${lt_cv_ld_reload_flag+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
lt_cv_ld_reload_flag='-r'
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5
-$as_echo "$lt_cv_ld_reload_flag" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5
+printf "%s\n" "$lt_cv_ld_reload_flag" >&6; }
reload_flag=$lt_cv_ld_reload_flag
case $reload_flag in
"" | " "*) ;;
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
set dummy ${ac_tool_prefix}objdump; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_OBJDUMP+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_OBJDUMP+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$OBJDUMP"; then
ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
OBJDUMP=$ac_cv_prog_OBJDUMP
if test -n "$OBJDUMP"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
-$as_echo "$OBJDUMP" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
+printf "%s\n" "$OBJDUMP" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
ac_ct_OBJDUMP=$OBJDUMP
# Extract the first word of "objdump", so it can be a program name with args.
set dummy objdump; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_OBJDUMP+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$ac_ct_OBJDUMP"; then
ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_OBJDUMP="objdump"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
if test -n "$ac_ct_OBJDUMP"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
-$as_echo "$ac_ct_OBJDUMP" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
+printf "%s\n" "$ac_ct_OBJDUMP" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test "x$ac_ct_OBJDUMP" = x; then
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
OBJDUMP=$ac_ct_OBJDUMP
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5
-$as_echo_n "checking how to recognize dependent libraries... " >&6; }
-if ${lt_cv_deplibs_check_method+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5
+printf %s "checking how to recognize dependent libraries... " >&6; }
+if test ${lt_cv_deplibs_check_method+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
lt_cv_file_magic_cmd='$MAGIC_CMD'
lt_cv_file_magic_test_file=
lt_cv_deplibs_check_method='unknown'
esac
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5
-$as_echo "$lt_cv_deplibs_check_method" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5
+printf "%s\n" "$lt_cv_deplibs_check_method" >&6; }
file_magic_glob=
want_nocaseglob=no
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
set dummy ${ac_tool_prefix}dlltool; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_DLLTOOL+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_DLLTOOL+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$DLLTOOL"; then
ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
DLLTOOL=$ac_cv_prog_DLLTOOL
if test -n "$DLLTOOL"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
-$as_echo "$DLLTOOL" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
+printf "%s\n" "$DLLTOOL" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
ac_ct_DLLTOOL=$DLLTOOL
# Extract the first word of "dlltool", so it can be a program name with args.
set dummy dlltool; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_DLLTOOL+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$ac_ct_DLLTOOL"; then
ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_DLLTOOL="dlltool"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
if test -n "$ac_ct_DLLTOOL"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
-$as_echo "$ac_ct_DLLTOOL" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
+printf "%s\n" "$ac_ct_DLLTOOL" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test "x$ac_ct_DLLTOOL" = x; then
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
DLLTOOL=$ac_ct_DLLTOOL
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5
-$as_echo_n "checking how to associate runtime and link libraries... " >&6; }
-if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5
+printf %s "checking how to associate runtime and link libraries... " >&6; }
+if test ${lt_cv_sharedlib_from_linklib_cmd+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
lt_cv_sharedlib_from_linklib_cmd='unknown'
case $host_os in
esac
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5
-$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5
+printf "%s\n" "$lt_cv_sharedlib_from_linklib_cmd" >&6; }
sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
do
# Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_AR+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_AR+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$AR"; then
ac_cv_prog_AR="$AR" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
AR=$ac_cv_prog_AR
if test -n "$AR"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
-$as_echo "$AR" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
+printf "%s\n" "$AR" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_AR+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_AR+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$ac_ct_AR"; then
ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_AR="$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
ac_ct_AR=$ac_cv_prog_ac_ct_AR
if test -n "$ac_ct_AR"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
-$as_echo "$ac_ct_AR" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
+printf "%s\n" "$ac_ct_AR" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
AR=$ac_ct_AR
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5
-$as_echo_n "checking for archiver @FILE support... " >&6; }
-if ${lt_cv_ar_at_file+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5
+printf %s "checking for archiver @FILE support... " >&6; }
+if test ${lt_cv_ar_at_file+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
lt_cv_ar_at_file=no
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
echo conftest.$ac_objext > conftest.lst
lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5'
{ { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
(eval $lt_ar_try) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
if test 0 -eq "$ac_status"; then
# Ensure the archiver fails upon bogus file names.
{ { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
(eval $lt_ar_try) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
if test 0 -ne "$ac_status"; then
lt_cv_ar_at_file=@
rm -f conftest.* libconftest.a
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5
-$as_echo "$lt_cv_ar_at_file" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5
+printf "%s\n" "$lt_cv_ar_at_file" >&6; }
if test no = "$lt_cv_ar_at_file"; then
archiver_list_spec=
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
set dummy ${ac_tool_prefix}strip; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_STRIP+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_STRIP+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$STRIP"; then
ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_STRIP="${ac_tool_prefix}strip"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
STRIP=$ac_cv_prog_STRIP
if test -n "$STRIP"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
-$as_echo "$STRIP" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
+printf "%s\n" "$STRIP" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
ac_ct_STRIP=$STRIP
# Extract the first word of "strip", so it can be a program name with args.
set dummy strip; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_STRIP+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$ac_ct_STRIP"; then
ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_STRIP="strip"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
if test -n "$ac_ct_STRIP"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
-$as_echo "$ac_ct_STRIP" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
+printf "%s\n" "$ac_ct_STRIP" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test "x$ac_ct_STRIP" = x; then
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
STRIP=$ac_ct_STRIP
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
set dummy ${ac_tool_prefix}ranlib; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_RANLIB+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_RANLIB+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$RANLIB"; then
ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
RANLIB=$ac_cv_prog_RANLIB
if test -n "$RANLIB"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
-$as_echo "$RANLIB" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
+printf "%s\n" "$RANLIB" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
ac_ct_RANLIB=$RANLIB
# Extract the first word of "ranlib", so it can be a program name with args.
set dummy ranlib; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_RANLIB+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$ac_ct_RANLIB"; then
ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_RANLIB="ranlib"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
if test -n "$ac_ct_RANLIB"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
-$as_echo "$ac_ct_RANLIB" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
+printf "%s\n" "$ac_ct_RANLIB" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test "x$ac_ct_RANLIB" = x; then
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
RANLIB=$ac_ct_RANLIB
# Check for command to grab the raw symbol name followed by C symbol from nm.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5
-$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; }
-if ${lt_cv_sys_global_symbol_pipe+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5
+printf %s "checking command to parse $NM output from $compiler object... " >&6; }
+if test ${lt_cv_sys_global_symbol_pipe+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
# These are sane defaults that work on at least a few old systems.
# [They come from Ultrix. What could be older than Ultrix?!! ;)]
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
(eval $ac_compile) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
# Now try to grab the symbols.
nlist=conftest.nm
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
(eval $ac_link) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } && test -s conftest$ac_exeext; then
pipe_works=yes
fi
lt_cv_sys_global_symbol_to_cdecl=
fi
if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5
-$as_echo "failed" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: failed" >&5
+printf "%s\n" "failed" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
-$as_echo "ok" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok" >&5
+printf "%s\n" "ok" >&6; }
fi
# Response file support.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
-$as_echo_n "checking for sysroot... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
+printf %s "checking for sysroot... " >&6; }
# Check whether --with-sysroot was given.
-if test "${with_sysroot+set}" = set; then :
+if test ${with_sysroot+y}
+then :
withval=$with_sysroot;
-else
+else $as_nop
with_sysroot=no
fi
no|'')
;; #(
*)
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5
-$as_echo "$with_sysroot" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5
+printf "%s\n" "$with_sysroot" >&6; }
as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5
;;
esac
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5
-$as_echo "${lt_sysroot:-no}" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5
+printf "%s\n" "${lt_sysroot:-no}" >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5
-$as_echo_n "checking for a working dd... " >&6; }
-if ${ac_cv_path_lt_DD+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5
+printf %s "checking for a working dd... " >&6; }
+if test ${ac_cv_path_lt_DD+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
printf 0123456789abcdef0123456789abcdef >conftest.i
cat conftest.i conftest.i >conftest2.i
: ${lt_DD:=$DD}
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_prog in dd; do
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_prog in dd
+ do
for ac_exec_ext in '' $ac_executable_extensions; do
- ac_path_lt_DD="$as_dir/$ac_prog$ac_exec_ext"
+ ac_path_lt_DD="$as_dir$ac_prog$ac_exec_ext"
as_fn_executable_p "$ac_path_lt_DD" || continue
if "$ac_path_lt_DD" bs=32 count=1 <conftest2.i >conftest.out 2>/dev/null; then
cmp -s conftest.i conftest.out \
rm -f conftest.i conftest2.i conftest.out
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5
-$as_echo "$ac_cv_path_lt_DD" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5
+printf "%s\n" "$ac_cv_path_lt_DD" >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5
-$as_echo_n "checking how to truncate binary pipes... " >&6; }
-if ${lt_cv_truncate_bin+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5
+printf %s "checking how to truncate binary pipes... " >&6; }
+if test ${lt_cv_truncate_bin+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
printf 0123456789abcdef0123456789abcdef >conftest.i
cat conftest.i conftest.i >conftest2.i
lt_cv_truncate_bin=
rm -f conftest.i conftest2.i conftest.out
test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q"
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5
-$as_echo "$lt_cv_truncate_bin" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5
+printf "%s\n" "$lt_cv_truncate_bin" >&6; }
}
# Check whether --enable-libtool-lock was given.
-if test "${enable_libtool_lock+set}" = set; then :
+if test ${enable_libtool_lock+y}
+then :
enableval=$enable_libtool_lock;
fi
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
(eval $ac_compile) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
case `/usr/bin/file conftest.$ac_objext` in
*ELF-32*)
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
(eval $ac_compile) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
if test yes = "$lt_cv_prog_gnu_ld"; then
case `/usr/bin/file conftest.$ac_objext` in
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
(eval $ac_compile) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
emul=elf
case `/usr/bin/file conftest.$ac_objext` in
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
(eval $ac_compile) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
case `/usr/bin/file conftest.o` in
*32-bit*)
# On SCO OpenServer 5, we need -belf to get full-featured binaries.
SAVE_CFLAGS=$CFLAGS
CFLAGS="$CFLAGS -belf"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5
-$as_echo_n "checking whether the C compiler needs -belf... " >&6; }
-if ${lt_cv_cc_needs_belf+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5
+printf %s "checking whether the C compiler needs -belf... " >&6; }
+if test ${lt_cv_cc_needs_belf+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
lt_cv_cc_needs_belf=yes
-else
+else $as_nop
lt_cv_cc_needs_belf=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compiler_gnu=$ac_cv_c_compiler_gnu
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5
-$as_echo "$lt_cv_cc_needs_belf" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5
+printf "%s\n" "$lt_cv_cc_needs_belf" >&6; }
if test yes != "$lt_cv_cc_needs_belf"; then
# this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
CFLAGS=$SAVE_CFLAGS
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
(eval $ac_compile) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
case `/usr/bin/file conftest.o` in
*64-bit*)
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args.
set dummy ${ac_tool_prefix}mt; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_MANIFEST_TOOL+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_MANIFEST_TOOL+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$MANIFEST_TOOL"; then
ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL
if test -n "$MANIFEST_TOOL"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5
-$as_echo "$MANIFEST_TOOL" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5
+printf "%s\n" "$MANIFEST_TOOL" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL
# Extract the first word of "mt", so it can be a program name with args.
set dummy mt; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_MANIFEST_TOOL+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$ac_ct_MANIFEST_TOOL"; then
ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_MANIFEST_TOOL="mt"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL
if test -n "$ac_ct_MANIFEST_TOOL"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5
-$as_echo "$ac_ct_MANIFEST_TOOL" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5
+printf "%s\n" "$ac_ct_MANIFEST_TOOL" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test "x$ac_ct_MANIFEST_TOOL" = x; then
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL
fi
test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5
-$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; }
-if ${lt_cv_path_mainfest_tool+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5
+printf %s "checking if $MANIFEST_TOOL is a manifest tool... " >&6; }
+if test ${lt_cv_path_mainfest_tool+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
lt_cv_path_mainfest_tool=no
echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5
$MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
fi
rm -f conftest*
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5
-$as_echo "$lt_cv_path_mainfest_tool" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5
+printf "%s\n" "$lt_cv_path_mainfest_tool" >&6; }
if test yes != "$lt_cv_path_mainfest_tool"; then
MANIFEST_TOOL=:
fi
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args.
set dummy ${ac_tool_prefix}dsymutil; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_DSYMUTIL+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_DSYMUTIL+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$DSYMUTIL"; then
ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
DSYMUTIL=$ac_cv_prog_DSYMUTIL
if test -n "$DSYMUTIL"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5
-$as_echo "$DSYMUTIL" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5
+printf "%s\n" "$DSYMUTIL" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
ac_ct_DSYMUTIL=$DSYMUTIL
# Extract the first word of "dsymutil", so it can be a program name with args.
set dummy dsymutil; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_DSYMUTIL+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$ac_ct_DSYMUTIL"; then
ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_DSYMUTIL="dsymutil"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL
if test -n "$ac_ct_DSYMUTIL"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5
-$as_echo "$ac_ct_DSYMUTIL" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5
+printf "%s\n" "$ac_ct_DSYMUTIL" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test "x$ac_ct_DSYMUTIL" = x; then
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
DSYMUTIL=$ac_ct_DSYMUTIL
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args.
set dummy ${ac_tool_prefix}nmedit; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_NMEDIT+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_NMEDIT+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$NMEDIT"; then
ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
NMEDIT=$ac_cv_prog_NMEDIT
if test -n "$NMEDIT"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5
-$as_echo "$NMEDIT" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5
+printf "%s\n" "$NMEDIT" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
ac_ct_NMEDIT=$NMEDIT
# Extract the first word of "nmedit", so it can be a program name with args.
set dummy nmedit; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_NMEDIT+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$ac_ct_NMEDIT"; then
ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_NMEDIT="nmedit"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT
if test -n "$ac_ct_NMEDIT"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5
-$as_echo "$ac_ct_NMEDIT" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5
+printf "%s\n" "$ac_ct_NMEDIT" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test "x$ac_ct_NMEDIT" = x; then
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
NMEDIT=$ac_ct_NMEDIT
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args.
set dummy ${ac_tool_prefix}lipo; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_LIPO+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_LIPO+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$LIPO"; then
ac_cv_prog_LIPO="$LIPO" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_LIPO="${ac_tool_prefix}lipo"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
LIPO=$ac_cv_prog_LIPO
if test -n "$LIPO"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5
-$as_echo "$LIPO" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5
+printf "%s\n" "$LIPO" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
ac_ct_LIPO=$LIPO
# Extract the first word of "lipo", so it can be a program name with args.
set dummy lipo; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_LIPO+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_LIPO+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$ac_ct_LIPO"; then
ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_LIPO="lipo"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO
if test -n "$ac_ct_LIPO"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5
-$as_echo "$ac_ct_LIPO" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5
+printf "%s\n" "$ac_ct_LIPO" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test "x$ac_ct_LIPO" = x; then
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
LIPO=$ac_ct_LIPO
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args.
set dummy ${ac_tool_prefix}otool; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_OTOOL+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_OTOOL+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$OTOOL"; then
ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_OTOOL="${ac_tool_prefix}otool"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
OTOOL=$ac_cv_prog_OTOOL
if test -n "$OTOOL"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5
-$as_echo "$OTOOL" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5
+printf "%s\n" "$OTOOL" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
ac_ct_OTOOL=$OTOOL
# Extract the first word of "otool", so it can be a program name with args.
set dummy otool; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_OTOOL+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_OTOOL+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$ac_ct_OTOOL"; then
ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_OTOOL="otool"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL
if test -n "$ac_ct_OTOOL"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5
-$as_echo "$ac_ct_OTOOL" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5
+printf "%s\n" "$ac_ct_OTOOL" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test "x$ac_ct_OTOOL" = x; then
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
OTOOL=$ac_ct_OTOOL
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args.
set dummy ${ac_tool_prefix}otool64; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_OTOOL64+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_OTOOL64+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$OTOOL64"; then
ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
OTOOL64=$ac_cv_prog_OTOOL64
if test -n "$OTOOL64"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5
-$as_echo "$OTOOL64" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5
+printf "%s\n" "$OTOOL64" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
ac_ct_OTOOL64=$OTOOL64
# Extract the first word of "otool64", so it can be a program name with args.
set dummy otool64; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_OTOOL64+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$ac_ct_OTOOL64"; then
ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_OTOOL64="otool64"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64
if test -n "$ac_ct_OTOOL64"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5
-$as_echo "$ac_ct_OTOOL64" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5
+printf "%s\n" "$ac_ct_OTOOL64" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test "x$ac_ct_OTOOL64" = x; then
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
OTOOL64=$ac_ct_OTOOL64
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5
-$as_echo_n "checking for -single_module linker flag... " >&6; }
-if ${lt_cv_apple_cc_single_mod+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5
+printf %s "checking for -single_module linker flag... " >&6; }
+if test ${lt_cv_apple_cc_single_mod+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
lt_cv_apple_cc_single_mod=no
if test -z "$LT_MULTI_MODULE"; then
# By default we will add the -single_module flag. You can override
rm -f conftest.*
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5
-$as_echo "$lt_cv_apple_cc_single_mod" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5
+printf "%s\n" "$lt_cv_apple_cc_single_mod" >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5
-$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; }
-if ${lt_cv_ld_exported_symbols_list+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5
+printf %s "checking for -exported_symbols_list linker flag... " >&6; }
+if test ${lt_cv_ld_exported_symbols_list+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
lt_cv_ld_exported_symbols_list=no
save_LDFLAGS=$LDFLAGS
echo "_main" > conftest.sym
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
lt_cv_ld_exported_symbols_list=yes
-else
+else $as_nop
lt_cv_ld_exported_symbols_list=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LDFLAGS=$save_LDFLAGS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5
-$as_echo "$lt_cv_ld_exported_symbols_list" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5
+printf "%s\n" "$lt_cv_ld_exported_symbols_list" >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5
-$as_echo_n "checking for -force_load linker flag... " >&6; }
-if ${lt_cv_ld_force_load+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5
+printf %s "checking for -force_load linker flag... " >&6; }
+if test ${lt_cv_ld_force_load+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
lt_cv_ld_force_load=no
cat > conftest.c << _LT_EOF
int forced_loaded() { return 2;}
rm -rf conftest.dSYM
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5
-$as_echo "$lt_cv_ld_force_load" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5
+printf "%s\n" "$lt_cv_ld_force_load" >&6; }
case $host_os in
rhapsody* | darwin1.[012])
_lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;;
# to the OS version, if on x86, and 10.4, the deployment
# target defaults to 10.4. Don't you love it?
case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
- 10.0,*86*-darwin8*|10.0,*-darwin[91]*)
+ 10.0,*86*-darwin8*|10.0,*-darwin[912]*)
_lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;;
10.[012][,.]*)
_lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;;
- 10.*)
+ 10.*|11.*)
_lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;;
esac
;;
esac
}
-for ac_header in dlfcn.h
-do :
- ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default
+ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default
"
-if test "x$ac_cv_header_dlfcn_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_DLFCN_H 1
-_ACEOF
+if test "x$ac_cv_header_dlfcn_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_DLFCN_H 1" >>confdefs.h
fi
-done
-
# Check whether --enable-shared was given.
-if test "${enable_shared+set}" = set; then :
+if test ${enable_shared+y}
+then :
enableval=$enable_shared; p=${PACKAGE-default}
case $enableval in
yes) enable_shared=yes ;;
IFS=$lt_save_ifs
;;
esac
-else
+else $as_nop
enable_shared=yes
fi
# Check whether --enable-static was given.
-if test "${enable_static+set}" = set; then :
+if test ${enable_static+y}
+then :
enableval=$enable_static; p=${PACKAGE-default}
case $enableval in
yes) enable_static=yes ;;
IFS=$lt_save_ifs
;;
esac
-else
+else $as_nop
enable_static=yes
fi
# Check whether --with-pic was given.
-if test "${with_pic+set}" = set; then :
+if test ${with_pic+y}
+then :
withval=$with_pic; lt_p=${PACKAGE-default}
case $withval in
yes|no) pic_mode=$withval ;;
IFS=$lt_save_ifs
;;
esac
-else
+else $as_nop
pic_mode=default
fi
# Check whether --enable-fast-install was given.
-if test "${enable_fast_install+set}" = set; then :
+if test ${enable_fast_install+y}
+then :
enableval=$enable_fast_install; p=${PACKAGE-default}
case $enableval in
yes) enable_fast_install=yes ;;
IFS=$lt_save_ifs
;;
esac
-else
+else $as_nop
enable_fast_install=yes
fi
shared_archive_member_spec=
case $host,$enable_shared in
power*-*-aix[5-9]*,yes)
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5
-$as_echo_n "checking which variant of shared library versioning to provide... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5
+printf %s "checking which variant of shared library versioning to provide... " >&6; }
# Check whether --with-aix-soname was given.
-if test "${with_aix_soname+set}" = set; then :
+if test ${with_aix_soname+y}
+then :
withval=$with_aix_soname; case $withval in
aix|svr4|both)
;;
;;
esac
lt_cv_with_aix_soname=$with_aix_soname
-else
- if ${lt_cv_with_aix_soname+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+else $as_nop
+ if test ${lt_cv_with_aix_soname+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
lt_cv_with_aix_soname=aix
fi
with_aix_soname=$lt_cv_with_aix_soname
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5
-$as_echo "$with_aix_soname" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5
+printf "%s\n" "$with_aix_soname" >&6; }
if test aix != "$with_aix_soname"; then
# For the AIX way of multilib, we name the shared archive member
# based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o',
setopt NO_GLOB_SUBST
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5
-$as_echo_n "checking for objdir... " >&6; }
-if ${lt_cv_objdir+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5
+printf %s "checking for objdir... " >&6; }
+if test ${lt_cv_objdir+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
rm -f .libs 2>/dev/null
mkdir .libs 2>/dev/null
if test -d .libs; then
fi
rmdir .libs 2>/dev/null
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5
-$as_echo "$lt_cv_objdir" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5
+printf "%s\n" "$lt_cv_objdir" >&6; }
objdir=$lt_cv_objdir
-cat >>confdefs.h <<_ACEOF
-#define LT_OBJDIR "$lt_cv_objdir/"
-_ACEOF
+printf "%s\n" "#define LT_OBJDIR \"$lt_cv_objdir/\"" >>confdefs.h
case $deplibs_check_method in
file_magic*)
if test "$file_magic_cmd" = '$MAGIC_CMD'; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5
-$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; }
-if ${lt_cv_path_MAGIC_CMD+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5
+printf %s "checking for ${ac_tool_prefix}file... " >&6; }
+if test ${lt_cv_path_MAGIC_CMD+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $MAGIC_CMD in
[\\/*] | ?:[\\/]*)
lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path.
MAGIC_CMD=$lt_cv_path_MAGIC_CMD
if test -n "$MAGIC_CMD"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
-$as_echo "$MAGIC_CMD" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
+printf "%s\n" "$MAGIC_CMD" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test -z "$lt_cv_path_MAGIC_CMD"; then
if test -n "$ac_tool_prefix"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5
-$as_echo_n "checking for file... " >&6; }
-if ${lt_cv_path_MAGIC_CMD+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for file" >&5
+printf %s "checking for file... " >&6; }
+if test ${lt_cv_path_MAGIC_CMD+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $MAGIC_CMD in
[\\/*] | ?:[\\/]*)
lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path.
MAGIC_CMD=$lt_cv_path_MAGIC_CMD
if test -n "$MAGIC_CMD"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
-$as_echo "$MAGIC_CMD" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
+printf "%s\n" "$MAGIC_CMD" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;;
esac
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
-$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; }
-if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+printf %s "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; }
+if test ${lt_cv_prog_compiler_rtti_exceptions+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
lt_cv_prog_compiler_rtti_exceptions=no
ac_outfile=conftest.$ac_objext
echo "$lt_simple_compile_test_code" > conftest.$ac_ext
$RM conftest*
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
-$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
+printf "%s\n" "$lt_cv_prog_compiler_rtti_exceptions" >&6; }
if test yes = "$lt_cv_prog_compiler_rtti_exceptions"; then
lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions"
;;
esac
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
-$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
-if ${lt_cv_prog_compiler_pic+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
+printf %s "checking for $compiler option to produce PIC... " >&6; }
+if test ${lt_cv_prog_compiler_pic+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
lt_cv_prog_compiler_pic=$lt_prog_compiler_pic
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5
-$as_echo "$lt_cv_prog_compiler_pic" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5
+printf "%s\n" "$lt_cv_prog_compiler_pic" >&6; }
lt_prog_compiler_pic=$lt_cv_prog_compiler_pic
#
# Check to make sure the PIC flag actually works.
#
if test -n "$lt_prog_compiler_pic"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
-$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; }
-if ${lt_cv_prog_compiler_pic_works+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
+printf %s "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; }
+if test ${lt_cv_prog_compiler_pic_works+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
lt_cv_prog_compiler_pic_works=no
ac_outfile=conftest.$ac_objext
echo "$lt_simple_compile_test_code" > conftest.$ac_ext
$RM conftest*
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5
-$as_echo "$lt_cv_prog_compiler_pic_works" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5
+printf "%s\n" "$lt_cv_prog_compiler_pic_works" >&6; }
if test yes = "$lt_cv_prog_compiler_pic_works"; then
case $lt_prog_compiler_pic in
# Check to make sure the static flag actually works.
#
wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
-$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
-if ${lt_cv_prog_compiler_static_works+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+printf %s "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
+if test ${lt_cv_prog_compiler_static_works+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
lt_cv_prog_compiler_static_works=no
save_LDFLAGS=$LDFLAGS
LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
LDFLAGS=$save_LDFLAGS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5
-$as_echo "$lt_cv_prog_compiler_static_works" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5
+printf "%s\n" "$lt_cv_prog_compiler_static_works" >&6; }
if test yes = "$lt_cv_prog_compiler_static_works"; then
:
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
-$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if ${lt_cv_prog_compiler_c_o+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
+printf %s "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if test ${lt_cv_prog_compiler_c_o+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
lt_cv_prog_compiler_c_o=no
$RM -r conftest 2>/dev/null
mkdir conftest
$RM conftest*
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
-$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
+printf "%s\n" "$lt_cv_prog_compiler_c_o" >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
-$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if ${lt_cv_prog_compiler_c_o+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
+printf %s "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if test ${lt_cv_prog_compiler_c_o+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
lt_cv_prog_compiler_c_o=no
$RM -r conftest 2>/dev/null
mkdir conftest
$RM conftest*
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
-$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
+printf "%s\n" "$lt_cv_prog_compiler_c_o" >&6; }
hard_links=nottested
if test no = "$lt_cv_prog_compiler_c_o" && test no != "$need_locks"; then
# do not overwrite the value of need_locks provided by the user
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
-$as_echo_n "checking if we can lock with hard links... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
+printf %s "checking if we can lock with hard links... " >&6; }
hard_links=yes
$RM conftest*
ln conftest.a conftest.b 2>/dev/null && hard_links=no
touch conftest.a
ln conftest.a conftest.b 2>&5 || hard_links=no
ln conftest.a conftest.b 2>/dev/null && hard_links=no
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
-$as_echo "$hard_links" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
+printf "%s\n" "$hard_links" >&6; }
if test no = "$hard_links"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5
-$as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5
+printf "%s\n" "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;}
need_locks=warn
fi
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
-$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+printf %s "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
runpath_var=
allow_undefined_flag=
if test set = "${lt_cv_aix_libpath+set}"; then
aix_libpath=$lt_cv_aix_libpath
else
- if ${lt_cv_aix_libpath_+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ if test ${lt_cv_aix_libpath_+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
lt_aix_libpath_sed='
/Import File Strings/,/^$/ {
lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
fi
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
if test -z "$lt_cv_aix_libpath_"; then
lt_cv_aix_libpath_=/usr/lib:/lib
if test set = "${lt_cv_aix_libpath+set}"; then
aix_libpath=$lt_cv_aix_libpath
else
- if ${lt_cv_aix_libpath_+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ if test ${lt_cv_aix_libpath_+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
lt_aix_libpath_sed='
/Import File Strings/,/^$/ {
lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
fi
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
if test -z "$lt_cv_aix_libpath_"; then
lt_cv_aix_libpath_=/usr/lib:/lib
# Older versions of the 11.00 compiler do not understand -b yet
# (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does)
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5
-$as_echo_n "checking if $CC understands -b... " >&6; }
-if ${lt_cv_prog_compiler__b+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5
+printf %s "checking if $CC understands -b... " >&6; }
+if test ${lt_cv_prog_compiler__b+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
lt_cv_prog_compiler__b=no
save_LDFLAGS=$LDFLAGS
LDFLAGS="$LDFLAGS -b"
LDFLAGS=$save_LDFLAGS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5
-$as_echo "$lt_cv_prog_compiler__b" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5
+printf "%s\n" "$lt_cv_prog_compiler__b" >&6; }
if test yes = "$lt_cv_prog_compiler__b"; then
archive_cmds='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
# work, assume that -exports_file does not work either and
# implicitly export all symbols.
# This should be the same for all languages, so no per-tag cache variable.
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5
-$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; }
-if ${lt_cv_irix_exported_symbol+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5
+printf %s "checking whether the $host_os linker accepts -exported_symbol... " >&6; }
+if test ${lt_cv_irix_exported_symbol+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
save_LDFLAGS=$LDFLAGS
LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int foo (void) { return 0; }
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
lt_cv_irix_exported_symbol=yes
-else
+else $as_nop
lt_cv_irix_exported_symbol=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LDFLAGS=$save_LDFLAGS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5
-$as_echo "$lt_cv_irix_exported_symbol" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5
+printf "%s\n" "$lt_cv_irix_exported_symbol" >&6; }
if test yes = "$lt_cv_irix_exported_symbol"; then
archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib'
fi
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5
-$as_echo "$ld_shlibs" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5
+printf "%s\n" "$ld_shlibs" >&6; }
test no = "$ld_shlibs" && can_build_shared=no
with_gnu_ld=$with_gnu_ld
# Test whether the compiler implicitly links with -lc since on some
# systems, -lgcc has to come before -lc. If gcc already passes -lc
# to ld, don't add -lc before -lgcc.
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
-$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
-if ${lt_cv_archive_cmds_need_lc+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
+printf %s "checking whether -lc should be explicitly linked in... " >&6; }
+if test ${lt_cv_archive_cmds_need_lc+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
$RM conftest*
echo "$lt_simple_compile_test_code" > conftest.$ac_ext
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
(eval $ac_compile) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } 2>conftest.err; then
soname=conftest
lib=conftest
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
(eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
then
lt_cv_archive_cmds_need_lc=no
$RM conftest*
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5
-$as_echo "$lt_cv_archive_cmds_need_lc" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5
+printf "%s\n" "$lt_cv_archive_cmds_need_lc" >&6; }
archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc
;;
esac
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
-$as_echo_n "checking dynamic linker characteristics... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
+printf %s "checking dynamic linker characteristics... " >&6; }
if test yes = "$GCC"; then
case $host_os in
shlibpath_overrides_runpath=no
# Some binutils ld are patched to set DT_RUNPATH
- if ${lt_cv_shlibpath_overrides_runpath+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ if test ${lt_cv_shlibpath_overrides_runpath+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
lt_cv_shlibpath_overrides_runpath=no
save_LDFLAGS=$LDFLAGS
save_libdir=$libdir
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then :
+if ac_fn_c_try_link "$LINENO"
+then :
+ if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null
+then :
lt_cv_shlibpath_overrides_runpath=yes
fi
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LDFLAGS=$save_LDFLAGS
libdir=$save_libdir
dynamic_linker=no
;;
esac
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
-$as_echo "$dynamic_linker" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
+printf "%s\n" "$dynamic_linker" >&6; }
test no = "$dynamic_linker" && can_build_shared=no
variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
-$as_echo_n "checking how to hardcode library paths into programs... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
+printf %s "checking how to hardcode library paths into programs... " >&6; }
hardcode_action=
if test -n "$hardcode_libdir_flag_spec" ||
test -n "$runpath_var" ||
# directories.
hardcode_action=unsupported
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5
-$as_echo "$hardcode_action" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5
+printf "%s\n" "$hardcode_action" >&6; }
if test relink = "$hardcode_action" ||
test yes = "$inherit_rpath"; then
darwin*)
# if libdl is installed we need to link against it
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
-$as_echo_n "checking for dlopen in -ldl... " >&6; }
-if ${ac_cv_lib_dl_dlopen+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
+printf %s "checking for dlopen in -ldl... " >&6; }
+if test ${ac_cv_lib_dl_dlopen+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-ldl $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* 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 dlopen ();
int
-main ()
+main (void)
{
return dlopen ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_dl_dlopen=yes
-else
+else $as_nop
ac_cv_lib_dl_dlopen=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
-$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
-if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
+printf "%s\n" "$ac_cv_lib_dl_dlopen" >&6; }
+if test "x$ac_cv_lib_dl_dlopen" = xyes
+then :
lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl
-else
+else $as_nop
lt_cv_dlopen=dyld
lt_cv_dlopen_libs=
*)
ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load"
-if test "x$ac_cv_func_shl_load" = xyes; then :
+if test "x$ac_cv_func_shl_load" = xyes
+then :
lt_cv_dlopen=shl_load
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5
-$as_echo_n "checking for shl_load in -ldld... " >&6; }
-if ${ac_cv_lib_dld_shl_load+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5
+printf %s "checking for shl_load in -ldld... " >&6; }
+if test ${ac_cv_lib_dld_shl_load+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-ldld $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* 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 shl_load ();
int
-main ()
+main (void)
{
return shl_load ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_dld_shl_load=yes
-else
+else $as_nop
ac_cv_lib_dld_shl_load=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5
-$as_echo "$ac_cv_lib_dld_shl_load" >&6; }
-if test "x$ac_cv_lib_dld_shl_load" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5
+printf "%s\n" "$ac_cv_lib_dld_shl_load" >&6; }
+if test "x$ac_cv_lib_dld_shl_load" = xyes
+then :
lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld
-else
+else $as_nop
ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen"
-if test "x$ac_cv_func_dlopen" = xyes; then :
+if test "x$ac_cv_func_dlopen" = xyes
+then :
lt_cv_dlopen=dlopen
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
-$as_echo_n "checking for dlopen in -ldl... " >&6; }
-if ${ac_cv_lib_dl_dlopen+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
+printf %s "checking for dlopen in -ldl... " >&6; }
+if test ${ac_cv_lib_dl_dlopen+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-ldl $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* 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 dlopen ();
int
-main ()
+main (void)
{
return dlopen ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_dl_dlopen=yes
-else
+else $as_nop
ac_cv_lib_dl_dlopen=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
-$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
-if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
+printf "%s\n" "$ac_cv_lib_dl_dlopen" >&6; }
+if test "x$ac_cv_lib_dl_dlopen" = xyes
+then :
lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5
-$as_echo_n "checking for dlopen in -lsvld... " >&6; }
-if ${ac_cv_lib_svld_dlopen+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5
+printf %s "checking for dlopen in -lsvld... " >&6; }
+if test ${ac_cv_lib_svld_dlopen+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lsvld $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* 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 dlopen ();
int
-main ()
+main (void)
{
return dlopen ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_svld_dlopen=yes
-else
+else $as_nop
ac_cv_lib_svld_dlopen=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5
-$as_echo "$ac_cv_lib_svld_dlopen" >&6; }
-if test "x$ac_cv_lib_svld_dlopen" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5
+printf "%s\n" "$ac_cv_lib_svld_dlopen" >&6; }
+if test "x$ac_cv_lib_svld_dlopen" = xyes
+then :
lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5
-$as_echo_n "checking for dld_link in -ldld... " >&6; }
-if ${ac_cv_lib_dld_dld_link+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5
+printf %s "checking for dld_link in -ldld... " >&6; }
+if test ${ac_cv_lib_dld_dld_link+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-ldld $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* 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 dld_link ();
int
-main ()
+main (void)
{
return dld_link ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_dld_dld_link=yes
-else
+else $as_nop
ac_cv_lib_dld_dld_link=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5
-$as_echo "$ac_cv_lib_dld_dld_link" >&6; }
-if test "x$ac_cv_lib_dld_dld_link" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5
+printf "%s\n" "$ac_cv_lib_dld_dld_link" >&6; }
+if test "x$ac_cv_lib_dld_dld_link" = xyes
+then :
lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld
fi
save_LIBS=$LIBS
LIBS="$lt_cv_dlopen_libs $LIBS"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5
-$as_echo_n "checking whether a program can dlopen itself... " >&6; }
-if ${lt_cv_dlopen_self+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5
+printf %s "checking whether a program can dlopen itself... " >&6; }
+if test ${lt_cv_dlopen_self+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test yes = "$cross_compiling"; then :
lt_cv_dlopen_self=cross
else
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
(eval $ac_link) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then
(./conftest; exit; ) >&5 2>/dev/null
lt_status=$?
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5
-$as_echo "$lt_cv_dlopen_self" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5
+printf "%s\n" "$lt_cv_dlopen_self" >&6; }
if test yes = "$lt_cv_dlopen_self"; then
wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5
-$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; }
-if ${lt_cv_dlopen_self_static+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5
+printf %s "checking whether a statically linked program can dlopen itself... " >&6; }
+if test ${lt_cv_dlopen_self_static+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test yes = "$cross_compiling"; then :
lt_cv_dlopen_self_static=cross
else
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
(eval $ac_link) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then
(./conftest; exit; ) >&5 2>/dev/null
lt_status=$?
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5
-$as_echo "$lt_cv_dlopen_self_static" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5
+printf "%s\n" "$lt_cv_dlopen_self_static" >&6; }
fi
CPPFLAGS=$save_CPPFLAGS
striplib=
old_striplib=
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5
-$as_echo_n "checking whether stripping libraries is possible... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5
+printf %s "checking whether stripping libraries is possible... " >&6; }
if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
test -z "$striplib" && striplib="$STRIP --strip-unneeded"
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
else
# FIXME - insert some real tests, host_os isn't really good enough
case $host_os in
if test -n "$STRIP"; then
striplib="$STRIP -x"
old_striplib="$STRIP -S"
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
;;
*)
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
;;
esac
fi
# Report what library types will actually be built
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5
-$as_echo_n "checking if libtool supports shared libraries... " >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5
-$as_echo "$can_build_shared" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5
+printf %s "checking if libtool supports shared libraries... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5
+printf "%s\n" "$can_build_shared" >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5
-$as_echo_n "checking whether to build shared libraries... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5
+printf %s "checking whether to build shared libraries... " >&6; }
test no = "$can_build_shared" && enable_shared=no
# On AIX, shared libraries and static libraries use the same namespace, and
fi
;;
esac
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5
-$as_echo "$enable_shared" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5
+printf "%s\n" "$enable_shared" >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5
-$as_echo_n "checking whether to build static libraries... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5
+printf %s "checking whether to build static libraries... " >&6; }
# Make sure either enable_shared or enable_static is yes.
test yes = "$enable_shared" || enable_static=yes
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5
-$as_echo "$enable_static" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5
+printf "%s\n" "$enable_static" >&6; }
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
set dummy ${ac_tool_prefix}strip; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_STRIP+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_STRIP+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$STRIP"; then
ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_STRIP="${ac_tool_prefix}strip"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
STRIP=$ac_cv_prog_STRIP
if test -n "$STRIP"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
-$as_echo "$STRIP" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
+printf "%s\n" "$STRIP" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
ac_ct_STRIP=$STRIP
# Extract the first word of "strip", so it can be a program name with args.
set dummy strip; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_STRIP+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$ac_ct_STRIP"; then
ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_STRIP="strip"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
if test -n "$ac_ct_STRIP"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
-$as_echo "$ac_ct_STRIP" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
+printf "%s\n" "$ac_ct_STRIP" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test "x$ac_ct_STRIP" = x; then
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
STRIP=$ac_ct_STRIP
# Default is to build bsdtar, but allow people to override that.
#
# Check whether --enable-bsdtar was given.
-if test "${enable_bsdtar+set}" = set; then :
+if test ${enable_bsdtar+y}
+then :
enableval=$enable_bsdtar;
-else
+else $as_nop
enable_bsdtar=yes
fi
;;
dynamic|shared)
if test "$enable_shared" = "no"; then
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "Shared linking of bsdtar requires shared libarchive
See \`config.log' for more details" "$LINENO" 5; }
fi
static_bsdtar=no
;;
*)
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "Unsupported value for --enable-bsdtar
See \`config.log' for more details" "$LINENO" 5; }
;;
# Default is to build bsdcat, but allow people to override that.
#
# Check whether --enable-bsdcat was given.
-if test "${enable_bsdcat+set}" = set; then :
+if test ${enable_bsdcat+y}
+then :
enableval=$enable_bsdcat;
-else
+else $as_nop
enable_bsdcat=yes
fi
;;
dynamic|shared)
if test "$enable_shared" = "no"; then
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "Shared linking of bsdcat requires shared libarchive
See \`config.log' for more details" "$LINENO" 5; }
fi
static_bsdcat=no
;;
*)
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "Unsupported value for --enable-bsdcat
See \`config.log' for more details" "$LINENO" 5; }
;;
# Default is not to build bsdcpio, but that can be overridden.
#
# Check whether --enable-bsdcpio was given.
-if test "${enable_bsdcpio+set}" = set; then :
+if test ${enable_bsdcpio+y}
+then :
enableval=$enable_bsdcpio;
-else
+else $as_nop
enable_bsdcpio=yes
fi
;;
dynamic|shared)
if test "$enabled_shared" = "no"; then
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "Shared linking of bsdcpio requires shared libarchive
See \`config.log' for more details" "$LINENO" 5; }
fi
static_bsdcpio=no
;;
*)
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "Unsupported value for --enable-bsdcpio
See \`config.log' for more details" "$LINENO" 5; }
;;
# Set up defines needed before including any headers
case $host in
*mingw* | *cygwin* | *msys* )
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#ifdef _WIN32_WINNT
# error _WIN32_WINNT already defined
#endif
int
-main ()
+main (void)
{
;
;
}
_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
+if ac_fn_c_try_cpp "$LINENO"
+then :
-$as_echo "#define _WIN32_WINNT 0x0502" >>confdefs.h
+printf "%s\n" "#define _WIN32_WINNT 0x0502" >>confdefs.h
-$as_echo "#define NTDDI_VERSION 0x05020000" >>confdefs.h
+printf "%s\n" "#define NTDDI_VERSION 0x05020000" >>confdefs.h
fi
#endif
int
-main ()
+main (void)
{
;
;
}
_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
+if ac_fn_c_try_cpp "$LINENO"
+then :
-$as_echo "#define WINVER 0x0502" >>confdefs.h
+printf "%s\n" "#define WINVER 0x0502" >>confdefs.h
fi
;;
esac
+#
+# Options for building bsdunzip.
+#
+# Default is to build bsdunzip, but allow people to override that.
+# Bsdunzip has not yet been ported for Windows
+#
+case "$host_os" in
+ *mingw* | *msys*)
+ enable_bsdunzip=no
+ ;;
+ *)
+ # Check whether --enable-bsdunzip was given.
+if test ${enable_bsdunzip+y}
+then :
+ enableval=$enable_bsdunzip;
+else $as_nop
+ enable_bsdunzip=yes
+fi
+
+ ;;
+esac
+
+case "$enable_bsdunzip" in
+yes)
+ if test "$enable_static" = "no"; then
+ static_bsdunzip=no
+ else
+ static_bsdunzip=yes
+ fi
+ build_bsdunzip=yes
+ ;;
+dynamic|shared)
+ if test "$enable_shared" = "no"; then
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "Shared linking of bsdunzip requires shared libarchive
+See \`config.log' for more details" "$LINENO" 5; }
+ fi
+ build_bsdunzip=yes
+ static_bsdunzip=no
+ ;;
+static)
+ build_bsdunzip=yes
+ static_bsdunzip=yes
+ ;;
+no)
+ build_bsdunzip=no
+ static_bsdunzip=no
+ ;;
+*)
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "Unsupported value for --enable-bsdunzip
+See \`config.log' for more details" "$LINENO" 5; }
+ ;;
+esac
+
+ if test "$build_bsdunzip" = yes ; then
+ BUILD_BSDUNZIP_TRUE=
+ BUILD_BSDUNZIP_FALSE='#'
+else
+ BUILD_BSDUNZIP_TRUE='#'
+ BUILD_BSDUNZIP_FALSE=
+fi
+
+ if test "$static_bsdunzip" = yes ; then
+ STATIC_BSDUNZIP_TRUE=
+ STATIC_BSDUNZIP_FALSE='#'
+else
+ STATIC_BSDUNZIP_TRUE='#'
+ STATIC_BSDUNZIP_FALSE=
+fi
+
+
# Checks for header files.
ac_header_dirent=no
for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do
- as_ac_Header=`$as_echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh`
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_hdr that defines DIR" >&5
-$as_echo_n "checking for $ac_hdr that defines DIR... " >&6; }
-if eval \${$as_ac_Header+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ as_ac_Header=`printf "%s\n" "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh`
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_hdr that defines DIR" >&5
+printf %s "checking for $ac_hdr that defines DIR... " >&6; }
+if eval test \${$as_ac_Header+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <sys/types.h>
#include <$ac_hdr>
int
-main ()
+main (void)
{
if ((DIR *) 0)
return 0;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
eval "$as_ac_Header=yes"
-else
+else $as_nop
eval "$as_ac_Header=no"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
eval ac_res=\$$as_ac_Header
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf "%s\n" "$ac_res" >&6; }
+if eval test \"x\$"$as_ac_Header"\" = x"yes"
+then :
cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_hdr" | $as_tr_cpp` 1
+#define `printf "%s\n" "HAVE_$ac_hdr" | $as_tr_cpp` 1
_ACEOF
ac_header_dirent=$ac_hdr; break
done
# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix.
if test $ac_header_dirent = dirent.h; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5
-$as_echo_n "checking for library containing opendir... " >&6; }
-if ${ac_cv_search_opendir+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5
+printf %s "checking for library containing opendir... " >&6; }
+if test ${ac_cv_search_opendir+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_func_search_save_LIBS=$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 opendir ();
int
-main ()
+main (void)
{
return opendir ();
;
return 0;
}
_ACEOF
-for ac_lib in '' dir; do
+for ac_lib in '' dir
+do
if test -z "$ac_lib"; then
ac_res="none required"
else
ac_res=-l$ac_lib
LIBS="-l$ac_lib $ac_func_search_save_LIBS"
fi
- if ac_fn_c_try_link "$LINENO"; then :
+ if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_search_opendir=$ac_res
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext
- if ${ac_cv_search_opendir+:} false; then :
+ if test ${ac_cv_search_opendir+y}
+then :
break
fi
done
-if ${ac_cv_search_opendir+:} false; then :
+if test ${ac_cv_search_opendir+y}
+then :
-else
+else $as_nop
ac_cv_search_opendir=no
fi
rm conftest.$ac_ext
LIBS=$ac_func_search_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5
-$as_echo "$ac_cv_search_opendir" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5
+printf "%s\n" "$ac_cv_search_opendir" >&6; }
ac_res=$ac_cv_search_opendir
-if test "$ac_res" != no; then :
+if test "$ac_res" != no
+then :
test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
fi
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5
-$as_echo_n "checking for library containing opendir... " >&6; }
-if ${ac_cv_search_opendir+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5
+printf %s "checking for library containing opendir... " >&6; }
+if test ${ac_cv_search_opendir+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_func_search_save_LIBS=$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 opendir ();
int
-main ()
+main (void)
{
return opendir ();
;
return 0;
}
_ACEOF
-for ac_lib in '' x; do
+for ac_lib in '' x
+do
if test -z "$ac_lib"; then
ac_res="none required"
else
ac_res=-l$ac_lib
LIBS="-l$ac_lib $ac_func_search_save_LIBS"
fi
- if ac_fn_c_try_link "$LINENO"; then :
+ if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_search_opendir=$ac_res
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext
- if ${ac_cv_search_opendir+:} false; then :
+ if test ${ac_cv_search_opendir+y}
+then :
break
fi
done
-if ${ac_cv_search_opendir+:} false; then :
+if test ${ac_cv_search_opendir+y}
+then :
-else
+else $as_nop
ac_cv_search_opendir=no
fi
rm conftest.$ac_ext
LIBS=$ac_func_search_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5
-$as_echo "$ac_cv_search_opendir" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5
+printf "%s\n" "$ac_cv_search_opendir" >&6; }
ac_res=$ac_cv_search_opendir
-if test "$ac_res" != no; then :
+if test "$ac_res" != no
+then :
test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sys/wait.h that is POSIX.1 compatible" >&5
-$as_echo_n "checking for sys/wait.h that is POSIX.1 compatible... " >&6; }
-if ${ac_cv_header_sys_wait_h+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sys/wait.h that is POSIX.1 compatible" >&5
+printf %s "checking for sys/wait.h that is POSIX.1 compatible... " >&6; }
+if test ${ac_cv_header_sys_wait_h+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <sys/types.h>
#endif
int
-main ()
+main (void)
{
int s;
wait (&s);
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_header_sys_wait_h=yes
-else
+else $as_nop
ac_cv_header_sys_wait_h=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_sys_wait_h" >&5
-$as_echo "$ac_cv_header_sys_wait_h" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_sys_wait_h" >&5
+printf "%s\n" "$ac_cv_header_sys_wait_h" >&6; }
if test $ac_cv_header_sys_wait_h = yes; then
-$as_echo "#define HAVE_SYS_WAIT_H 1" >>confdefs.h
+printf "%s\n" "#define HAVE_SYS_WAIT_H 1" >>confdefs.h
fi
-for ac_header in acl/libacl.h attr/xattr.h
-do :
- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
+ac_fn_c_check_header_compile "$LINENO" "acl/libacl.h" "ac_cv_header_acl_libacl_h" "$ac_includes_default"
+if test "x$ac_cv_header_acl_libacl_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_ACL_LIBACL_H 1" >>confdefs.h
fi
+ac_fn_c_check_header_compile "$LINENO" "attr/xattr.h" "ac_cv_header_attr_xattr_h" "$ac_includes_default"
+if test "x$ac_cv_header_attr_xattr_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_ATTR_XATTR_H 1" >>confdefs.h
-done
+fi
-for ac_header in copyfile.h ctype.h
-do :
- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
+ac_fn_c_check_header_compile "$LINENO" "copyfile.h" "ac_cv_header_copyfile_h" "$ac_includes_default"
+if test "x$ac_cv_header_copyfile_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_COPYFILE_H 1" >>confdefs.h
fi
+ac_fn_c_check_header_compile "$LINENO" "ctype.h" "ac_cv_header_ctype_h" "$ac_includes_default"
+if test "x$ac_cv_header_ctype_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_CTYPE_H 1" >>confdefs.h
-done
+fi
-for ac_header in errno.h ext2fs/ext2_fs.h fcntl.h grp.h
-do :
- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
+ac_fn_c_check_header_compile "$LINENO" "errno.h" "ac_cv_header_errno_h" "$ac_includes_default"
+if test "x$ac_cv_header_errno_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_ERRNO_H 1" >>confdefs.h
fi
+ac_fn_c_check_header_compile "$LINENO" "ext2fs/ext2_fs.h" "ac_cv_header_ext2fs_ext2_fs_h" "$ac_includes_default"
+if test "x$ac_cv_header_ext2fs_ext2_fs_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_EXT2FS_EXT2_FS_H 1" >>confdefs.h
-done
+fi
+ac_fn_c_check_header_compile "$LINENO" "fcntl.h" "ac_cv_header_fcntl_h" "$ac_includes_default"
+if test "x$ac_cv_header_fcntl_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_FCNTL_H 1" >>confdefs.h
+fi
+ac_fn_c_check_header_compile "$LINENO" "fnmatch.h" "ac_cv_header_fnmatch_h" "$ac_includes_default"
+if test "x$ac_cv_header_fnmatch_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_FNMATCH_H 1" >>confdefs.h
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether EXT2_IOC_GETFLAGS is usable" >&5
-$as_echo_n "checking whether EXT2_IOC_GETFLAGS is usable... " >&6; }
-if ${ac_cv_have_decl_EXT2_IOC_GETFLAGS+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+fi
+ac_fn_c_check_header_compile "$LINENO" "grp.h" "ac_cv_header_grp_h" "$ac_includes_default"
+if test "x$ac_cv_header_grp_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_GRP_H 1" >>confdefs.h
+
+fi
+
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether EXT2_IOC_GETFLAGS is usable" >&5
+printf %s "checking whether EXT2_IOC_GETFLAGS is usable... " >&6; }
+if test ${ac_cv_have_decl_EXT2_IOC_GETFLAGS+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <sys/ioctl.h>
#include <ext2fs/ext2_fs.h>
int
-main ()
+main (void)
{
int x = EXT2_IOC_GETFLAGS
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_have_decl_EXT2_IOC_GETFLAGS=yes
-else
+else $as_nop
ac_cv_have_decl_EXT2_IOC_GETFLAGS=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_decl_EXT2_IOC_GETFLAGS" >&5
-$as_echo "$ac_cv_have_decl_EXT2_IOC_GETFLAGS" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_decl_EXT2_IOC_GETFLAGS" >&5
+printf "%s\n" "$ac_cv_have_decl_EXT2_IOC_GETFLAGS" >&6; }
-if test "x$ac_cv_have_decl_EXT2_IOC_GETFLAGS" = xyes; then :
+if test "x$ac_cv_have_decl_EXT2_IOC_GETFLAGS" = xyes
+then :
-cat >>confdefs.h <<_ACEOF
-#define HAVE_WORKING_EXT2_IOC_GETFLAGS 1
-_ACEOF
+printf "%s\n" "#define HAVE_WORKING_EXT2_IOC_GETFLAGS 1" >>confdefs.h
fi
-for ac_header in inttypes.h io.h langinfo.h limits.h
-do :
- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
+ac_fn_c_check_header_compile "$LINENO" "inttypes.h" "ac_cv_header_inttypes_h" "$ac_includes_default"
+if test "x$ac_cv_header_inttypes_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_INTTYPES_H 1" >>confdefs.h
fi
+ac_fn_c_check_header_compile "$LINENO" "io.h" "ac_cv_header_io_h" "$ac_includes_default"
+if test "x$ac_cv_header_io_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_IO_H 1" >>confdefs.h
-done
+fi
+ac_fn_c_check_header_compile "$LINENO" "langinfo.h" "ac_cv_header_langinfo_h" "$ac_includes_default"
+if test "x$ac_cv_header_langinfo_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_LANGINFO_H 1" >>confdefs.h
-for ac_header in linux/fiemap.h linux/fs.h linux/magic.h linux/types.h
-do :
- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
+fi
+ac_fn_c_check_header_compile "$LINENO" "limits.h" "ac_cv_header_limits_h" "$ac_includes_default"
+if test "x$ac_cv_header_limits_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_LIMITS_H 1" >>confdefs.h
fi
-done
+ac_fn_c_check_header_compile "$LINENO" "linux/fiemap.h" "ac_cv_header_linux_fiemap_h" "$ac_includes_default"
+if test "x$ac_cv_header_linux_fiemap_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_LINUX_FIEMAP_H 1" >>confdefs.h
+fi
+ac_fn_c_check_header_compile "$LINENO" "linux/fs.h" "ac_cv_header_linux_fs_h" "$ac_includes_default"
+if test "x$ac_cv_header_linux_fs_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_LINUX_FS_H 1" >>confdefs.h
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether FS_IOC_GETFLAGS is usable" >&5
-$as_echo_n "checking whether FS_IOC_GETFLAGS is usable... " >&6; }
-if ${ac_cv_have_decl_FS_IOC_GETFLAGS+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+fi
+ac_fn_c_check_header_compile "$LINENO" "linux/magic.h" "ac_cv_header_linux_magic_h" "$ac_includes_default"
+if test "x$ac_cv_header_linux_magic_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_LINUX_MAGIC_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "linux/types.h" "ac_cv_header_linux_types_h" "$ac_includes_default"
+if test "x$ac_cv_header_linux_types_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_LINUX_TYPES_H 1" >>confdefs.h
+
+fi
+
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether FS_IOC_GETFLAGS is usable" >&5
+printf %s "checking whether FS_IOC_GETFLAGS is usable... " >&6; }
+if test ${ac_cv_have_decl_FS_IOC_GETFLAGS+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <sys/ioctl.h>
#include <linux/fs.h>
int
-main ()
+main (void)
{
int x = FS_IOC_GETFLAGS
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_have_decl_FS_IOC_GETFLAGS=yes
-else
+else $as_nop
ac_cv_have_decl_FS_IOC_GETFLAGS=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_decl_FS_IOC_GETFLAGS" >&5
-$as_echo "$ac_cv_have_decl_FS_IOC_GETFLAGS" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_decl_FS_IOC_GETFLAGS" >&5
+printf "%s\n" "$ac_cv_have_decl_FS_IOC_GETFLAGS" >&6; }
-if test "x$ac_cv_have_decl_FS_IOC_GETFLAGS" = xyes; then :
+if test "x$ac_cv_have_decl_FS_IOC_GETFLAGS" = xyes
+then :
-cat >>confdefs.h <<_ACEOF
-#define HAVE_WORKING_FS_IOC_GETFLAGS 1
-_ACEOF
+printf "%s\n" "#define HAVE_WORKING_FS_IOC_GETFLAGS 1" >>confdefs.h
fi
-for ac_header in locale.h membership.h paths.h poll.h pthread.h pwd.h
-do :
- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
+ac_fn_c_check_header_compile "$LINENO" "locale.h" "ac_cv_header_locale_h" "$ac_includes_default"
+if test "x$ac_cv_header_locale_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_LOCALE_H 1" >>confdefs.h
fi
+ac_fn_c_check_header_compile "$LINENO" "membership.h" "ac_cv_header_membership_h" "$ac_includes_default"
+if test "x$ac_cv_header_membership_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_MEMBERSHIP_H 1" >>confdefs.h
-done
+fi
+ac_fn_c_check_header_compile "$LINENO" "paths.h" "ac_cv_header_paths_h" "$ac_includes_default"
+if test "x$ac_cv_header_paths_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_PATHS_H 1" >>confdefs.h
-for ac_header in readpassphrase.h signal.h spawn.h
-do :
- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
+fi
+ac_fn_c_check_header_compile "$LINENO" "poll.h" "ac_cv_header_poll_h" "$ac_includes_default"
+if test "x$ac_cv_header_poll_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_POLL_H 1" >>confdefs.h
fi
+ac_fn_c_check_header_compile "$LINENO" "pthread.h" "ac_cv_header_pthread_h" "$ac_includes_default"
+if test "x$ac_cv_header_pthread_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_PTHREAD_H 1" >>confdefs.h
-done
+fi
+ac_fn_c_check_header_compile "$LINENO" "pwd.h" "ac_cv_header_pwd_h" "$ac_includes_default"
+if test "x$ac_cv_header_pwd_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_PWD_H 1" >>confdefs.h
-for ac_header in stdarg.h stdint.h stdlib.h string.h
-do :
- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
+fi
+
+ac_fn_c_check_header_compile "$LINENO" "readpassphrase.h" "ac_cv_header_readpassphrase_h" "$ac_includes_default"
+if test "x$ac_cv_header_readpassphrase_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_READPASSPHRASE_H 1" >>confdefs.h
fi
+ac_fn_c_check_header_compile "$LINENO" "signal.h" "ac_cv_header_signal_h" "$ac_includes_default"
+if test "x$ac_cv_header_signal_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SIGNAL_H 1" >>confdefs.h
-done
+fi
+ac_fn_c_check_header_compile "$LINENO" "spawn.h" "ac_cv_header_spawn_h" "$ac_includes_default"
+if test "x$ac_cv_header_spawn_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SPAWN_H 1" >>confdefs.h
-for ac_header in sys/acl.h sys/cdefs.h sys/ea.h sys/extattr.h
-do :
- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
+fi
+
+ac_fn_c_check_header_compile "$LINENO" "stdarg.h" "ac_cv_header_stdarg_h" "$ac_includes_default"
+if test "x$ac_cv_header_stdarg_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_STDARG_H 1" >>confdefs.h
fi
+ac_fn_c_check_header_compile "$LINENO" "stdint.h" "ac_cv_header_stdint_h" "$ac_includes_default"
+if test "x$ac_cv_header_stdint_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_STDINT_H 1" >>confdefs.h
-done
+fi
+ac_fn_c_check_header_compile "$LINENO" "stdlib.h" "ac_cv_header_stdlib_h" "$ac_includes_default"
+if test "x$ac_cv_header_stdlib_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_STDLIB_H 1" >>confdefs.h
-for ac_header in sys/ioctl.h sys/mkdev.h sys/mount.h
-do :
- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
+fi
+ac_fn_c_check_header_compile "$LINENO" "string.h" "ac_cv_header_string_h" "$ac_includes_default"
+if test "x$ac_cv_header_string_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_STRING_H 1" >>confdefs.h
fi
-done
+ac_fn_c_check_header_compile "$LINENO" "sys/acl.h" "ac_cv_header_sys_acl_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_acl_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_ACL_H 1" >>confdefs.h
-for ac_header in sys/param.h sys/poll.h sys/richacl.h
-do :
- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/cdefs.h" "ac_cv_header_sys_cdefs_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_cdefs_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_CDEFS_H 1" >>confdefs.h
fi
+ac_fn_c_check_header_compile "$LINENO" "sys/ea.h" "ac_cv_header_sys_ea_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_ea_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_EA_H 1" >>confdefs.h
-done
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/extattr.h" "ac_cv_header_sys_extattr_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_extattr_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_EXTATTR_H 1" >>confdefs.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"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
+fi
+
+ac_fn_c_check_header_compile "$LINENO" "sys/ioctl.h" "ac_cv_header_sys_ioctl_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_ioctl_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_IOCTL_H 1" >>confdefs.h
fi
+ac_fn_c_check_header_compile "$LINENO" "sys/mkdev.h" "ac_cv_header_sys_mkdev_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_mkdev_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_MKDEV_H 1" >>confdefs.h
-done
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/mount.h" "ac_cv_header_sys_mount_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_mount_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_MOUNT_H 1" >>confdefs.h
-for ac_header in sys/time.h sys/utime.h sys/utsname.h sys/vfs.h sys/xattr.h
-do :
- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/queue.h" "ac_cv_header_sys_queue_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_queue_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_QUEUE_H 1" >>confdefs.h
fi
-done
+ac_fn_c_check_header_compile "$LINENO" "sys/param.h" "ac_cv_header_sys_param_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_param_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_PARAM_H 1" >>confdefs.h
-for ac_header in time.h unistd.h utime.h wchar.h wctype.h
-do :
- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/poll.h" "ac_cv_header_sys_poll_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_poll_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_POLL_H 1" >>confdefs.h
fi
+ac_fn_c_check_header_compile "$LINENO" "sys/richacl.h" "ac_cv_header_sys_richacl_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_richacl_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_RICHACL_H 1" >>confdefs.h
-done
+fi
-for ac_header in windows.h
-do :
- ac_fn_c_check_header_mongrel "$LINENO" "windows.h" "ac_cv_header_windows_h" "$ac_includes_default"
-if test "x$ac_cv_header_windows_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_WINDOWS_H 1
-_ACEOF
+ac_fn_c_check_header_compile "$LINENO" "sys/select.h" "ac_cv_header_sys_select_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_select_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_SELECT_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/statfs.h" "ac_cv_header_sys_statfs_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_statfs_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_STATFS_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/statvfs.h" "ac_cv_header_sys_statvfs_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_statvfs_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_STATVFS_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/sysmacros.h" "ac_cv_header_sys_sysmacros_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_sysmacros_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_SYSMACROS_H 1" >>confdefs.h
+
+fi
+
+ac_fn_c_check_header_compile "$LINENO" "sys/time.h" "ac_cv_header_sys_time_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_time_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_TIME_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/utime.h" "ac_cv_header_sys_utime_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_utime_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_UTIME_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/utsname.h" "ac_cv_header_sys_utsname_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_utsname_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_UTSNAME_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/vfs.h" "ac_cv_header_sys_vfs_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_vfs_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_VFS_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/xattr.h" "ac_cv_header_sys_xattr_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_xattr_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_XATTR_H 1" >>confdefs.h
+
+fi
+
+ac_fn_c_check_header_compile "$LINENO" "time.h" "ac_cv_header_time_h" "$ac_includes_default"
+if test "x$ac_cv_header_time_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_TIME_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "unistd.h" "ac_cv_header_unistd_h" "$ac_includes_default"
+if test "x$ac_cv_header_unistd_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_UNISTD_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "utime.h" "ac_cv_header_utime_h" "$ac_includes_default"
+if test "x$ac_cv_header_utime_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_UTIME_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "wchar.h" "ac_cv_header_wchar_h" "$ac_includes_default"
+if test "x$ac_cv_header_wchar_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_WCHAR_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "wctype.h" "ac_cv_header_wctype_h" "$ac_includes_default"
+if test "x$ac_cv_header_wctype_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_WCTYPE_H 1" >>confdefs.h
+
+fi
+
+ac_fn_c_check_header_compile "$LINENO" "windows.h" "ac_cv_header_windows_h" "$ac_includes_default"
+if test "x$ac_cv_header_windows_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_WINDOWS_H 1" >>confdefs.h
fi
-done
-
# check windows.h first; the other headers require it.
-for ac_header in wincrypt.h winioctl.h
-do :
- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "#ifdef HAVE_WINDOWS_H
+ac_fn_c_check_header_compile "$LINENO" "wincrypt.h" "ac_cv_header_wincrypt_h" "#ifdef HAVE_WINDOWS_H
# include <windows.h>
#endif
"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
+if test "x$ac_cv_header_wincrypt_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_WINCRYPT_H 1" >>confdefs.h
fi
+ac_fn_c_check_header_compile "$LINENO" "winioctl.h" "ac_cv_header_winioctl_h" "#ifdef HAVE_WINDOWS_H
+# include <windows.h>
+#endif
-done
+"
+if test "x$ac_cv_header_winioctl_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_WINIOCTL_H 1" >>confdefs.h
+
+fi
# Checks for libraries.
# Check whether --with-zlib was given.
-if test "${with_zlib+set}" = set; then :
+if test ${with_zlib+y}
+then :
withval=$with_zlib;
fi
if test "x$with_zlib" != "xno"; then
- for ac_header in zlib.h
-do :
- ac_fn_c_check_header_mongrel "$LINENO" "zlib.h" "ac_cv_header_zlib_h" "$ac_includes_default"
-if test "x$ac_cv_header_zlib_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_ZLIB_H 1
-_ACEOF
+ ac_fn_c_check_header_compile "$LINENO" "zlib.h" "ac_cv_header_zlib_h" "$ac_includes_default"
+if test "x$ac_cv_header_zlib_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_ZLIB_H 1" >>confdefs.h
fi
-done
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for inflate in -lz" >&5
-$as_echo_n "checking for inflate in -lz... " >&6; }
-if ${ac_cv_lib_z_inflate+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for inflate in -lz" >&5
+printf %s "checking for inflate in -lz... " >&6; }
+if test ${ac_cv_lib_z_inflate+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lz $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* 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 inflate ();
int
-main ()
+main (void)
{
return inflate ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_z_inflate=yes
-else
+else $as_nop
ac_cv_lib_z_inflate=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_inflate" >&5
-$as_echo "$ac_cv_lib_z_inflate" >&6; }
-if test "x$ac_cv_lib_z_inflate" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBZ 1
-_ACEOF
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_inflate" >&5
+printf "%s\n" "$ac_cv_lib_z_inflate" >&6; }
+if test "x$ac_cv_lib_z_inflate" = xyes
+then :
+ printf "%s\n" "#define HAVE_LIBZ 1" >>confdefs.h
LIBS="-lz $LIBS"
# Check whether --with-bz2lib was given.
-if test "${with_bz2lib+set}" = set; then :
+if test ${with_bz2lib+y}
+then :
withval=$with_bz2lib;
fi
if test "x$with_bz2lib" != "xno"; then
- for ac_header in bzlib.h
-do :
- ac_fn_c_check_header_mongrel "$LINENO" "bzlib.h" "ac_cv_header_bzlib_h" "$ac_includes_default"
-if test "x$ac_cv_header_bzlib_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_BZLIB_H 1
-_ACEOF
+ ac_fn_c_check_header_compile "$LINENO" "bzlib.h" "ac_cv_header_bzlib_h" "$ac_includes_default"
+if test "x$ac_cv_header_bzlib_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_BZLIB_H 1" >>confdefs.h
fi
-done
-
case "$host_os" in
*mingw* | *cygwin* | *msys*)
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BZ2_bzDecompressInit in -lbz2" >&5
-$as_echo_n "checking for BZ2_bzDecompressInit in -lbz2... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for BZ2_bzDecompressInit in -lbz2" >&5
+printf %s "checking for BZ2_bzDecompressInit in -lbz2... " >&6; }
old_LIBS="$LIBS"
LIBS="-lbz2 $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
#include <bzlib.h>
int main() { return BZ2_bzDecompressInit(NULL, 0, 0); }
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_bz2_BZ2_bzDecompressInit=yes
-else
+else $as_nop
ac_cv_lib_bz2_BZ2_bzDecompressInit=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS="$old_LIBS"
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bz2_BZ2_bzDecompressInit" >&5
-$as_echo "$ac_cv_lib_bz2_BZ2_bzDecompressInit" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bz2_BZ2_bzDecompressInit" >&5
+printf "%s\n" "$ac_cv_lib_bz2_BZ2_bzDecompressInit" >&6; }
if test "x$ac_cv_lib_bz2_BZ2_bzDecompressInit" = xyes; then
-$as_echo "#define HAVE_LIBBZ2 1" >>confdefs.h
+printf "%s\n" "#define HAVE_LIBBZ2 1" >>confdefs.h
LIBS="-lbz2 $LIBS"
fi
;;
*)
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BZ2_bzDecompressInit in -lbz2" >&5
-$as_echo_n "checking for BZ2_bzDecompressInit in -lbz2... " >&6; }
-if ${ac_cv_lib_bz2_BZ2_bzDecompressInit+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for BZ2_bzDecompressInit in -lbz2" >&5
+printf %s "checking for BZ2_bzDecompressInit in -lbz2... " >&6; }
+if test ${ac_cv_lib_bz2_BZ2_bzDecompressInit+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lbz2 $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* 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 BZ2_bzDecompressInit ();
int
-main ()
+main (void)
{
return BZ2_bzDecompressInit ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_bz2_BZ2_bzDecompressInit=yes
-else
+else $as_nop
ac_cv_lib_bz2_BZ2_bzDecompressInit=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bz2_BZ2_bzDecompressInit" >&5
-$as_echo "$ac_cv_lib_bz2_BZ2_bzDecompressInit" >&6; }
-if test "x$ac_cv_lib_bz2_BZ2_bzDecompressInit" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBBZ2 1
-_ACEOF
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bz2_BZ2_bzDecompressInit" >&5
+printf "%s\n" "$ac_cv_lib_bz2_BZ2_bzDecompressInit" >&6; }
+if test "x$ac_cv_lib_bz2_BZ2_bzDecompressInit" = xyes
+then :
+ printf "%s\n" "#define HAVE_LIBBZ2 1" >>confdefs.h
LIBS="-lbz2 $LIBS"
# Check whether --with-libb2 was given.
-if test "${with_libb2+set}" = set; then :
+if test ${with_libb2+y}
+then :
withval=$with_libb2;
fi
if test "x$with_libb2" != "xno"; then
- for ac_header in blake2.h
-do :
- ac_fn_c_check_header_mongrel "$LINENO" "blake2.h" "ac_cv_header_blake2_h" "$ac_includes_default"
-if test "x$ac_cv_header_blake2_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_BLAKE2_H 1
-_ACEOF
+ ac_fn_c_check_header_compile "$LINENO" "blake2.h" "ac_cv_header_blake2_h" "$ac_includes_default"
+if test "x$ac_cv_header_blake2_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_BLAKE2_H 1" >>confdefs.h
fi
-done
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for blake2sp_init in -lb2" >&5
-$as_echo_n "checking for blake2sp_init in -lb2... " >&6; }
-if ${ac_cv_lib_b2_blake2sp_init+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for blake2sp_init in -lb2" >&5
+printf %s "checking for blake2sp_init in -lb2... " >&6; }
+if test ${ac_cv_lib_b2_blake2sp_init+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lb2 $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* 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 blake2sp_init ();
int
-main ()
+main (void)
{
return blake2sp_init ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_b2_blake2sp_init=yes
-else
+else $as_nop
ac_cv_lib_b2_blake2sp_init=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_b2_blake2sp_init" >&5
-$as_echo "$ac_cv_lib_b2_blake2sp_init" >&6; }
-if test "x$ac_cv_lib_b2_blake2sp_init" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBB2 1
-_ACEOF
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_b2_blake2sp_init" >&5
+printf "%s\n" "$ac_cv_lib_b2_blake2sp_init" >&6; }
+if test "x$ac_cv_lib_b2_blake2sp_init" = xyes
+then :
+ printf "%s\n" "#define HAVE_LIBB2 1" >>confdefs.h
LIBS="-lb2 $LIBS"
# Check whether --with-iconv was given.
-if test "${with_iconv+set}" = set; then :
+if test ${with_iconv+y}
+then :
withval=$with_iconv;
fi
# Check whether --with-gnu-ld was given.
-if test "${with_gnu_ld+set}" = set; then :
+if test ${with_gnu_ld+y}
+then :
withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
-else
+else $as_nop
with_gnu_ld=no
fi
ac_prog=ld
if test "$GCC" = yes; then
# Check if gcc -print-prog-name=ld gives a path.
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by GCC" >&5
-$as_echo_n "checking for ld used by GCC... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ld used by GCC" >&5
+printf %s "checking for ld used by GCC... " >&6; }
case $host in
*-*-mingw*)
# gcc leaves a trailing carriage return which upsets mingw
;;
esac
elif test "$with_gnu_ld" = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
-$as_echo_n "checking for GNU ld... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
+printf %s "checking for GNU ld... " >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
-$as_echo_n "checking for non-GNU ld... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
+printf %s "checking for non-GNU ld... " >&6; }
fi
-if ${acl_cv_path_LD+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+if test ${acl_cv_path_LD+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -z "$LD"; then
IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
for ac_dir in $PATH; do
LD="$acl_cv_path_LD"
if test -n "$LD"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
-$as_echo "$LD" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
+printf "%s\n" "$LD" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
-$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
-if ${acl_cv_prog_gnu_ld+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
+printf %s "checking if the linker ($LD) is GNU ld... " >&6; }
+if test ${acl_cv_prog_gnu_ld+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
# I'd rather use --version here, but apparently some GNU ld's only accept -v.
case `$LD -v 2>&1 </dev/null` in
*GNU* | *'with BFD'*)
acl_cv_prog_gnu_ld=no ;;
esac
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acl_cv_prog_gnu_ld" >&5
-$as_echo "$acl_cv_prog_gnu_ld" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $acl_cv_prog_gnu_ld" >&5
+printf "%s\n" "$acl_cv_prog_gnu_ld" >&6; }
with_gnu_ld=$acl_cv_prog_gnu_ld
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shared library run path origin" >&5
-$as_echo_n "checking for shared library run path origin... " >&6; }
-if ${acl_cv_rpath+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for shared library run path origin" >&5
+printf %s "checking for shared library run path origin... " >&6; }
+if test ${acl_cv_rpath+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \
${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh
acl_cv_rpath=done
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acl_cv_rpath" >&5
-$as_echo "$acl_cv_rpath" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $acl_cv_rpath" >&5
+printf "%s\n" "$acl_cv_rpath" >&6; }
wl="$acl_cv_wl"
acl_libext="$acl_cv_libext"
acl_shlibext="$acl_cv_shlibext"
acl_hardcode_direct="$acl_cv_hardcode_direct"
acl_hardcode_minus_L="$acl_cv_hardcode_minus_L"
# Check whether --enable-rpath was given.
-if test "${enable_rpath+set}" = set; then :
+if test ${enable_rpath+y}
+then :
enableval=$enable_rpath; :
-else
+else $as_nop
enable_rpath=yes
fi
acl_libdirstem2=
case "$host_os" in
solaris*)
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for 64-bit host" >&5
-$as_echo_n "checking for 64-bit host... " >&6; }
-if ${gl_cv_solaris_64bit+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for 64-bit host" >&5
+printf %s "checking for 64-bit host... " >&6; }
+if test ${gl_cv_solaris_64bit+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "sixtyfour bits" >/dev/null 2>&1; then :
+ $EGREP "sixtyfour bits" >/dev/null 2>&1
+then :
gl_cv_solaris_64bit=yes
-else
+else $as_nop
gl_cv_solaris_64bit=no
fi
-rm -f conftest*
+rm -rf conftest*
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_solaris_64bit" >&5
-$as_echo "$gl_cv_solaris_64bit" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_solaris_64bit" >&5
+printf "%s\n" "$gl_cv_solaris_64bit" >&6; }
if test $gl_cv_solaris_64bit = yes; then
acl_libdirstem=lib/64
case "$host_cpu" in
# Check whether --with-libiconv-prefix was given.
-if test "${with_libiconv_prefix+set}" = set; then :
+if test ${with_libiconv_prefix+y}
+then :
withval=$with_libiconv_prefix;
if test "X$withval" = "Xno"; then
use_additional=no
done
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5
-$as_echo_n "checking for iconv... " >&6; }
-if ${am_cv_func_iconv+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5
+printf %s "checking for iconv... " >&6; }
+if test ${am_cv_func_iconv+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
am_cv_func_iconv="no, consider installing GNU libiconv"
am_cv_lib_iconv=no
#include <iconv.h>
int
-main ()
+main (void)
{
iconv_t cd = iconv_open("","");
iconv(cd,NULL,NULL,NULL,NULL);
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
am_cv_func_iconv=yes
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
if test "$am_cv_func_iconv" != yes; then
am_save_LIBS="$LIBS"
#include <iconv.h>
int
-main ()
+main (void)
{
iconv_t cd = iconv_open("","");
iconv(cd,NULL,NULL,NULL,NULL);
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
am_cv_lib_iconv=yes
am_cv_func_iconv=yes
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS="$am_save_LIBS"
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5
-$as_echo "$am_cv_func_iconv" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5
+printf "%s\n" "$am_cv_func_iconv" >&6; }
if test "$am_cv_func_iconv" = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working iconv" >&5
-$as_echo_n "checking for working iconv... " >&6; }
-if ${am_cv_func_iconv_works+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working iconv" >&5
+printf %s "checking for working iconv... " >&6; }
+if test ${am_cv_func_iconv_works+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
am_save_LIBS="$LIBS"
if test $am_cv_lib_iconv = yes; then
fi
am_cv_func_iconv_works=no
for ac_iconv_const in '' 'const'; do
- if test "$cross_compiling" = yes; then :
+ if test "$cross_compiling" = yes
+then :
case "$host_os" in
aix* | hpux*) am_cv_func_iconv_works="guessing no" ;;
*) am_cv_func_iconv_works="guessing yes" ;;
esac
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#endif
int
-main ()
+main (void)
{
int result = 0;
/* Test against AIX 5.1 bug: Failures are not distinguishable from successful
return 0;
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
am_cv_func_iconv_works=yes
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
LIBS="$am_save_LIBS"
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv_works" >&5
-$as_echo "$am_cv_func_iconv_works" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv_works" >&5
+printf "%s\n" "$am_cv_func_iconv_works" >&6; }
case "$am_cv_func_iconv_works" in
*no) am_func_iconv=no am_cv_lib_iconv=no ;;
*) am_func_iconv=yes ;;
fi
if test "$am_func_iconv" = yes; then
-$as_echo "#define HAVE_ICONV 1" >>confdefs.h
+printf "%s\n" "#define HAVE_ICONV 1" >>confdefs.h
fi
if test "$am_cv_lib_iconv" = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5
-$as_echo_n "checking how to link with libiconv... " >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5
-$as_echo "$LIBICONV" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5
+printf %s "checking how to link with libiconv... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5
+printf "%s\n" "$LIBICONV" >&6; }
else
CPPFLAGS="$am_save_CPPFLAGS"
LIBICONV=
if test "$am_cv_func_iconv" = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv declaration" >&5
-$as_echo_n "checking for iconv declaration... " >&6; }
- if ${am_cv_proto_iconv+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for iconv declaration" >&5
+printf %s "checking for iconv declaration... " >&6; }
+ if test ${am_cv_proto_iconv+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#endif
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
am_cv_proto_iconv_arg1=""
-else
+else $as_nop
am_cv_proto_iconv_arg1="const"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"
fi
am_cv_proto_iconv=`echo "$am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'`
- { $as_echo "$as_me:${as_lineno-$LINENO}: result:
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result:
$am_cv_proto_iconv" >&5
-$as_echo "
+printf "%s\n" "
$am_cv_proto_iconv" >&6; }
-cat >>confdefs.h <<_ACEOF
-#define ICONV_CONST $am_cv_proto_iconv_arg1
-_ACEOF
+printf "%s\n" "#define ICONV_CONST $am_cv_proto_iconv_arg1" >>confdefs.h
fi
- for ac_header in iconv.h
-do :
ac_fn_c_check_header_compile "$LINENO" "iconv.h" "ac_cv_header_iconv_h" "#include <stdlib.h>
"
-if test "x$ac_cv_header_iconv_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_ICONV_H 1
-_ACEOF
+if test "x$ac_cv_header_iconv_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_ICONV_H 1" >>confdefs.h
fi
-done
-
if test "x$am_cv_func_iconv" = "xyes"; then
- for ac_header in localcharset.h
-do :
- ac_fn_c_check_header_mongrel "$LINENO" "localcharset.h" "ac_cv_header_localcharset_h" "$ac_includes_default"
-if test "x$ac_cv_header_localcharset_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LOCALCHARSET_H 1
-_ACEOF
+ ac_fn_c_check_header_compile "$LINENO" "localcharset.h" "ac_cv_header_localcharset_h" "$ac_includes_default"
+if test "x$ac_cv_header_localcharset_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_LOCALCHARSET_H 1" >>confdefs.h
fi
-done
-
am_save_LIBS="$LIBS"
LIBS="${LIBS} ${LIBICONV}"
- for ac_func in locale_charset
-do :
- ac_fn_c_check_func "$LINENO" "locale_charset" "ac_cv_func_locale_charset"
-if test "x$ac_cv_func_locale_charset" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LOCALE_CHARSET 1
-_ACEOF
+ if test -n "$LIBICONV"; then
+ LIBSREQUIRED="$LIBSREQUIRED${LIBSREQUIRED:+ }iconv"
+ fi
+ ac_fn_c_check_func "$LINENO" "locale_charset" "ac_cv_func_locale_charset"
+if test "x$ac_cv_func_locale_charset" = xyes
+then :
+ printf "%s\n" "#define HAVE_LOCALE_CHARSET 1" >>confdefs.h
fi
-done
LIBS="${am_save_LIBS}"
if test "x$ac_cv_func_locale_charset" != "xyes"; then
# If locale_charset() is not in libiconv, we have to find libcharset.
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for locale_charset in -lcharset" >&5
-$as_echo_n "checking for locale_charset in -lcharset... " >&6; }
-if ${ac_cv_lib_charset_locale_charset+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for locale_charset in -lcharset" >&5
+printf %s "checking for locale_charset in -lcharset... " >&6; }
+if test ${ac_cv_lib_charset_locale_charset+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lcharset $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* 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 locale_charset ();
int
-main ()
+main (void)
{
return locale_charset ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_charset_locale_charset=yes
-else
+else $as_nop
ac_cv_lib_charset_locale_charset=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_charset_locale_charset" >&5
-$as_echo "$ac_cv_lib_charset_locale_charset" >&6; }
-if test "x$ac_cv_lib_charset_locale_charset" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBCHARSET 1
-_ACEOF
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_charset_locale_charset" >&5
+printf "%s\n" "$ac_cv_lib_charset_locale_charset" >&6; }
+if test "x$ac_cv_lib_charset_locale_charset" = xyes
+then :
+ printf "%s\n" "#define HAVE_LIBCHARSET 1" >>confdefs.h
LIBS="-lcharset $LIBS"
# Check whether --with-lz4 was given.
-if test "${with_lz4+set}" = set; then :
+if test ${with_lz4+y}
+then :
withval=$with_lz4;
fi
if test "x$with_lz4" != "xno"; then
- for ac_header in lz4.h lz4hc.h
-do :
- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
+ ac_fn_c_check_header_compile "$LINENO" "lz4.h" "ac_cv_header_lz4_h" "$ac_includes_default"
+if test "x$ac_cv_header_lz4_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_LZ4_H 1" >>confdefs.h
fi
+ac_fn_c_check_header_compile "$LINENO" "lz4hc.h" "ac_cv_header_lz4hc_h" "$ac_includes_default"
+if test "x$ac_cv_header_lz4hc_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_LZ4HC_H 1" >>confdefs.h
-done
+fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LZ4_decompress_safe in -llz4" >&5
-$as_echo_n "checking for LZ4_decompress_safe in -llz4... " >&6; }
-if ${ac_cv_lib_lz4_LZ4_decompress_safe+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for LZ4_decompress_safe in -llz4" >&5
+printf %s "checking for LZ4_decompress_safe in -llz4... " >&6; }
+if test ${ac_cv_lib_lz4_LZ4_decompress_safe+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-llz4 $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char LZ4_decompress_safe ();
int
-main ()
+main (void)
{
return LZ4_decompress_safe ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_lz4_LZ4_decompress_safe=yes
-else
+else $as_nop
ac_cv_lib_lz4_LZ4_decompress_safe=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_lz4_LZ4_decompress_safe" >&5
-$as_echo "$ac_cv_lib_lz4_LZ4_decompress_safe" >&6; }
-if test "x$ac_cv_lib_lz4_LZ4_decompress_safe" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBLZ4 1
-_ACEOF
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_lz4_LZ4_decompress_safe" >&5
+printf "%s\n" "$ac_cv_lib_lz4_LZ4_decompress_safe" >&6; }
+if test "x$ac_cv_lib_lz4_LZ4_decompress_safe" = xyes
+then :
+ printf "%s\n" "#define HAVE_LIBLZ4 1" >>confdefs.h
LIBS="-llz4 $LIBS"
# Check whether --with-zstd was given.
-if test "${with_zstd+set}" = set; then :
+if test ${with_zstd+y}
+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
+ ac_fn_c_check_header_compile "$LINENO" "zstd.h" "ac_cv_header_zstd_h" "$ac_includes_default"
+if test "x$ac_cv_header_zstd_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_ZSTD_H 1" >>confdefs.h
fi
-done
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ZSTD_decompressStream in -lzstd" >&5
+printf %s "checking for ZSTD_decompressStream in -lzstd... " >&6; }
+if test ${ac_cv_lib_zstd_ZSTD_decompressStream+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lzstd $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
- { $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
+/* 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. */
+char ZSTD_decompressStream ();
+int
+main (void)
+{
+return ZSTD_decompressStream ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"
+then :
+ ac_cv_lib_zstd_ZSTD_decompressStream=yes
+else $as_nop
+ ac_cv_lib_zstd_ZSTD_decompressStream=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_zstd_ZSTD_decompressStream" >&5
+printf "%s\n" "$ac_cv_lib_zstd_ZSTD_decompressStream" >&6; }
+if test "x$ac_cv_lib_zstd_ZSTD_decompressStream" = xyes
+then :
+ printf "%s\n" "#define HAVE_LIBZSTD 1" >>confdefs.h
+
+ LIBS="-lzstd $LIBS"
+
+fi
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ZSTD_compressStream in -lzstd" >&5
+printf %s "checking for ZSTD_compressStream in -lzstd... " >&6; }
+if test ${ac_cv_lib_zstd_ZSTD_compressStream+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lzstd $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* 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 ()
+main (void)
{
return ZSTD_compressStream ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_zstd_ZSTD_compressStream=yes
-else
+else $as_nop
ac_cv_lib_zstd_ZSTD_compressStream=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
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
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_zstd_ZSTD_compressStream" >&5
+printf "%s\n" "$ac_cv_lib_zstd_ZSTD_compressStream" >&6; }
+if test "x$ac_cv_lib_zstd_ZSTD_compressStream" = xyes
+then :
- LIBS="-lzstd $LIBS"
+printf "%s\n" "#define HAVE_LIBZSTD_COMPRESSOR 1" >>confdefs.h
fi
# Check whether --with-lzma was given.
-if test "${with_lzma+set}" = set; then :
+if test ${with_lzma+y}
+then :
withval=$with_lzma;
fi
if test "x$with_lzma" != "xno"; then
- for ac_header in lzma.h
-do :
- ac_fn_c_check_header_mongrel "$LINENO" "lzma.h" "ac_cv_header_lzma_h" "$ac_includes_default"
-if test "x$ac_cv_header_lzma_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LZMA_H 1
-_ACEOF
+ ac_fn_c_check_header_compile "$LINENO" "lzma.h" "ac_cv_header_lzma_h" "$ac_includes_default"
+if test "x$ac_cv_header_lzma_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_LZMA_H 1" >>confdefs.h
fi
-done
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for lzma_stream_decoder in -llzma" >&5
-$as_echo_n "checking for lzma_stream_decoder in -llzma... " >&6; }
-if ${ac_cv_lib_lzma_lzma_stream_decoder+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for lzma_stream_decoder in -llzma" >&5
+printf %s "checking for lzma_stream_decoder in -llzma... " >&6; }
+if test ${ac_cv_lib_lzma_lzma_stream_decoder+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-llzma $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* 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 lzma_stream_decoder ();
int
-main ()
+main (void)
{
return lzma_stream_decoder ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_lzma_lzma_stream_decoder=yes
-else
+else $as_nop
ac_cv_lib_lzma_lzma_stream_decoder=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_lzma_lzma_stream_decoder" >&5
-$as_echo "$ac_cv_lib_lzma_lzma_stream_decoder" >&6; }
-if test "x$ac_cv_lib_lzma_lzma_stream_decoder" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBLZMA 1
-_ACEOF
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_lzma_lzma_stream_decoder" >&5
+printf "%s\n" "$ac_cv_lib_lzma_lzma_stream_decoder" >&6; }
+if test "x$ac_cv_lib_lzma_lzma_stream_decoder" = xyes
+then :
+ printf "%s\n" "#define HAVE_LIBLZMA 1" >>confdefs.h
LIBS="-llzma $LIBS"
# included a disabled version of lzma_stream_encoder_mt that
# fools a naive AC_CHECK_LIB or AC_CHECK_FUNC, so we need
# to do something more complex here:
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we have multithread support in lzma" >&5
-$as_echo_n "checking whether we have multithread support in lzma... " >&6; }
-if ${ac_cv_lzma_has_mt+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we have multithread support in lzma" >&5
+printf %s "checking whether we have multithread support in lzma... " >&6; }
+if test ${ac_cv_lzma_has_mt+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#error unsupported
#endif
int
-main ()
+main (void)
{
lzma_stream_encoder_mt(0, 0);
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lzma_has_mt=yes
-else
+else $as_nop
ac_cv_lzma_has_mt=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lzma_has_mt" >&5
-$as_echo "$ac_cv_lzma_has_mt" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lzma_has_mt" >&5
+printf "%s\n" "$ac_cv_lzma_has_mt" >&6; }
if test "x$ac_cv_lzma_has_mt" != xno; then
-$as_echo "#define HAVE_LZMA_STREAM_ENCODER_MT 1" >>confdefs.h
+printf "%s\n" "#define HAVE_LZMA_STREAM_ENCODER_MT 1" >>confdefs.h
+
+ fi
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we have ARM64 filter support in lzma" >&5
+printf %s "checking whether we have ARM64 filter support in lzma... " >&6; }
+if test ${ac_cv_lzma_has_arm64+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+ #include <lzma.h>
+ #ifndef LZMA_FILTER_ARM64
+ #error unsupported
+ #endif
+int
+main (void)
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"
+then :
+ ac_cv_lzma_has_arm64=yes
+else $as_nop
+ ac_cv_lzma_has_arm64=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lzma_has_arm64" >&5
+printf "%s\n" "$ac_cv_lzma_has_arm64" >&6; }
+ if test "x$ac_cv_lzma_has_arm64" != xno; then
+
+printf "%s\n" "#define HAVE_LZMA_FILTER_ARM64 1" >>confdefs.h
fi
fi
# Check whether --with-lzo2 was given.
-if test "${with_lzo2+set}" = set; then :
+if test ${with_lzo2+y}
+then :
withval=$with_lzo2;
fi
if test "x$with_lzo2" = "xyes"; then
- for ac_header in lzo/lzoconf.h lzo/lzo1x.h
-do :
- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
+ ac_fn_c_check_header_compile "$LINENO" "lzo/lzoconf.h" "ac_cv_header_lzo_lzoconf_h" "$ac_includes_default"
+if test "x$ac_cv_header_lzo_lzoconf_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_LZO_LZOCONF_H 1" >>confdefs.h
fi
+ac_fn_c_check_header_compile "$LINENO" "lzo/lzo1x.h" "ac_cv_header_lzo_lzo1x_h" "$ac_includes_default"
+if test "x$ac_cv_header_lzo_lzo1x_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_LZO_LZO1X_H 1" >>confdefs.h
-done
+fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for lzo1x_decompress_safe in -llzo2" >&5
-$as_echo_n "checking for lzo1x_decompress_safe in -llzo2... " >&6; }
-if ${ac_cv_lib_lzo2_lzo1x_decompress_safe+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for lzo1x_decompress_safe in -llzo2" >&5
+printf %s "checking for lzo1x_decompress_safe in -llzo2... " >&6; }
+if test ${ac_cv_lib_lzo2_lzo1x_decompress_safe+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-llzo2 $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* 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 lzo1x_decompress_safe ();
int
-main ()
+main (void)
{
return lzo1x_decompress_safe ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_lzo2_lzo1x_decompress_safe=yes
-else
+else $as_nop
ac_cv_lib_lzo2_lzo1x_decompress_safe=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_lzo2_lzo1x_decompress_safe" >&5
-$as_echo "$ac_cv_lib_lzo2_lzo1x_decompress_safe" >&6; }
-if test "x$ac_cv_lib_lzo2_lzo1x_decompress_safe" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBLZO2 1
-_ACEOF
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_lzo2_lzo1x_decompress_safe" >&5
+printf "%s\n" "$ac_cv_lib_lzo2_lzo1x_decompress_safe" >&6; }
+if test "x$ac_cv_lib_lzo2_lzo1x_decompress_safe" = xyes
+then :
+ printf "%s\n" "#define HAVE_LIBLZO2 1" >>confdefs.h
LIBS="-llzo2 $LIBS"
# Check whether --with-cng was given.
-if test "${with_cng+set}" = set; then :
+if test ${with_cng+y}
+then :
withval=$with_cng;
fi
# Check whether --with-mbedtls was given.
-if test "${with_mbedtls+set}" = set; then :
+if test ${with_mbedtls+y}
+then :
withval=$with_mbedtls;
fi
# Check whether --with-nettle was given.
-if test "${with_nettle+set}" = set; then :
+if test ${with_nettle+y}
+then :
withval=$with_nettle;
fi
# Check whether --with-openssl was given.
-if test "${with_openssl+set}" = set; then :
+if test ${with_openssl+y}
+then :
withval=$with_openssl;
fi
# Check whether --with-xml2 was given.
-if test "${with_xml2+set}" = set; then :
+if test ${with_xml2+y}
+then :
withval=$with_xml2;
fi
# Check whether --with-expat was given.
-if test "${with_expat+set}" = set; then :
+if test ${with_expat+y}
+then :
withval=$with_expat;
fi
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_PKG_CONFIG+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_PKG_CONFIG+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $PKG_CONFIG in
[\\/]* | ?:[\\/]*)
ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_PKG_CONFIG="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
PKG_CONFIG=$ac_cv_path_PKG_CONFIG
if test -n "$PKG_CONFIG"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5
-$as_echo "$PKG_CONFIG" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5
+printf "%s\n" "$PKG_CONFIG" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
ac_pt_PKG_CONFIG=$PKG_CONFIG
# Extract the first word of "pkg-config", so it can be a program name with args.
set dummy pkg-config; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_ac_pt_PKG_CONFIG+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $ac_pt_PKG_CONFIG in
[\\/]* | ?:[\\/]*)
ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_ac_pt_PKG_CONFIG="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
if test -n "$ac_pt_PKG_CONFIG"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
-$as_echo "$ac_pt_PKG_CONFIG" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
+printf "%s\n" "$ac_pt_PKG_CONFIG" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test "x$ac_pt_PKG_CONFIG" = x; then
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
PKG_CONFIG=$ac_pt_PKG_CONFIG
fi
if test -n "$PKG_CONFIG"; then
_pkg_min_version=0.9.0
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5
-$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5
+printf %s "checking pkg-config is at least version $_pkg_min_version... " >&6; }
if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
PKG_CONFIG=""
fi
fi
pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBXML2_PC" >&5
-$as_echo_n "checking for LIBXML2_PC... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libxml-2.0" >&5
+printf %s "checking for libxml-2.0... " >&6; }
if test -n "$LIBXML2_PC_CFLAGS"; then
pkg_cv_LIBXML2_PC_CFLAGS="$LIBXML2_PC_CFLAGS"
elif test -n "$PKG_CONFIG"; then
if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libxml-2.0\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libxml-2.0\""; } >&5
($PKG_CONFIG --exists --print-errors "libxml-2.0") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
pkg_cv_LIBXML2_PC_CFLAGS=`$PKG_CONFIG --cflags "libxml-2.0" 2>/dev/null`
test "x$?" != "x0" && pkg_failed=yes
pkg_cv_LIBXML2_PC_LIBS="$LIBXML2_PC_LIBS"
elif test -n "$PKG_CONFIG"; then
if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libxml-2.0\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libxml-2.0\""; } >&5
($PKG_CONFIG --exists --print-errors "libxml-2.0") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
pkg_cv_LIBXML2_PC_LIBS=`$PKG_CONFIG --libs "libxml-2.0" 2>/dev/null`
test "x$?" != "x0" && pkg_failed=yes
if test $pkg_failed = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
_pkg_short_errors_supported=yes
echo "$LIBXML2_PC_PKG_ERRORS" >&5
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for xmlInitParser in -lxml2" >&5
-$as_echo_n "checking for xmlInitParser in -lxml2... " >&6; }
-if ${ac_cv_lib_xml2_xmlInitParser+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for xmlInitParser in -lxml2" >&5
+printf %s "checking for xmlInitParser in -lxml2... " >&6; }
+if test ${ac_cv_lib_xml2_xmlInitParser+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lxml2 $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char xmlInitParser ();
int
-main ()
+main (void)
{
return xmlInitParser ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_xml2_xmlInitParser=yes
-else
+else $as_nop
ac_cv_lib_xml2_xmlInitParser=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_xml2_xmlInitParser" >&5
-$as_echo "$ac_cv_lib_xml2_xmlInitParser" >&6; }
-if test "x$ac_cv_lib_xml2_xmlInitParser" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBXML2 1
-_ACEOF
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_xml2_xmlInitParser" >&5
+printf "%s\n" "$ac_cv_lib_xml2_xmlInitParser" >&6; }
+if test "x$ac_cv_lib_xml2_xmlInitParser" = xyes
+then :
+ printf "%s\n" "#define HAVE_LIBXML2 1" >>confdefs.h
LIBS="-lxml2 $LIBS"
elif test $pkg_failed = untried; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for xmlInitParser in -lxml2" >&5
-$as_echo_n "checking for xmlInitParser in -lxml2... " >&6; }
-if ${ac_cv_lib_xml2_xmlInitParser+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for xmlInitParser in -lxml2" >&5
+printf %s "checking for xmlInitParser in -lxml2... " >&6; }
+if test ${ac_cv_lib_xml2_xmlInitParser+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lxml2 $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char xmlInitParser ();
int
-main ()
+main (void)
{
return xmlInitParser ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_xml2_xmlInitParser=yes
-else
+else $as_nop
ac_cv_lib_xml2_xmlInitParser=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_xml2_xmlInitParser" >&5
-$as_echo "$ac_cv_lib_xml2_xmlInitParser" >&6; }
-if test "x$ac_cv_lib_xml2_xmlInitParser" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBXML2 1
-_ACEOF
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_xml2_xmlInitParser" >&5
+printf "%s\n" "$ac_cv_lib_xml2_xmlInitParser" >&6; }
+if test "x$ac_cv_lib_xml2_xmlInitParser" = xyes
+then :
+ printf "%s\n" "#define HAVE_LIBXML2 1" >>confdefs.h
LIBS="-lxml2 $LIBS"
else
LIBXML2_PC_CFLAGS=$pkg_cv_LIBXML2_PC_CFLAGS
LIBXML2_PC_LIBS=$pkg_cv_LIBXML2_PC_LIBS
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
CPPFLAGS="${CPPFLAGS} ${LIBXML2_PC_CFLAGS}"
LIBS="${LIBS} ${LIBXML2_PC_LIBS}"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for xmlInitParser in -lxml2" >&5
-$as_echo_n "checking for xmlInitParser in -lxml2... " >&6; }
-if ${ac_cv_lib_xml2_xmlInitParser+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for xmlInitParser in -lxml2" >&5
+printf %s "checking for xmlInitParser in -lxml2... " >&6; }
+if test ${ac_cv_lib_xml2_xmlInitParser+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lxml2 $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char xmlInitParser ();
int
-main ()
+main (void)
{
return xmlInitParser ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_xml2_xmlInitParser=yes
-else
+else $as_nop
ac_cv_lib_xml2_xmlInitParser=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_xml2_xmlInitParser" >&5
-$as_echo "$ac_cv_lib_xml2_xmlInitParser" >&6; }
-if test "x$ac_cv_lib_xml2_xmlInitParser" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_xml2_xmlInitParser" >&5
+printf "%s\n" "$ac_cv_lib_xml2_xmlInitParser" >&6; }
+if test "x$ac_cv_lib_xml2_xmlInitParser" = xyes
+then :
true
-else
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+else $as_nop
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "Missing xml2 library
See \`config.log' for more details" "$LINENO" 5; }
fi
fi
- for ac_header in libxml/xmlreader.h libxml/xmlwriter.h
-do :
- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
+ ac_fn_c_check_header_compile "$LINENO" "libxml/xmlreader.h" "ac_cv_header_libxml_xmlreader_h" "$ac_includes_default"
+if test "x$ac_cv_header_libxml_xmlreader_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_LIBXML_XMLREADER_H 1" >>confdefs.h
fi
+ac_fn_c_check_header_compile "$LINENO" "libxml/xmlwriter.h" "ac_cv_header_libxml_xmlwriter_h" "$ac_includes_default"
+if test "x$ac_cv_header_libxml_xmlwriter_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_LIBXML_XMLWRITER_H 1" >>confdefs.h
-done
+fi
fi
if test "x$ac_cv_header_libxml_xmlreader_h" != "xyes"; then
if test "x$with_expat" != "xno"; then
- for ac_header in expat.h
-do :
- ac_fn_c_check_header_mongrel "$LINENO" "expat.h" "ac_cv_header_expat_h" "$ac_includes_default"
-if test "x$ac_cv_header_expat_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_EXPAT_H 1
-_ACEOF
+ ac_fn_c_check_header_compile "$LINENO" "expat.h" "ac_cv_header_expat_h" "$ac_includes_default"
+if test "x$ac_cv_header_expat_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_EXPAT_H 1" >>confdefs.h
fi
-done
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XML_ParserCreate in -lexpat" >&5
-$as_echo_n "checking for XML_ParserCreate in -lexpat... " >&6; }
-if ${ac_cv_lib_expat_XML_ParserCreate+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for XML_ParserCreate in -lexpat" >&5
+printf %s "checking for XML_ParserCreate in -lexpat... " >&6; }
+if test ${ac_cv_lib_expat_XML_ParserCreate+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lexpat $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* 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 XML_ParserCreate ();
int
-main ()
+main (void)
{
return XML_ParserCreate ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_expat_XML_ParserCreate=yes
-else
+else $as_nop
ac_cv_lib_expat_XML_ParserCreate=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_expat_XML_ParserCreate" >&5
-$as_echo "$ac_cv_lib_expat_XML_ParserCreate" >&6; }
-if test "x$ac_cv_lib_expat_XML_ParserCreate" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBEXPAT 1
-_ACEOF
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_expat_XML_ParserCreate" >&5
+printf "%s\n" "$ac_cv_lib_expat_XML_ParserCreate" >&6; }
+if test "x$ac_cv_lib_expat_XML_ParserCreate" = xyes
+then :
+ printf "%s\n" "#define HAVE_LIBEXPAT 1" >>confdefs.h
LIBS="-lexpat $LIBS"
fi
# Check whether --enable-posix-regex-lib was given.
-if test "${enable_posix_regex_lib+set}" = set; then :
+if test ${enable_posix_regex_lib+y}
+then :
enableval=$enable_posix_regex_lib;
-else
+else $as_nop
enable_posix_regex_lib=auto
fi
posix_regex_lib_found=
if test "$enable_posix_regex_lib" = "auto" || test "$enable_posix_regex_lib" = "libc" || test "$enable_posix_regex_lib" = "libregex"; then
- for ac_header in regex.h
-do :
- ac_fn_c_check_header_mongrel "$LINENO" "regex.h" "ac_cv_header_regex_h" "$ac_includes_default"
-if test "x$ac_cv_header_regex_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_REGEX_H 1
-_ACEOF
+ ac_fn_c_check_header_compile "$LINENO" "regex.h" "ac_cv_header_regex_h" "$ac_includes_default"
+if test "x$ac_cv_header_regex_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_REGEX_H 1" >>confdefs.h
fi
-done
-
if test "x$ac_cv_header_regex_h" != "xno"; then
ac_fn_c_check_func "$LINENO" "regcomp" "ac_cv_func_regcomp"
-if test "x$ac_cv_func_regcomp" = xyes; then :
+if test "x$ac_cv_func_regcomp" = xyes
+then :
fi
if test "x$ac_cv_func_regcomp" = xyes; then
posix_regex_lib_found=1
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for regcomp in -lregex" >&5
-$as_echo_n "checking for regcomp in -lregex... " >&6; }
-if ${ac_cv_lib_regex_regcomp+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for regcomp in -lregex" >&5
+printf %s "checking for regcomp in -lregex... " >&6; }
+if test ${ac_cv_lib_regex_regcomp+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lregex $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* 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 regcomp ();
int
-main ()
+main (void)
{
return regcomp ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_regex_regcomp=yes
-else
+else $as_nop
ac_cv_lib_regex_regcomp=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_regex_regcomp" >&5
-$as_echo "$ac_cv_lib_regex_regcomp" >&6; }
-if test "x$ac_cv_lib_regex_regcomp" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBREGEX 1
-_ACEOF
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_regex_regcomp" >&5
+printf "%s\n" "$ac_cv_lib_regex_regcomp" >&6; }
+if test "x$ac_cv_lib_regex_regcomp" = xyes
+then :
+ printf "%s\n" "#define HAVE_LIBREGEX 1" >>confdefs.h
LIBS="-lregex $LIBS"
fi
fi
if test -z $posix_regex_lib_found && (test "$enable_posix_regex_lib" = "auto" || test "$enable_posix_regex_lib" = "libpcreposix"); then
- for ac_header in pcreposix.h
-do :
- ac_fn_c_check_header_mongrel "$LINENO" "pcreposix.h" "ac_cv_header_pcreposix_h" "$ac_includes_default"
-if test "x$ac_cv_header_pcreposix_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_PCREPOSIX_H 1
-_ACEOF
+ ac_fn_c_check_header_compile "$LINENO" "pcreposix.h" "ac_cv_header_pcreposix_h" "$ac_includes_default"
+if test "x$ac_cv_header_pcreposix_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_PCREPOSIX_H 1" >>confdefs.h
fi
-done
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for regcomp in -lpcreposix" >&5
-$as_echo_n "checking for regcomp in -lpcreposix... " >&6; }
-if ${ac_cv_lib_pcreposix_regcomp+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for regcomp in -lpcreposix" >&5
+printf %s "checking for regcomp in -lpcreposix... " >&6; }
+if test ${ac_cv_lib_pcreposix_regcomp+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lpcreposix $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* 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 regcomp ();
int
-main ()
+main (void)
{
return regcomp ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_pcreposix_regcomp=yes
-else
+else $as_nop
ac_cv_lib_pcreposix_regcomp=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pcreposix_regcomp" >&5
-$as_echo "$ac_cv_lib_pcreposix_regcomp" >&6; }
-if test "x$ac_cv_lib_pcreposix_regcomp" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBPCREPOSIX 1
-_ACEOF
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pcreposix_regcomp" >&5
+printf "%s\n" "$ac_cv_lib_pcreposix_regcomp" >&6; }
+if test "x$ac_cv_lib_pcreposix_regcomp" = xyes
+then :
+ printf "%s\n" "#define HAVE_LIBPCREPOSIX 1" >>confdefs.h
LIBS="-lpcreposix $LIBS"
fi
if test "x$ac_cv_lib_pcreposix_regcomp" != xyes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: trying libpcreposix check again with libpcre" >&5
-$as_echo "$as_me: trying libpcreposix check again with libpcre" >&6;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: trying libpcreposix check again with libpcre" >&5
+printf "%s\n" "$as_me: trying libpcreposix check again with libpcre" >&6;}
unset ac_cv_lib_pcreposix_regcomp
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pcre_exec in -lpcre" >&5
-$as_echo_n "checking for pcre_exec in -lpcre... " >&6; }
-if ${ac_cv_lib_pcre_pcre_exec+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for pcre_exec in -lpcre" >&5
+printf %s "checking for pcre_exec in -lpcre... " >&6; }
+if test ${ac_cv_lib_pcre_pcre_exec+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lpcre $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* 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 pcre_exec ();
int
-main ()
+main (void)
{
return pcre_exec ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_pcre_pcre_exec=yes
-else
+else $as_nop
ac_cv_lib_pcre_pcre_exec=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pcre_pcre_exec" >&5
-$as_echo "$ac_cv_lib_pcre_pcre_exec" >&6; }
-if test "x$ac_cv_lib_pcre_pcre_exec" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBPCRE 1
-_ACEOF
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pcre_pcre_exec" >&5
+printf "%s\n" "$ac_cv_lib_pcre_pcre_exec" >&6; }
+if test "x$ac_cv_lib_pcre_pcre_exec" = xyes
+then :
+ printf "%s\n" "#define HAVE_LIBPCRE 1" >>confdefs.h
LIBS="-lpcre $LIBS"
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for regcomp in -lpcreposix" >&5
-$as_echo_n "checking for regcomp in -lpcreposix... " >&6; }
-if ${ac_cv_lib_pcreposix_regcomp+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for regcomp in -lpcreposix" >&5
+printf %s "checking for regcomp in -lpcreposix... " >&6; }
+if test ${ac_cv_lib_pcreposix_regcomp+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lpcreposix $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* 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
+ builtin and then its argument prototype would still apply. */
char regcomp ();
int
-main ()
+main (void)
{
return regcomp ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_pcreposix_regcomp=yes
-else
+else $as_nop
ac_cv_lib_pcreposix_regcomp=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pcreposix_regcomp" >&5
-$as_echo "$ac_cv_lib_pcreposix_regcomp" >&6; }
-if test "x$ac_cv_lib_pcreposix_regcomp" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBPCREPOSIX 1
-_ACEOF
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pcreposix_regcomp" >&5
+printf "%s\n" "$ac_cv_lib_pcreposix_regcomp" >&6; }
+if test "x$ac_cv_lib_pcreposix_regcomp" = xyes
+then :
+ printf "%s\n" "#define HAVE_LIBPCREPOSIX 1" >>confdefs.h
LIBS="-lpcreposix $LIBS"
fi
if test "x$ac_cv_lib_pcre_pcre_exec" = xyes && test "x$ac_cv_lib_pcreposix_regcomp" = xyes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if PCRE_STATIC needs to be defined" >&5
-$as_echo_n "checking if PCRE_STATIC needs to be defined... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if PCRE_STATIC needs to be defined" >&5
+printf %s "checking if PCRE_STATIC needs to be defined... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <pcreposix.h>
int main() { return regcomp(NULL, NULL, 0); }
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
without_pcre_static=yes
-else
+else $as_nop
without_pcre_static=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <pcreposix.h>
int main() { return regcomp(NULL, NULL, 0); }
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
with_pcre_static=yes
-else
+else $as_nop
with_pcre_static=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
if test "x$without_pcre_static" != xyes && test "x$with_pcre_static" = xyes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
-$as_echo "#define PCRE_STATIC 1" >>confdefs.h
+printf "%s\n" "#define PCRE_STATIC 1" >>confdefs.h
elif test "x$without_pcre_static" = xyes || test "x$with_pcre_static" = xyes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
posix_regex_lib_found=1
fi
for flag in -Wall -Wformat -Wformat-security; do
- as_CACHEVAR=`$as_echo "ax_cv_check_cflags__$flag" | $as_tr_sh`
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $flag" >&5
-$as_echo_n "checking whether C compiler accepts $flag... " >&6; }
-if eval \${$as_CACHEVAR+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ as_CACHEVAR=`printf "%s\n" "ax_cv_check_cflags__$flag" | $as_tr_sh`
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $flag" >&5
+printf %s "checking whether C compiler accepts $flag... " >&6; }
+if eval test \${$as_CACHEVAR+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ax_check_save_flags=$CFLAGS
CFLAGS="$CFLAGS $flag"
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
eval "$as_CACHEVAR=yes"
-else
+else $as_nop
eval "$as_CACHEVAR=no"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
CFLAGS=$ax_check_save_flags
fi
eval ac_res=\$$as_CACHEVAR
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-if eval test \"x\$"$as_CACHEVAR"\" = x"yes"; then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf "%s\n" "$ac_res" >&6; }
+if eval test \"x\$"$as_CACHEVAR"\" = x"yes"
+then :
-if ${CFLAGS+:} false; then :
+if test ${CFLAGS+y}
+then :
case " $CFLAGS " in #(
*" $flag "*) :
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS already contains \$flag"; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CFLAGS already contains \$flag"; } >&5
(: CFLAGS already contains $flag) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } ;; #(
*) :
as_fn_append CFLAGS " $flag"
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS=\"\$CFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CFLAGS=\"\$CFLAGS\""; } >&5
(: CFLAGS="$CFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
;;
esac
-else
+else $as_nop
CFLAGS=$flag
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS=\"\$CFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CFLAGS=\"\$CFLAGS\""; } >&5
(: CFLAGS="$CFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
fi
-else
+else $as_nop
+ :
+fi
+
+done
+
+
+# Place the functions and data into separate sections, allowing the linker
+# to garbage collect the unused ones.
+save_LDFLAGS=$LDFLAGS
+LDFLAGS="$LDFLAGS -Wl,--gc-sections"
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ld supports --gc-sections" >&5
+printf %s "checking whether ld supports --gc-sections... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+static char UnusedFunc() { return 5; } int main() { return 0;}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+ GC_SECTIONS="-Wl,--gc-sections";
+
+
+
+
+for flag in -ffunction-sections -fdata-sections; do
+ as_CACHEVAR=`printf "%s\n" "ax_cv_check_cflags__$flag" | $as_tr_sh`
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $flag" >&5
+printf %s "checking whether C compiler accepts $flag... " >&6; }
+if eval test \${$as_CACHEVAR+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+
+ ax_check_save_flags=$CFLAGS
+ CFLAGS="$CFLAGS $flag"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main (void)
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+ eval "$as_CACHEVAR=yes"
+else $as_nop
+ eval "$as_CACHEVAR=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+ CFLAGS=$ax_check_save_flags
+fi
+eval ac_res=\$$as_CACHEVAR
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf "%s\n" "$ac_res" >&6; }
+if eval test \"x\$"$as_CACHEVAR"\" = x"yes"
+then :
+
+if test ${CFLAGS+y}
+then :
+
+ case " $CFLAGS " in #(
+ *" $flag "*) :
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CFLAGS already contains \$flag"; } >&5
+ (: CFLAGS already contains $flag) 2>&5
+ ac_status=$?
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } ;; #(
+ *) :
+
+ as_fn_append CFLAGS " $flag"
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CFLAGS=\"\$CFLAGS\""; } >&5
+ (: CFLAGS="$CFLAGS") 2>&5
+ ac_status=$?
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+ ;;
+esac
+
+else $as_nop
+
+ CFLAGS=$flag
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CFLAGS=\"\$CFLAGS\""; } >&5
+ (: CFLAGS="$CFLAGS") 2>&5
+ ac_status=$?
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+
+fi
+
+else $as_nop
:
fi
done
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+ GC_SECTIONS="";
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+ conftest$ac_exeext conftest.$ac_ext
+LDFLAGS=$save_LDFLAGS
+
+
# Checks for typedefs, structures, and compiler characteristics.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5
-$as_echo_n "checking for an ANSI C-conforming const... " >&6; }
-if ${ac_cv_c_const+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5
+printf %s "checking for an ANSI C-conforming const... " >&6; }
+if test ${ac_cv_c_const+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-main ()
+main (void)
{
#ifndef __cplusplus
/* NEC SVR4.0.2 mips cc rejects this. */
struct point {int x, y;};
static struct point const zero = {0,0};
- /* AIX XL C 1.02.0.0 rejects this.
+ /* IBM XL C 1.02.0.0 rejects this.
It does not let you subtract one const X* pointer from another in
an arm of an if-expression whose if-part is not a constant
expression */
iptr p = 0;
++p;
}
- { /* AIX XL C 1.02.0.0 rejects this sort of thing, saying
+ { /* IBM XL C 1.02.0.0 rejects this sort of thing, saying
"k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
struct s { int j; const int *ap[3]; } bx;
struct s *b = &bx; b->j = 5;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_c_const=yes
-else
+else $as_nop
ac_cv_c_const=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5
-$as_echo "$ac_cv_c_const" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5
+printf "%s\n" "$ac_cv_c_const" >&6; }
if test $ac_cv_c_const = no; then
-$as_echo "#define const /**/" >>confdefs.h
+printf "%s\n" "#define const /**/" >>confdefs.h
fi
# la_TYPE_UID_T defaults to "int", which is incorrect for MinGW
# and MSVC. Use a customized version.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for uid_t in sys/types.h" >&5
-$as_echo_n "checking for uid_t in sys/types.h... " >&6; }
-if ${la_cv_type_uid_t+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for uid_t in sys/types.h" >&5
+printf %s "checking for uid_t in sys/types.h... " >&6; }
+if test ${la_cv_type_uid_t+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <sys/types.h>
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "uid_t" >/dev/null 2>&1; then :
+ $EGREP "uid_t" >/dev/null 2>&1
+then :
la_cv_type_uid_t=yes
-else
+else $as_nop
la_cv_type_uid_t=no
fi
-rm -f conftest*
+rm -rf conftest*
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $la_cv_type_uid_t" >&5
-$as_echo "$la_cv_type_uid_t" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $la_cv_type_uid_t" >&5
+printf "%s\n" "$la_cv_type_uid_t" >&6; }
if test $la_cv_type_uid_t = no; then
case $host in
*mingw*) def_uid_t=short ;;
*) def_uid_t=int ;;
esac
-cat >>confdefs.h <<_ACEOF
-#define uid_t $def_uid_t
-_ACEOF
+printf "%s\n" "#define uid_t $def_uid_t" >>confdefs.h
-cat >>confdefs.h <<_ACEOF
-#define gid_t $def_uid_t
-_ACEOF
+printf "%s\n" "#define gid_t $def_uid_t" >>confdefs.h
fi
ac_fn_c_check_type "$LINENO" "mode_t" "ac_cv_type_mode_t" "$ac_includes_default"
-if test "x$ac_cv_type_mode_t" = xyes; then :
+if test "x$ac_cv_type_mode_t" = xyes
+then :
-else
+else $as_nop
-cat >>confdefs.h <<_ACEOF
-#define mode_t int
-_ACEOF
+printf "%s\n" "#define mode_t int" >>confdefs.h
fi
# AC_TYPE_OFF_T defaults to "long", which limits us to 4GB files on
# most systems... default to "long long" instead.
ac_fn_c_check_type "$LINENO" "off_t" "ac_cv_type_off_t" "$ac_includes_default"
-if test "x$ac_cv_type_off_t" = xyes; then :
+if test "x$ac_cv_type_off_t" = xyes
+then :
-else
+else $as_nop
-cat >>confdefs.h <<_ACEOF
-#define off_t long long
-_ACEOF
+printf "%s\n" "#define off_t long long" >>confdefs.h
fi
ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default"
-if test "x$ac_cv_type_size_t" = xyes; then :
+if test "x$ac_cv_type_size_t" = xyes
+then :
-else
+else $as_nop
-cat >>confdefs.h <<_ACEOF
-#define size_t unsigned int
-_ACEOF
+printf "%s\n" "#define size_t unsigned int" >>confdefs.h
fi
ac_fn_c_check_type "$LINENO" "id_t" "ac_cv_type_id_t" "$ac_includes_default"
-if test "x$ac_cv_type_id_t" = xyes; then :
+if test "x$ac_cv_type_id_t" = xyes
+then :
-else
+else $as_nop
-cat >>confdefs.h <<_ACEOF
-#define id_t unsigned long
-_ACEOF
+printf "%s\n" "#define id_t unsigned long" >>confdefs.h
fi
ac_fn_c_check_type "$LINENO" "uintptr_t" "ac_cv_type_uintptr_t" "$ac_includes_default"
-if test "x$ac_cv_type_uintptr_t" = xyes; then :
+if test "x$ac_cv_type_uintptr_t" = xyes
+then :
-else
+else $as_nop
-cat >>confdefs.h <<_ACEOF
-#define uintptr_t unsigned int
-_ACEOF
+printf "%s\n" "#define uintptr_t unsigned int" >>confdefs.h
fi
#include <time.h>
"
-if test "x$ac_cv_member_struct_tm_tm_gmtoff" = xyes; then :
+if test "x$ac_cv_member_struct_tm_tm_gmtoff" = xyes
+then :
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_TM_TM_GMTOFF 1
-_ACEOF
+printf "%s\n" "#define HAVE_STRUCT_TM_TM_GMTOFF 1" >>confdefs.h
fi
#include <time.h>
"
-if test "x$ac_cv_member_struct_tm___tm_gmtoff" = xyes; then :
+if test "x$ac_cv_member_struct_tm___tm_gmtoff" = xyes
+then :
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_TM___TM_GMTOFF 1
-_ACEOF
+printf "%s\n" "#define HAVE_STRUCT_TM___TM_GMTOFF 1" >>confdefs.h
fi
#include <sys/mount.h>
"
-if test "x$ac_cv_member_struct_statfs_f_namemax" = xyes; then :
+if test "x$ac_cv_member_struct_statfs_f_namemax" = xyes
+then :
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_STATFS_F_NAMEMAX 1
-_ACEOF
+printf "%s\n" "#define HAVE_STRUCT_STATFS_F_NAMEMAX 1" >>confdefs.h
fi
#include <sys/mount.h>
"
-if test "x$ac_cv_member_struct_statfs_f_iosize" = xyes; then :
+if test "x$ac_cv_member_struct_statfs_f_iosize" = xyes
+then :
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_STATFS_F_IOSIZE 1
-_ACEOF
+printf "%s\n" "#define HAVE_STRUCT_STATFS_F_IOSIZE 1" >>confdefs.h
fi
#include <sys/statvfs.h>
"
-if test "x$ac_cv_member_struct_statvfs_f_iosize" = xyes; then :
+if test "x$ac_cv_member_struct_statvfs_f_iosize" = xyes
+then :
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_STATVFS_F_IOSIZE 1
-_ACEOF
+printf "%s\n" "#define HAVE_STRUCT_STATVFS_F_IOSIZE 1" >>confdefs.h
fi
# Check for birthtime in struct stat
ac_fn_c_check_member "$LINENO" "struct stat" "st_birthtime" "ac_cv_member_struct_stat_st_birthtime" "$ac_includes_default"
-if test "x$ac_cv_member_struct_stat_st_birthtime" = xyes; then :
+if test "x$ac_cv_member_struct_stat_st_birthtime" = xyes
+then :
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_STAT_ST_BIRTHTIME 1
-_ACEOF
+printf "%s\n" "#define HAVE_STRUCT_STAT_ST_BIRTHTIME 1" >>confdefs.h
fi
# Check for high-resolution timestamps in struct stat
ac_fn_c_check_member "$LINENO" "struct stat" "st_birthtimespec.tv_nsec" "ac_cv_member_struct_stat_st_birthtimespec_tv_nsec" "$ac_includes_default"
-if test "x$ac_cv_member_struct_stat_st_birthtimespec_tv_nsec" = xyes; then :
+if test "x$ac_cv_member_struct_stat_st_birthtimespec_tv_nsec" = xyes
+then :
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_STAT_ST_BIRTHTIMESPEC_TV_NSEC 1
-_ACEOF
+printf "%s\n" "#define HAVE_STRUCT_STAT_ST_BIRTHTIMESPEC_TV_NSEC 1" >>confdefs.h
fi
ac_fn_c_check_member "$LINENO" "struct stat" "st_mtimespec.tv_nsec" "ac_cv_member_struct_stat_st_mtimespec_tv_nsec" "$ac_includes_default"
-if test "x$ac_cv_member_struct_stat_st_mtimespec_tv_nsec" = xyes; then :
+if test "x$ac_cv_member_struct_stat_st_mtimespec_tv_nsec" = xyes
+then :
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_STAT_ST_MTIMESPEC_TV_NSEC 1
-_ACEOF
+printf "%s\n" "#define HAVE_STRUCT_STAT_ST_MTIMESPEC_TV_NSEC 1" >>confdefs.h
fi
ac_fn_c_check_member "$LINENO" "struct stat" "st_mtim.tv_nsec" "ac_cv_member_struct_stat_st_mtim_tv_nsec" "$ac_includes_default"
-if test "x$ac_cv_member_struct_stat_st_mtim_tv_nsec" = xyes; then :
+if test "x$ac_cv_member_struct_stat_st_mtim_tv_nsec" = xyes
+then :
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC 1
-_ACEOF
+printf "%s\n" "#define HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC 1" >>confdefs.h
fi
ac_fn_c_check_member "$LINENO" "struct stat" "st_mtime_n" "ac_cv_member_struct_stat_st_mtime_n" "$ac_includes_default"
-if test "x$ac_cv_member_struct_stat_st_mtime_n" = xyes; then :
+if test "x$ac_cv_member_struct_stat_st_mtime_n" = xyes
+then :
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_STAT_ST_MTIME_N 1
-_ACEOF
+printf "%s\n" "#define HAVE_STRUCT_STAT_ST_MTIME_N 1" >>confdefs.h
fi
# AIX
ac_fn_c_check_member "$LINENO" "struct stat" "st_umtime" "ac_cv_member_struct_stat_st_umtime" "$ac_includes_default"
-if test "x$ac_cv_member_struct_stat_st_umtime" = xyes; then :
+if test "x$ac_cv_member_struct_stat_st_umtime" = xyes
+then :
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_STAT_ST_UMTIME 1
-_ACEOF
+printf "%s\n" "#define HAVE_STRUCT_STAT_ST_UMTIME 1" >>confdefs.h
fi
# Tru64
ac_fn_c_check_member "$LINENO" "struct stat" "st_mtime_usec" "ac_cv_member_struct_stat_st_mtime_usec" "$ac_includes_default"
-if test "x$ac_cv_member_struct_stat_st_mtime_usec" = xyes; then :
+if test "x$ac_cv_member_struct_stat_st_mtime_usec" = xyes
+then :
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_STAT_ST_MTIME_USEC 1
-_ACEOF
+printf "%s\n" "#define HAVE_STRUCT_STAT_ST_MTIME_USEC 1" >>confdefs.h
fi
# Hurd
# Check for block size support in struct stat
ac_fn_c_check_member "$LINENO" "struct stat" "st_blksize" "ac_cv_member_struct_stat_st_blksize" "$ac_includes_default"
-if test "x$ac_cv_member_struct_stat_st_blksize" = xyes; then :
+if test "x$ac_cv_member_struct_stat_st_blksize" = xyes
+then :
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_STAT_ST_BLKSIZE 1
-_ACEOF
+printf "%s\n" "#define HAVE_STRUCT_STAT_ST_BLKSIZE 1" >>confdefs.h
fi
# Check for st_flags in struct stat (BSD fflags)
ac_fn_c_check_member "$LINENO" "struct stat" "st_flags" "ac_cv_member_struct_stat_st_flags" "$ac_includes_default"
-if test "x$ac_cv_member_struct_stat_st_flags" = xyes; then :
+if test "x$ac_cv_member_struct_stat_st_flags" = xyes
+then :
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_STAT_ST_FLAGS 1
-_ACEOF
+printf "%s\n" "#define HAVE_STRUCT_STAT_ST_FLAGS 1" >>confdefs.h
fi
# If you have unsigned long long, we assume printf supports %llu
# TODO: Check for %ju and %llu support directly.
ac_fn_c_check_type "$LINENO" "uintmax_t" "ac_cv_type_uintmax_t" "$ac_includes_default"
-if test "x$ac_cv_type_uintmax_t" = xyes; then :
+if test "x$ac_cv_type_uintmax_t" = xyes
+then :
-cat >>confdefs.h <<_ACEOF
-#define HAVE_UINTMAX_T 1
-_ACEOF
+printf "%s\n" "#define HAVE_UINTMAX_T 1" >>confdefs.h
fi
ac_fn_c_check_type "$LINENO" "unsigned long long" "ac_cv_type_unsigned_long_long" "$ac_includes_default"
-if test "x$ac_cv_type_unsigned_long_long" = xyes; then :
+if test "x$ac_cv_type_unsigned_long_long" = xyes
+then :
-cat >>confdefs.h <<_ACEOF
-#define HAVE_UNSIGNED_LONG_LONG 1
-_ACEOF
+printf "%s\n" "#define HAVE_UNSIGNED_LONG_LONG 1" >>confdefs.h
fi
# We use C99-style integer types
# Declare them if the local platform doesn't already do so.
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for unsigned long long int" >&5
-$as_echo_n "checking for unsigned long long int... " >&6; }
-if ${ac_cv_type_unsigned_long_long_int+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for unsigned long long int" >&5
+printf %s "checking for unsigned long long int... " >&6; }
+if test ${ac_cv_type_unsigned_long_long_int+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_cv_type_unsigned_long_long_int=yes
- if test "x${ac_cv_prog_cc_c99-no}" = xno; then
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ case $ac_prog_cc_stdc in
+ no | c89) ;;
+ *)
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
/* For now, do not test the preprocessor; as of 2007 there are too many
? 1 : -1)];
int i = 63;
int
-main ()
+main (void)
{
/* Test availability of runtime routines for shift and division. */
long long int llmax = 9223372036854775807ll;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
-else
+else $as_nop
ac_cv_type_unsigned_long_long_int=no
fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
- fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+ conftest$ac_exeext conftest.$ac_ext;;
+ esac
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_unsigned_long_long_int" >&5
-$as_echo "$ac_cv_type_unsigned_long_long_int" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_unsigned_long_long_int" >&5
+printf "%s\n" "$ac_cv_type_unsigned_long_long_int" >&6; }
if test $ac_cv_type_unsigned_long_long_int = yes; then
-$as_echo "#define HAVE_UNSIGNED_LONG_LONG_INT 1" >>confdefs.h
+printf "%s\n" "#define HAVE_UNSIGNED_LONG_LONG_INT 1" >>confdefs.h
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for long long int" >&5
-$as_echo_n "checking for long long int... " >&6; }
-if ${ac_cv_type_long_long_int+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for long long int" >&5
+printf %s "checking for long long int... " >&6; }
+if test ${ac_cv_type_long_long_int+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_cv_type_long_long_int=yes
- if test "x${ac_cv_prog_cc_c99-no}" = xno; then
- ac_cv_type_long_long_int=$ac_cv_type_unsigned_long_long_int
- if test $ac_cv_type_long_long_int = yes; then
- if test "$cross_compiling" = yes; then :
+ case $ac_prog_cc_stdc in
+ no | c89) ;;
+ *)
+ ac_cv_type_long_long_int=$ac_cv_type_unsigned_long_long_int
+ if test $ac_cv_type_long_long_int = yes; then
+ if test "$cross_compiling" = yes
+then :
:
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <limits.h>
- #ifndef LLONG_MAX
- # define HALF \
- (1LL << (sizeof (long long int) * CHAR_BIT - 2))
- # define LLONG_MAX (HALF - 1 + HALF)
- #endif
+ #ifndef LLONG_MAX
+ # define HALF \
+ (1LL << (sizeof (long long int) * CHAR_BIT - 2))
+ # define LLONG_MAX (HALF - 1 + HALF)
+ #endif
int
-main ()
+main (void)
{
long long int n = 1;
- int i;
- for (i = 0; ; i++)
- {
- long long int m = n << i;
- if (m >> i != n)
- return 1;
- if (LLONG_MAX / 2 < m)
- break;
- }
- return 0;
+ int i;
+ for (i = 0; ; i++)
+ {
+ long long int m = n << i;
+ if (m >> i != n)
+ return 1;
+ if (LLONG_MAX / 2 < m)
+ break;
+ }
+ return 0;
;
return 0;
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
-else
+else $as_nop
ac_cv_type_long_long_int=no
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
- fi
- fi
+ fi;;
+ esac
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_long_long_int" >&5
-$as_echo "$ac_cv_type_long_long_int" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_long_long_int" >&5
+printf "%s\n" "$ac_cv_type_long_long_int" >&6; }
if test $ac_cv_type_long_long_int = yes; then
-$as_echo "#define HAVE_LONG_LONG_INT 1" >>confdefs.h
+printf "%s\n" "#define HAVE_LONG_LONG_INT 1" >>confdefs.h
fi
ac_fn_c_check_type "$LINENO" "intmax_t" "ac_cv_type_intmax_t" "$ac_includes_default"
-if test "x$ac_cv_type_intmax_t" = xyes; then :
+if test "x$ac_cv_type_intmax_t" = xyes
+then :
-$as_echo "#define HAVE_INTMAX_T 1" >>confdefs.h
+printf "%s\n" "#define HAVE_INTMAX_T 1" >>confdefs.h
-else
+else $as_nop
test $ac_cv_type_long_long_int = yes \
&& ac_type='long long int' \
|| ac_type='long int'
-cat >>confdefs.h <<_ACEOF
-#define intmax_t $ac_type
-_ACEOF
+printf "%s\n" "#define intmax_t $ac_type" >>confdefs.h
fi
ac_fn_c_check_type "$LINENO" "uintmax_t" "ac_cv_type_uintmax_t" "$ac_includes_default"
-if test "x$ac_cv_type_uintmax_t" = xyes; then :
+if test "x$ac_cv_type_uintmax_t" = xyes
+then :
-$as_echo "#define HAVE_UINTMAX_T 1" >>confdefs.h
+printf "%s\n" "#define HAVE_UINTMAX_T 1" >>confdefs.h
-else
+else $as_nop
test $ac_cv_type_unsigned_long_long_int = yes \
&& ac_type='unsigned long long int' \
|| ac_type='unsigned long int'
-cat >>confdefs.h <<_ACEOF
-#define uintmax_t $ac_type
-_ACEOF
+printf "%s\n" "#define uintmax_t $ac_type" >>confdefs.h
fi
no|yes) ;; #(
*)
-cat >>confdefs.h <<_ACEOF
-#define int64_t $ac_cv_c_int64_t
-_ACEOF
+printf "%s\n" "#define int64_t $ac_cv_c_int64_t" >>confdefs.h
;;
esac
no|yes) ;; #(
*)
-$as_echo "#define _UINT64_T 1" >>confdefs.h
+printf "%s\n" "#define _UINT64_T 1" >>confdefs.h
-cat >>confdefs.h <<_ACEOF
-#define uint64_t $ac_cv_c_uint64_t
-_ACEOF
+printf "%s\n" "#define uint64_t $ac_cv_c_uint64_t" >>confdefs.h
;;
esac
no|yes) ;; #(
*)
-cat >>confdefs.h <<_ACEOF
-#define int32_t $ac_cv_c_int32_t
-_ACEOF
+printf "%s\n" "#define int32_t $ac_cv_c_int32_t" >>confdefs.h
;;
esac
no|yes) ;; #(
*)
-$as_echo "#define _UINT32_T 1" >>confdefs.h
+printf "%s\n" "#define _UINT32_T 1" >>confdefs.h
-cat >>confdefs.h <<_ACEOF
-#define uint32_t $ac_cv_c_uint32_t
-_ACEOF
+printf "%s\n" "#define uint32_t $ac_cv_c_uint32_t" >>confdefs.h
;;
esac
no|yes) ;; #(
*)
-cat >>confdefs.h <<_ACEOF
-#define int16_t $ac_cv_c_int16_t
-_ACEOF
+printf "%s\n" "#define int16_t $ac_cv_c_int16_t" >>confdefs.h
;;
esac
*)
-cat >>confdefs.h <<_ACEOF
-#define uint16_t $ac_cv_c_uint16_t
-_ACEOF
+printf "%s\n" "#define uint16_t $ac_cv_c_uint16_t" >>confdefs.h
;;
esac
no|yes) ;; #(
*)
-$as_echo "#define _UINT8_T 1" >>confdefs.h
+printf "%s\n" "#define _UINT8_T 1" >>confdefs.h
-cat >>confdefs.h <<_ACEOF
-#define uint8_t $ac_cv_c_uint8_t
-_ACEOF
+printf "%s\n" "#define uint8_t $ac_cv_c_uint8_t" >>confdefs.h
;;
esac
-ac_fn_c_check_decl "$LINENO" "SIZE_MAX" "ac_cv_have_decl_SIZE_MAX" "$ac_includes_default"
-if test "x$ac_cv_have_decl_SIZE_MAX" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC options needed to detect all undeclared functions" >&5
+printf %s "checking for $CC options needed to detect all undeclared functions... " >&6; }
+if test ${ac_cv_c_undeclared_builtin_options+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ ac_save_CFLAGS=$CFLAGS
+ ac_cv_c_undeclared_builtin_options='cannot detect'
+ for ac_arg in '' -fno-builtin; do
+ CFLAGS="$ac_save_CFLAGS $ac_arg"
+ # This test program should *not* compile successfully.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main (void)
+{
+(void) strchr;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+
+else $as_nop
+ # This test program should compile successfully.
+ # No library function is consistently available on
+ # freestanding implementations, so test against a dummy
+ # declaration. Include always-available headers on the
+ # off chance that they somehow elicit warnings.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <float.h>
+#include <limits.h>
+#include <stdarg.h>
+#include <stddef.h>
+extern void ac_decl (int, char *);
+
+int
+main (void)
+{
+(void) ac_decl (0, (char *) 0);
+ (void) ac_decl;
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+ if test x"$ac_arg" = x
+then :
+ ac_cv_c_undeclared_builtin_options='none needed'
+else $as_nop
+ ac_cv_c_undeclared_builtin_options=$ac_arg
+fi
+ break
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+ done
+ CFLAGS=$ac_save_CFLAGS
+
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_undeclared_builtin_options" >&5
+printf "%s\n" "$ac_cv_c_undeclared_builtin_options" >&6; }
+ case $ac_cv_c_undeclared_builtin_options in #(
+ 'cannot detect') :
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot make $CC report undeclared builtins
+See \`config.log' for more details" "$LINENO" 5; } ;; #(
+ 'none needed') :
+ ac_c_undeclared_builtin_options='' ;; #(
+ *) :
+ ac_c_undeclared_builtin_options=$ac_cv_c_undeclared_builtin_options ;;
+esac
+
+ac_fn_check_decl "$LINENO" "SIZE_MAX" "ac_cv_have_decl_SIZE_MAX" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_SIZE_MAX" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_SIZE_MAX $ac_have_decl
-_ACEOF
-ac_fn_c_check_decl "$LINENO" "INT32_MAX" "ac_cv_have_decl_INT32_MAX" "$ac_includes_default"
-if test "x$ac_cv_have_decl_INT32_MAX" = xyes; then :
+printf "%s\n" "#define HAVE_DECL_SIZE_MAX $ac_have_decl" >>confdefs.h
+ac_fn_check_decl "$LINENO" "INT32_MAX" "ac_cv_have_decl_INT32_MAX" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_INT32_MAX" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_INT32_MAX $ac_have_decl
-_ACEOF
-ac_fn_c_check_decl "$LINENO" "INT32_MIN" "ac_cv_have_decl_INT32_MIN" "$ac_includes_default"
-if test "x$ac_cv_have_decl_INT32_MIN" = xyes; then :
+printf "%s\n" "#define HAVE_DECL_INT32_MAX $ac_have_decl" >>confdefs.h
+ac_fn_check_decl "$LINENO" "INT32_MIN" "ac_cv_have_decl_INT32_MIN" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_INT32_MIN" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
+printf "%s\n" "#define HAVE_DECL_INT32_MIN $ac_have_decl" >>confdefs.h
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_INT32_MIN $ac_have_decl
-_ACEOF
-
-ac_fn_c_check_decl "$LINENO" "INT64_MAX" "ac_cv_have_decl_INT64_MAX" "$ac_includes_default"
-if test "x$ac_cv_have_decl_INT64_MAX" = xyes; then :
+ac_fn_check_decl "$LINENO" "INT64_MAX" "ac_cv_have_decl_INT64_MAX" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_INT64_MAX" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_INT64_MAX $ac_have_decl
-_ACEOF
-ac_fn_c_check_decl "$LINENO" "INT64_MIN" "ac_cv_have_decl_INT64_MIN" "$ac_includes_default"
-if test "x$ac_cv_have_decl_INT64_MIN" = xyes; then :
+printf "%s\n" "#define HAVE_DECL_INT64_MAX $ac_have_decl" >>confdefs.h
+ac_fn_check_decl "$LINENO" "INT64_MIN" "ac_cv_have_decl_INT64_MIN" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_INT64_MIN" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_INT64_MIN $ac_have_decl
-_ACEOF
-ac_fn_c_check_decl "$LINENO" "UINT64_MAX" "ac_cv_have_decl_UINT64_MAX" "$ac_includes_default"
-if test "x$ac_cv_have_decl_UINT64_MAX" = xyes; then :
+printf "%s\n" "#define HAVE_DECL_INT64_MIN $ac_have_decl" >>confdefs.h
+ac_fn_check_decl "$LINENO" "UINT64_MAX" "ac_cv_have_decl_UINT64_MAX" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_UINT64_MAX" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_UINT64_MAX $ac_have_decl
-_ACEOF
-ac_fn_c_check_decl "$LINENO" "UINT32_MAX" "ac_cv_have_decl_UINT32_MAX" "$ac_includes_default"
-if test "x$ac_cv_have_decl_UINT32_MAX" = xyes; then :
+printf "%s\n" "#define HAVE_DECL_UINT64_MAX $ac_have_decl" >>confdefs.h
+ac_fn_check_decl "$LINENO" "UINT32_MAX" "ac_cv_have_decl_UINT32_MAX" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_UINT32_MAX" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
+printf "%s\n" "#define HAVE_DECL_UINT32_MAX $ac_have_decl" >>confdefs.h
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_UINT32_MAX $ac_have_decl
-_ACEOF
-
-ac_fn_c_check_decl "$LINENO" "INTMAX_MAX" "ac_cv_have_decl_INTMAX_MAX" "$ac_includes_default"
-if test "x$ac_cv_have_decl_INTMAX_MAX" = xyes; then :
+ac_fn_check_decl "$LINENO" "INTMAX_MAX" "ac_cv_have_decl_INTMAX_MAX" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_INTMAX_MAX" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_INTMAX_MAX $ac_have_decl
-_ACEOF
-ac_fn_c_check_decl "$LINENO" "INTMAX_MIN" "ac_cv_have_decl_INTMAX_MIN" "$ac_includes_default"
-if test "x$ac_cv_have_decl_INTMAX_MIN" = xyes; then :
+printf "%s\n" "#define HAVE_DECL_INTMAX_MAX $ac_have_decl" >>confdefs.h
+ac_fn_check_decl "$LINENO" "INTMAX_MIN" "ac_cv_have_decl_INTMAX_MIN" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_INTMAX_MIN" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_INTMAX_MIN $ac_have_decl
-_ACEOF
-ac_fn_c_check_decl "$LINENO" "UINTMAX_MAX" "ac_cv_have_decl_UINTMAX_MAX" "$ac_includes_default"
-if test "x$ac_cv_have_decl_UINTMAX_MAX" = xyes; then :
+printf "%s\n" "#define HAVE_DECL_INTMAX_MIN $ac_have_decl" >>confdefs.h
+ac_fn_check_decl "$LINENO" "UINTMAX_MAX" "ac_cv_have_decl_UINTMAX_MAX" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_UINTMAX_MAX" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_UINTMAX_MAX $ac_have_decl
-_ACEOF
+printf "%s\n" "#define HAVE_DECL_UINTMAX_MAX $ac_have_decl" >>confdefs.h
-ac_fn_c_check_decl "$LINENO" "SSIZE_MAX" "ac_cv_have_decl_SSIZE_MAX" "#include <limits.h>
-"
-if test "x$ac_cv_have_decl_SSIZE_MAX" = xyes; then :
+ac_fn_check_decl "$LINENO" "SSIZE_MAX" "ac_cv_have_decl_SSIZE_MAX" "#include <limits.h>
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_SSIZE_MAX" = xyes
+then :
-$as_echo "#define HAVE_DECL_SSIZE_MAX 1" >>confdefs.h
+printf "%s\n" "#define HAVE_DECL_SSIZE_MAX 1" >>confdefs.h
fi
+ac_fn_check_decl "$LINENO" "EFTYPE" "ac_cv_have_decl_EFTYPE" "#include <errno.h>
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_EFTYPE" = xyes
+then :
-ac_fn_c_check_decl "$LINENO" "EFTYPE" "ac_cv_have_decl_EFTYPE" "#include <errno.h>
-"
-if test "x$ac_cv_have_decl_EFTYPE" = xyes; then :
-
-$as_echo "#define HAVE_EFTYPE 1" >>confdefs.h
+printf "%s\n" "#define HAVE_EFTYPE 1" >>confdefs.h
fi
+ac_fn_check_decl "$LINENO" "EILSEQ" "ac_cv_have_decl_EILSEQ" "#include <errno.h>
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_EILSEQ" = xyes
+then :
-ac_fn_c_check_decl "$LINENO" "EILSEQ" "ac_cv_have_decl_EILSEQ" "#include <errno.h>
-"
-if test "x$ac_cv_have_decl_EILSEQ" = xyes; then :
-
-$as_echo "#define HAVE_EILSEQ 1" >>confdefs.h
+printf "%s\n" "#define HAVE_EILSEQ 1" >>confdefs.h
fi
-
ac_fn_c_check_type "$LINENO" "wchar_t" "ac_cv_type_wchar_t" "$ac_includes_default"
-if test "x$ac_cv_type_wchar_t" = xyes; then :
+if test "x$ac_cv_type_wchar_t" = xyes
+then :
-cat >>confdefs.h <<_ACEOF
-#define HAVE_WCHAR_T 1
-_ACEOF
+printf "%s\n" "#define HAVE_WCHAR_T 1" >>confdefs.h
# The cast to long int works around a bug in the HP C Compiler
# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
# This bug is HP SR number 8606223364.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of wchar_t" >&5
-$as_echo_n "checking size of wchar_t... " >&6; }
-if ${ac_cv_sizeof_wchar_t+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (wchar_t))" "ac_cv_sizeof_wchar_t" "$ac_includes_default"; then :
-
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of wchar_t" >&5
+printf %s "checking size of wchar_t... " >&6; }
+if test ${ac_cv_sizeof_wchar_t+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (wchar_t))" "ac_cv_sizeof_wchar_t" "$ac_includes_default"
+then :
+
+else $as_nop
if test "$ac_cv_type_wchar_t" = yes; then
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error 77 "cannot compute sizeof (wchar_t)
See \`config.log' for more details" "$LINENO" 5; }
else
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_wchar_t" >&5
-$as_echo "$ac_cv_sizeof_wchar_t" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_wchar_t" >&5
+printf "%s\n" "$ac_cv_sizeof_wchar_t" >&6; }
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_WCHAR_T $ac_cv_sizeof_wchar_t
-_ACEOF
+printf "%s\n" "#define SIZEOF_WCHAR_T $ac_cv_sizeof_wchar_t" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether time.h and sys/time.h may both be included" >&5
-$as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; }
-if ${ac_cv_header_time+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of int" >&5
+printf %s "checking size of int... " >&6; }
+if test ${ac_cv_sizeof_int+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ for ac_size in 4 8 1 2 16 ; do # List sizes in rough order of prevalence.
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
+
#include <sys/types.h>
-#include <sys/time.h>
-#include <time.h>
+
int
-main ()
+main (void)
{
-if ((struct tm *) 0)
-return 0;
+switch (0) case 0: case (sizeof (int) == $ac_size):;
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_header_time=yes
-else
- ac_cv_header_time=no
+if ac_fn_c_try_compile "$LINENO"
+then :
+ ac_cv_sizeof_int=$ac_size
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+ if test x$ac_cv_sizeof_int != x ; then break; fi
+done
+
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test x$ac_cv_sizeof_int = x ; then
+ as_fn_error $? "cannot determine a size for int" "$LINENO" 5
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_int" >&5
+printf "%s\n" "$ac_cv_sizeof_int" >&6; }
+
+printf "%s\n" "#define SIZEOF_INT $ac_cv_sizeof_int" >>confdefs.h
+
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of long" >&5
+printf %s "checking size of long... " >&6; }
+if test ${ac_cv_sizeof_long+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ for ac_size in 4 8 1 2 16 ; do # List sizes in rough order of prevalence.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#include <sys/types.h>
+
+
+int
+main (void)
+{
+switch (0) case 0: case (sizeof (long) == $ac_size):;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+ ac_cv_sizeof_long=$ac_size
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_time" >&5
-$as_echo "$ac_cv_header_time" >&6; }
-if test $ac_cv_header_time = yes; then
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+ if test x$ac_cv_sizeof_long != x ; then break; fi
+done
-$as_echo "#define TIME_WITH_SYS_TIME 1" >>confdefs.h
+fi
+if test x$ac_cv_sizeof_long = x ; then
+ as_fn_error $? "cannot determine a size for long" "$LINENO" 5
fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long" >&5
+printf "%s\n" "$ac_cv_sizeof_long" >&6; }
+
+printf "%s\n" "#define SIZEOF_LONG $ac_cv_sizeof_long" >>confdefs.h
+
+
+
+
# Checks for library functions.
if test $ac_cv_c_compiler_gnu = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC needs -traditional" >&5
-$as_echo_n "checking whether $CC needs -traditional... " >&6; }
-if ${ac_cv_prog_gcc_traditional+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC needs -traditional" >&5
+printf %s "checking whether $CC needs -traditional... " >&6; }
+if test ${ac_cv_prog_gcc_traditional+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_pattern="Autoconf.*'x'"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
Autoconf TIOCGETP
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "$ac_pattern" >/dev/null 2>&1; then :
+ $EGREP "$ac_pattern" >/dev/null 2>&1
+then :
ac_cv_prog_gcc_traditional=yes
-else
+else $as_nop
ac_cv_prog_gcc_traditional=no
fi
-rm -f conftest*
+rm -rf conftest*
if test $ac_cv_prog_gcc_traditional = no; then
Autoconf TCGETA
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "$ac_pattern" >/dev/null 2>&1; then :
+ $EGREP "$ac_pattern" >/dev/null 2>&1
+then :
ac_cv_prog_gcc_traditional=yes
fi
-rm -f conftest*
+rm -rf conftest*
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_gcc_traditional" >&5
-$as_echo "$ac_cv_prog_gcc_traditional" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_gcc_traditional" >&5
+printf "%s\n" "$ac_cv_prog_gcc_traditional" >&6; }
if test $ac_cv_prog_gcc_traditional = yes; then
CC="$CC -traditional"
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether sys/types.h defines makedev" >&5
-$as_echo_n "checking whether sys/types.h defines makedev... " >&6; }
-if ${ac_cv_header_sys_types_h_makedev+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <sys/types.h>
-int
-main ()
-{
-return makedev(0, 0);
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_header_sys_types_h_makedev=yes
-else
- ac_cv_header_sys_types_h_makedev=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_sys_types_h_makedev" >&5
-$as_echo "$ac_cv_header_sys_types_h_makedev" >&6; }
-if test $ac_cv_header_sys_types_h_makedev = no; then
-ac_fn_c_check_header_mongrel "$LINENO" "sys/mkdev.h" "ac_cv_header_sys_mkdev_h" "$ac_includes_default"
-if test "x$ac_cv_header_sys_mkdev_h" = xyes; then :
+ac_fn_c_check_header_compile "$LINENO" "sys/mkdev.h" "ac_cv_header_sys_mkdev_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_mkdev_h" = xyes
+then :
-$as_echo "#define MAJOR_IN_MKDEV 1" >>confdefs.h
+printf "%s\n" "#define MAJOR_IN_MKDEV 1" >>confdefs.h
fi
+if test $ac_cv_header_sys_mkdev_h = no; then
+ ac_fn_c_check_header_compile "$LINENO" "sys/sysmacros.h" "ac_cv_header_sys_sysmacros_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_sysmacros_h" = xyes
+then :
-
- if test $ac_cv_header_sys_mkdev_h = no; then
- ac_fn_c_check_header_mongrel "$LINENO" "sys/sysmacros.h" "ac_cv_header_sys_sysmacros_h" "$ac_includes_default"
-if test "x$ac_cv_header_sys_sysmacros_h" = xyes; then :
-
-$as_echo "#define MAJOR_IN_SYSMACROS 1" >>confdefs.h
+printf "%s\n" "#define MAJOR_IN_SYSMACROS 1" >>confdefs.h
fi
-
- fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGEFILE_SOURCE value needed for large files" >&5
-$as_echo_n "checking for _LARGEFILE_SOURCE value needed for large files... " >&6; }
-if ${ac_cv_sys_largefile_source+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _LARGEFILE_SOURCE value needed for large files" >&5
+printf %s "checking for _LARGEFILE_SOURCE value needed for large files... " >&6; }
+if test ${ac_cv_sys_largefile_source+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
while :; do
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <sys/types.h> /* for off_t */
#include <stdio.h>
int
-main ()
+main (void)
{
int (*fp) (FILE *, off_t, int) = fseeko;
return fseeko (stdin, 0, 0) && fp (stdin, 0, 0);
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_sys_largefile_source=no; break
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <sys/types.h> /* for off_t */
#include <stdio.h>
int
-main ()
+main (void)
{
int (*fp) (FILE *, off_t, int) = fseeko;
return fseeko (stdin, 0, 0) && fp (stdin, 0, 0);
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_sys_largefile_source=1; break
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
ac_cv_sys_largefile_source=unknown
break
done
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_source" >&5
-$as_echo "$ac_cv_sys_largefile_source" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_source" >&5
+printf "%s\n" "$ac_cv_sys_largefile_source" >&6; }
case $ac_cv_sys_largefile_source in #(
no | unknown) ;;
*)
-cat >>confdefs.h <<_ACEOF
-#define _LARGEFILE_SOURCE $ac_cv_sys_largefile_source
-_ACEOF
+printf "%s\n" "#define _LARGEFILE_SOURCE $ac_cv_sys_largefile_source" >>confdefs.h
;;
esac
rm -rf conftest*
# If you want fseeko and ftello with glibc, upgrade to a fixed glibc.
if test $ac_cv_sys_largefile_source != unknown; then
-$as_echo "#define HAVE_FSEEKO 1" >>confdefs.h
+printf "%s\n" "#define HAVE_FSEEKO 1" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working memcmp" >&5
-$as_echo_n "checking for working memcmp... " >&6; }
-if ${ac_cv_func_memcmp_working+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "$cross_compiling" = yes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working memcmp" >&5
+printf %s "checking for working memcmp... " >&6; }
+if test ${ac_cv_func_memcmp_working+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test "$cross_compiling" = yes
+then :
ac_cv_func_memcmp_working=no
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$ac_includes_default
int
-main ()
+main (void)
{
/* Some versions of memcmp are not 8-bit clean. */
return 0;
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
ac_cv_func_memcmp_working=yes
-else
+else $as_nop
ac_cv_func_memcmp_working=no
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_memcmp_working" >&5
-$as_echo "$ac_cv_func_memcmp_working" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_memcmp_working" >&5
+printf "%s\n" "$ac_cv_func_memcmp_working" >&6; }
test $ac_cv_func_memcmp_working = no && case " $LIBOBJS " in
*" memcmp.$ac_objext "* ) ;;
*) LIBOBJS="$LIBOBJS memcmp.$ac_objext"
esac
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether lstat correctly handles trailing slash" >&5
-$as_echo_n "checking whether lstat correctly handles trailing slash... " >&6; }
-if ${ac_cv_func_lstat_dereferences_slashed_symlink+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether lstat correctly handles trailing slash" >&5
+printf %s "checking whether lstat correctly handles trailing slash... " >&6; }
+if test ${ac_cv_func_lstat_dereferences_slashed_symlink+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
rm -f conftest.sym conftest.file
echo >conftest.file
if test "$as_ln_s" = "ln -s" && ln -s conftest.file conftest.sym; then
- if test "$cross_compiling" = yes; then :
- ac_cv_func_lstat_dereferences_slashed_symlink=no
-else
+ if test "$cross_compiling" = yes
+then :
+ case "$host_os" in # ((
+ # Guess yes on glibc systems.
+ *-gnu*) ac_cv_func_lstat_dereferences_slashed_symlink=yes ;;
+ # If we don't know, assume the worst.
+ *) ac_cv_func_lstat_dereferences_slashed_symlink=no ;;
+ esac
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$ac_includes_default
int
-main ()
+main (void)
{
struct stat sbuf;
/* Linux will dereference the symlink and fail, as required by POSIX.
return 0;
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
ac_cv_func_lstat_dereferences_slashed_symlink=yes
-else
+else $as_nop
ac_cv_func_lstat_dereferences_slashed_symlink=no
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
rm -f conftest.sym conftest.file
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_lstat_dereferences_slashed_symlink" >&5
-$as_echo "$ac_cv_func_lstat_dereferences_slashed_symlink" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_lstat_dereferences_slashed_symlink" >&5
+printf "%s\n" "$ac_cv_func_lstat_dereferences_slashed_symlink" >&6; }
test $ac_cv_func_lstat_dereferences_slashed_symlink = yes &&
-cat >>confdefs.h <<_ACEOF
-#define LSTAT_FOLLOWS_SLASHED_SYMLINK 1
-_ACEOF
+printf "%s\n" "#define LSTAT_FOLLOWS_SLASHED_SYMLINK 1" >>confdefs.h
if test "x$ac_cv_func_lstat_dereferences_slashed_symlink" = xno; then
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether lstat accepts an empty string" >&5
-$as_echo_n "checking whether lstat accepts an empty string... " >&6; }
-if ${ac_cv_func_lstat_empty_string_bug+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "$cross_compiling" = yes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether lstat accepts an empty string" >&5
+printf %s "checking whether lstat accepts an empty string... " >&6; }
+if test ${ac_cv_func_lstat_empty_string_bug+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test "$cross_compiling" = yes
+then :
ac_cv_func_lstat_empty_string_bug=yes
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$ac_includes_default
int
-main ()
+main (void)
{
struct stat sbuf;
return lstat ("", &sbuf) == 0;
return 0;
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
ac_cv_func_lstat_empty_string_bug=no
-else
+else $as_nop
ac_cv_func_lstat_empty_string_bug=yes
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_lstat_empty_string_bug" >&5
-$as_echo "$ac_cv_func_lstat_empty_string_bug" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_lstat_empty_string_bug" >&5
+printf "%s\n" "$ac_cv_func_lstat_empty_string_bug" >&6; }
if test $ac_cv_func_lstat_empty_string_bug = yes; then
case " $LIBOBJS " in
*" lstat.$ac_objext "* ) ;;
esac
-cat >>confdefs.h <<_ACEOF
-#define HAVE_LSTAT_EMPTY_STRING_BUG 1
-_ACEOF
+printf "%s\n" "#define HAVE_LSTAT_EMPTY_STRING_BUG 1" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stat accepts an empty string" >&5
-$as_echo_n "checking whether stat accepts an empty string... " >&6; }
-if ${ac_cv_func_stat_empty_string_bug+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "$cross_compiling" = yes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether stat accepts an empty string" >&5
+printf %s "checking whether stat accepts an empty string... " >&6; }
+if test ${ac_cv_func_stat_empty_string_bug+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test "$cross_compiling" = yes
+then :
ac_cv_func_stat_empty_string_bug=yes
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$ac_includes_default
int
-main ()
+main (void)
{
struct stat sbuf;
return stat ("", &sbuf) == 0;
return 0;
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
ac_cv_func_stat_empty_string_bug=no
-else
+else $as_nop
ac_cv_func_stat_empty_string_bug=yes
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_stat_empty_string_bug" >&5
-$as_echo "$ac_cv_func_stat_empty_string_bug" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_stat_empty_string_bug" >&5
+printf "%s\n" "$ac_cv_func_stat_empty_string_bug" >&6; }
if test $ac_cv_func_stat_empty_string_bug = yes; then
case " $LIBOBJS " in
*" stat.$ac_objext "* ) ;;
esac
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STAT_EMPTY_STRING_BUG 1
-_ACEOF
+printf "%s\n" "#define HAVE_STAT_EMPTY_STRING_BUG 1" >>confdefs.h
fi
-ac_fn_c_check_decl "$LINENO" "strerror_r" "ac_cv_have_decl_strerror_r" "$ac_includes_default"
-if test "x$ac_cv_have_decl_strerror_r" = xyes; then :
+ac_fn_check_decl "$LINENO" "strerror_r" "ac_cv_have_decl_strerror_r" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_strerror_r" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
+printf "%s\n" "#define HAVE_DECL_STRERROR_R $ac_have_decl" >>confdefs.h
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_STRERROR_R $ac_have_decl
-_ACEOF
-for ac_func in strerror_r
-do :
- ac_fn_c_check_func "$LINENO" "strerror_r" "ac_cv_func_strerror_r"
-if test "x$ac_cv_func_strerror_r" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_STRERROR_R 1
-_ACEOF
+if test $ac_cv_have_decl_strerror_r = yes; then
+ # For backward compatibility's sake, define HAVE_STRERROR_R.
+ # (We used to run AC_CHECK_FUNCS_ONCE for strerror_r, as well
+ # as AC_CHECK_DECLS_ONCE.)
+
+printf "%s\n" "#define HAVE_STRERROR_R 1" >>confdefs.h
fi
-done
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether strerror_r returns char *" >&5
-$as_echo_n "checking whether strerror_r returns char *... " >&6; }
-if ${ac_cv_func_strerror_r_char_p+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether strerror_r returns char *" >&5
+printf %s "checking whether strerror_r returns char *... " >&6; }
+if test ${ac_cv_func_strerror_r_char_p+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_cv_func_strerror_r_char_p=no
if test $ac_cv_have_decl_strerror_r = yes; then
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-$ac_includes_default
+#include <string.h>
int
-main ()
+main (void)
{
char buf[100];
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_func_strerror_r_char_p=yes
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- else
- # strerror_r is not declared. Choose between
- # systems that have relatively inaccessible declarations for the
- # function. BeOS and DEC UNIX 4.0 fall in this category, but the
- # former has a strerror_r that returns char*, while the latter
- # has a strerror_r that returns `int'.
- # This test should segfault on the DEC system.
- if test "$cross_compiling" = yes; then :
- :
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-$ac_includes_default
- extern char *strerror_r ();
-int
-main ()
-{
-char buf[100];
- char x = *strerror_r (0, buf, sizeof buf);
- return ! isalpha (x);
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_func_strerror_r_char_p=yes
fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
- conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_strerror_r_char_p" >&5
-$as_echo "$ac_cv_func_strerror_r_char_p" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_strerror_r_char_p" >&5
+printf "%s\n" "$ac_cv_func_strerror_r_char_p" >&6; }
if test $ac_cv_func_strerror_r_char_p = yes; then
-$as_echo "#define STRERROR_R_CHAR_P 1" >>confdefs.h
+printf "%s\n" "#define STRERROR_R_CHAR_P 1" >>confdefs.h
fi
-for ac_func in strftime
+
+ for ac_func in strftime
do :
ac_fn_c_check_func "$LINENO" "strftime" "ac_cv_func_strftime"
-if test "x$ac_cv_func_strftime" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_STRFTIME 1
-_ACEOF
+if test "x$ac_cv_func_strftime" = xyes
+then :
+ printf "%s\n" "#define HAVE_STRFTIME 1" >>confdefs.h
-else
+else $as_nop
# strftime is in -lintl on SCO UNIX.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for strftime in -lintl" >&5
-$as_echo_n "checking for strftime in -lintl... " >&6; }
-if ${ac_cv_lib_intl_strftime+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for strftime in -lintl" >&5
+printf %s "checking for strftime in -lintl... " >&6; }
+if test ${ac_cv_lib_intl_strftime+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lintl $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* 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 strftime ();
int
-main ()
+main (void)
{
return strftime ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_intl_strftime=yes
-else
+else $as_nop
ac_cv_lib_intl_strftime=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_strftime" >&5
-$as_echo "$ac_cv_lib_intl_strftime" >&6; }
-if test "x$ac_cv_lib_intl_strftime" = xyes; then :
- $as_echo "#define HAVE_STRFTIME 1" >>confdefs.h
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_strftime" >&5
+printf "%s\n" "$ac_cv_lib_intl_strftime" >&6; }
+if test "x$ac_cv_lib_intl_strftime" = xyes
+then :
+ printf "%s\n" "#define HAVE_STRFTIME 1" >>confdefs.h
LIBS="-lintl $LIBS"
fi
fi
-done
-for ac_func in vprintf
-do :
- ac_fn_c_check_func "$LINENO" "vprintf" "ac_cv_func_vprintf"
-if test "x$ac_cv_func_vprintf" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_VPRINTF 1
-_ACEOF
+done
+ac_func=
+for ac_item in $ac_func_c_list
+do
+ if test $ac_func; then
+ ac_fn_c_check_func "$LINENO" $ac_func ac_cv_func_$ac_func
+ if eval test \"x\$ac_cv_func_$ac_func\" = xyes; then
+ echo "#define $ac_item 1" >> confdefs.h
+ fi
+ ac_func=
+ else
+ ac_func=$ac_item
+ fi
+done
-ac_fn_c_check_func "$LINENO" "_doprnt" "ac_cv_func__doprnt"
-if test "x$ac_cv_func__doprnt" = xyes; then :
+if test "x$ac_cv_func_vprintf" = xno
+then :
+ ac_fn_c_check_func "$LINENO" "_doprnt" "ac_cv_func__doprnt"
+if test "x$ac_cv_func__doprnt" = xyes
+then :
-$as_echo "#define HAVE_DOPRNT 1" >>confdefs.h
+printf "%s\n" "#define HAVE_DOPRNT 1" >>confdefs.h
fi
fi
-done
-
-
# check for:
# CreateHardLinkA(LPCSTR, LPCSTR, LPSECURITY_ATTRIBUTES)
# To avoid necessity for including windows.h or special forward declaration
# workarounds, we use 'void *' for 'struct SECURITY_ATTRIBUTES *'
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for CreateHardLinkA" >&5
-$as_echo_n "checking for CreateHardLinkA... " >&6; }
-if ${ac_cv_func_CreateHardLinkA+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for CreateHardLinkA" >&5
+printf %s "checking for CreateHardLinkA... " >&6; }
+if test ${ac_cv_func_CreateHardLinkA+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
/* System header to define __stub macros and hopefully few prototypes,
char (*f) ( const char *, const char *, void * );
int
-main ()
+main (void)
{
/* The GNU C library defines this for functions which it implements
to always fail with ENOSYS. Some functions are actually named
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_func_CreateHardLinkA=yes
-else
+else $as_nop
ac_cv_func_CreateHardLinkA=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_CreateHardLinkA" >&5
-$as_echo "$ac_cv_func_CreateHardLinkA" >&6; }
-if test $ac_cv_func_CreateHardLinkA = yes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_CreateHardLinkA" >&5
+printf "%s\n" "$ac_cv_func_CreateHardLinkA" >&6; }
+if test $ac_cv_func_CreateHardLinkA = yes
+then :
fi
-for ac_func in arc4random_buf chflags chown chroot ctime_r
-do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
+ac_fn_c_check_func "$LINENO" "arc4random_buf" "ac_cv_func_arc4random_buf"
+if test "x$ac_cv_func_arc4random_buf" = xyes
+then :
+ printf "%s\n" "#define HAVE_ARC4RANDOM_BUF 1" >>confdefs.h
fi
-done
+ac_fn_c_check_func "$LINENO" "chflags" "ac_cv_func_chflags"
+if test "x$ac_cv_func_chflags" = xyes
+then :
+ printf "%s\n" "#define HAVE_CHFLAGS 1" >>confdefs.h
-for ac_func in fchdir fchflags fchmod fchown fcntl fdopendir fork
-do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
+fi
+ac_fn_c_check_func "$LINENO" "chown" "ac_cv_func_chown"
+if test "x$ac_cv_func_chown" = xyes
+then :
+ printf "%s\n" "#define HAVE_CHOWN 1" >>confdefs.h
fi
-done
+ac_fn_c_check_func "$LINENO" "chroot" "ac_cv_func_chroot"
+if test "x$ac_cv_func_chroot" = xyes
+then :
+ printf "%s\n" "#define HAVE_CHROOT 1" >>confdefs.h
-for ac_func in fstat fstatat fstatfs fstatvfs ftruncate
-do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
+fi
+ac_fn_c_check_func "$LINENO" "ctime_r" "ac_cv_func_ctime_r"
+if test "x$ac_cv_func_ctime_r" = xyes
+then :
+ printf "%s\n" "#define HAVE_CTIME_R 1" >>confdefs.h
fi
-done
-for ac_func in futimens futimes futimesat
-do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
+ac_fn_c_check_func "$LINENO" "fchdir" "ac_cv_func_fchdir"
+if test "x$ac_cv_func_fchdir" = xyes
+then :
+ printf "%s\n" "#define HAVE_FCHDIR 1" >>confdefs.h
fi
-done
+ac_fn_c_check_func "$LINENO" "fchflags" "ac_cv_func_fchflags"
+if test "x$ac_cv_func_fchflags" = xyes
+then :
+ printf "%s\n" "#define HAVE_FCHFLAGS 1" >>confdefs.h
-for ac_func in geteuid getpid getgrgid_r getgrnam_r
-do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
+fi
+ac_fn_c_check_func "$LINENO" "fchmod" "ac_cv_func_fchmod"
+if test "x$ac_cv_func_fchmod" = xyes
+then :
+ printf "%s\n" "#define HAVE_FCHMOD 1" >>confdefs.h
fi
-done
+ac_fn_c_check_func "$LINENO" "fchown" "ac_cv_func_fchown"
+if test "x$ac_cv_func_fchown" = xyes
+then :
+ printf "%s\n" "#define HAVE_FCHOWN 1" >>confdefs.h
-for ac_func in getpwnam_r getpwuid_r getvfsbyname gmtime_r
-do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
+fi
+ac_fn_c_check_func "$LINENO" "fcntl" "ac_cv_func_fcntl"
+if test "x$ac_cv_func_fcntl" = xyes
+then :
+ printf "%s\n" "#define HAVE_FCNTL 1" >>confdefs.h
fi
-done
+ac_fn_c_check_func "$LINENO" "fdopendir" "ac_cv_func_fdopendir"
+if test "x$ac_cv_func_fdopendir" = xyes
+then :
+ printf "%s\n" "#define HAVE_FDOPENDIR 1" >>confdefs.h
-for ac_func in lchflags lchmod lchown link linkat localtime_r lstat lutimes
-do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
+fi
+ac_fn_c_check_func "$LINENO" "fnmatch" "ac_cv_func_fnmatch"
+if test "x$ac_cv_func_fnmatch" = xyes
+then :
+ printf "%s\n" "#define HAVE_FNMATCH 1" >>confdefs.h
fi
-done
+ac_fn_c_check_func "$LINENO" "fork" "ac_cv_func_fork"
+if test "x$ac_cv_func_fork" = xyes
+then :
+ printf "%s\n" "#define HAVE_FORK 1" >>confdefs.h
-for ac_func in mbrtowc memmove memset
-do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
+fi
+
+ac_fn_c_check_func "$LINENO" "fstat" "ac_cv_func_fstat"
+if test "x$ac_cv_func_fstat" = xyes
+then :
+ printf "%s\n" "#define HAVE_FSTAT 1" >>confdefs.h
fi
-done
+ac_fn_c_check_func "$LINENO" "fstatat" "ac_cv_func_fstatat"
+if test "x$ac_cv_func_fstatat" = xyes
+then :
+ printf "%s\n" "#define HAVE_FSTATAT 1" >>confdefs.h
-for ac_func in mkdir mkfifo mknod mkstemp
-do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
+fi
+ac_fn_c_check_func "$LINENO" "fstatfs" "ac_cv_func_fstatfs"
+if test "x$ac_cv_func_fstatfs" = xyes
+then :
+ printf "%s\n" "#define HAVE_FSTATFS 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "fstatvfs" "ac_cv_func_fstatvfs"
+if test "x$ac_cv_func_fstatvfs" = xyes
+then :
+ printf "%s\n" "#define HAVE_FSTATVFS 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "ftruncate" "ac_cv_func_ftruncate"
+if test "x$ac_cv_func_ftruncate" = xyes
+then :
+ printf "%s\n" "#define HAVE_FTRUNCATE 1" >>confdefs.h
+
+fi
+
+ac_fn_c_check_func "$LINENO" "futimens" "ac_cv_func_futimens"
+if test "x$ac_cv_func_futimens" = xyes
+then :
+ printf "%s\n" "#define HAVE_FUTIMENS 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "futimes" "ac_cv_func_futimes"
+if test "x$ac_cv_func_futimes" = xyes
+then :
+ printf "%s\n" "#define HAVE_FUTIMES 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "futimesat" "ac_cv_func_futimesat"
+if test "x$ac_cv_func_futimesat" = xyes
+then :
+ printf "%s\n" "#define HAVE_FUTIMESAT 1" >>confdefs.h
+
+fi
+
+ac_fn_c_check_func "$LINENO" "geteuid" "ac_cv_func_geteuid"
+if test "x$ac_cv_func_geteuid" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETEUID 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "getline" "ac_cv_func_getline"
+if test "x$ac_cv_func_getline" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETLINE 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "getpid" "ac_cv_func_getpid"
+if test "x$ac_cv_func_getpid" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETPID 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "getgrgid_r" "ac_cv_func_getgrgid_r"
+if test "x$ac_cv_func_getgrgid_r" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETGRGID_R 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "getgrnam_r" "ac_cv_func_getgrnam_r"
+if test "x$ac_cv_func_getgrnam_r" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETGRNAM_R 1" >>confdefs.h
+
+fi
+
+ac_fn_c_check_func "$LINENO" "getpwnam_r" "ac_cv_func_getpwnam_r"
+if test "x$ac_cv_func_getpwnam_r" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETPWNAM_R 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "getpwuid_r" "ac_cv_func_getpwuid_r"
+if test "x$ac_cv_func_getpwuid_r" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETPWUID_R 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "getvfsbyname" "ac_cv_func_getvfsbyname"
+if test "x$ac_cv_func_getvfsbyname" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETVFSBYNAME 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "gmtime_r" "ac_cv_func_gmtime_r"
+if test "x$ac_cv_func_gmtime_r" = xyes
+then :
+ printf "%s\n" "#define HAVE_GMTIME_R 1" >>confdefs.h
+
+fi
+
+ac_fn_c_check_func "$LINENO" "lchflags" "ac_cv_func_lchflags"
+if test "x$ac_cv_func_lchflags" = xyes
+then :
+ printf "%s\n" "#define HAVE_LCHFLAGS 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "lchmod" "ac_cv_func_lchmod"
+if test "x$ac_cv_func_lchmod" = xyes
+then :
+ printf "%s\n" "#define HAVE_LCHMOD 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "lchown" "ac_cv_func_lchown"
+if test "x$ac_cv_func_lchown" = xyes
+then :
+ printf "%s\n" "#define HAVE_LCHOWN 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "link" "ac_cv_func_link"
+if test "x$ac_cv_func_link" = xyes
+then :
+ printf "%s\n" "#define HAVE_LINK 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "linkat" "ac_cv_func_linkat"
+if test "x$ac_cv_func_linkat" = xyes
+then :
+ printf "%s\n" "#define HAVE_LINKAT 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "localtime_r" "ac_cv_func_localtime_r"
+if test "x$ac_cv_func_localtime_r" = xyes
+then :
+ printf "%s\n" "#define HAVE_LOCALTIME_R 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "lstat" "ac_cv_func_lstat"
+if test "x$ac_cv_func_lstat" = xyes
+then :
+ printf "%s\n" "#define HAVE_LSTAT 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "lutimes" "ac_cv_func_lutimes"
+if test "x$ac_cv_func_lutimes" = xyes
+then :
+ printf "%s\n" "#define HAVE_LUTIMES 1" >>confdefs.h
+
+fi
+
+ac_fn_c_check_func "$LINENO" "mbrtowc" "ac_cv_func_mbrtowc"
+if test "x$ac_cv_func_mbrtowc" = xyes
+then :
+ printf "%s\n" "#define HAVE_MBRTOWC 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "memmove" "ac_cv_func_memmove"
+if test "x$ac_cv_func_memmove" = xyes
+then :
+ printf "%s\n" "#define HAVE_MEMMOVE 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "memset" "ac_cv_func_memset"
+if test "x$ac_cv_func_memset" = xyes
+then :
+ printf "%s\n" "#define HAVE_MEMSET 1" >>confdefs.h
+
+fi
+
+ac_fn_c_check_func "$LINENO" "mkdir" "ac_cv_func_mkdir"
+if test "x$ac_cv_func_mkdir" = xyes
+then :
+ printf "%s\n" "#define HAVE_MKDIR 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "mkfifo" "ac_cv_func_mkfifo"
+if test "x$ac_cv_func_mkfifo" = xyes
+then :
+ printf "%s\n" "#define HAVE_MKFIFO 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "mknod" "ac_cv_func_mknod"
+if test "x$ac_cv_func_mknod" = xyes
+then :
+ printf "%s\n" "#define HAVE_MKNOD 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "mkstemp" "ac_cv_func_mkstemp"
+if test "x$ac_cv_func_mkstemp" = xyes
+then :
+ printf "%s\n" "#define HAVE_MKSTEMP 1" >>confdefs.h
+
+fi
+
+ac_fn_c_check_func "$LINENO" "nl_langinfo" "ac_cv_func_nl_langinfo"
+if test "x$ac_cv_func_nl_langinfo" = xyes
+then :
+ printf "%s\n" "#define HAVE_NL_LANGINFO 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "openat" "ac_cv_func_openat"
+if test "x$ac_cv_func_openat" = xyes
+then :
+ printf "%s\n" "#define HAVE_OPENAT 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "pipe" "ac_cv_func_pipe"
+if test "x$ac_cv_func_pipe" = xyes
+then :
+ printf "%s\n" "#define HAVE_PIPE 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "poll" "ac_cv_func_poll"
+if test "x$ac_cv_func_poll" = xyes
+then :
+ printf "%s\n" "#define HAVE_POLL 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "posix_spawnp" "ac_cv_func_posix_spawnp"
+if test "x$ac_cv_func_posix_spawnp" = xyes
+then :
+ printf "%s\n" "#define HAVE_POSIX_SPAWNP 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "readlink" "ac_cv_func_readlink"
+if test "x$ac_cv_func_readlink" = xyes
+then :
+ printf "%s\n" "#define HAVE_READLINK 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "readlinkat" "ac_cv_func_readlinkat"
+if test "x$ac_cv_func_readlinkat" = xyes
+then :
+ printf "%s\n" "#define HAVE_READLINKAT 1" >>confdefs.h
+
+fi
+
+ac_fn_c_check_func "$LINENO" "readpassphrase" "ac_cv_func_readpassphrase"
+if test "x$ac_cv_func_readpassphrase" = xyes
+then :
+ printf "%s\n" "#define HAVE_READPASSPHRASE 1" >>confdefs.h
+
+fi
+
+ac_fn_c_check_func "$LINENO" "select" "ac_cv_func_select"
+if test "x$ac_cv_func_select" = xyes
+then :
+ printf "%s\n" "#define HAVE_SELECT 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "setenv" "ac_cv_func_setenv"
+if test "x$ac_cv_func_setenv" = xyes
+then :
+ printf "%s\n" "#define HAVE_SETENV 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "setlocale" "ac_cv_func_setlocale"
+if test "x$ac_cv_func_setlocale" = xyes
+then :
+ printf "%s\n" "#define HAVE_SETLOCALE 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "sigaction" "ac_cv_func_sigaction"
+if test "x$ac_cv_func_sigaction" = xyes
+then :
+ printf "%s\n" "#define HAVE_SIGACTION 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "statfs" "ac_cv_func_statfs"
+if test "x$ac_cv_func_statfs" = xyes
+then :
+ printf "%s\n" "#define HAVE_STATFS 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "statvfs" "ac_cv_func_statvfs"
+if test "x$ac_cv_func_statvfs" = xyes
+then :
+ printf "%s\n" "#define HAVE_STATVFS 1" >>confdefs.h
+
+fi
+
+ac_fn_c_check_func "$LINENO" "strchr" "ac_cv_func_strchr"
+if test "x$ac_cv_func_strchr" = xyes
+then :
+ printf "%s\n" "#define HAVE_STRCHR 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "strdup" "ac_cv_func_strdup"
+if test "x$ac_cv_func_strdup" = xyes
+then :
+ printf "%s\n" "#define HAVE_STRDUP 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "strerror" "ac_cv_func_strerror"
+if test "x$ac_cv_func_strerror" = xyes
+then :
+ printf "%s\n" "#define HAVE_STRERROR 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "strncpy_s" "ac_cv_func_strncpy_s"
+if test "x$ac_cv_func_strncpy_s" = xyes
+then :
+ printf "%s\n" "#define HAVE_STRNCPY_S 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "strnlen" "ac_cv_func_strnlen"
+if test "x$ac_cv_func_strnlen" = xyes
+then :
+ printf "%s\n" "#define HAVE_STRNLEN 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "strrchr" "ac_cv_func_strrchr"
+if test "x$ac_cv_func_strrchr" = xyes
+then :
+ printf "%s\n" "#define HAVE_STRRCHR 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "symlink" "ac_cv_func_symlink"
+if test "x$ac_cv_func_symlink" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYMLINK 1" >>confdefs.h
+
+fi
+
+ac_fn_c_check_func "$LINENO" "timegm" "ac_cv_func_timegm"
+if test "x$ac_cv_func_timegm" = xyes
+then :
+ printf "%s\n" "#define HAVE_TIMEGM 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "tzset" "ac_cv_func_tzset"
+if test "x$ac_cv_func_tzset" = xyes
+then :
+ printf "%s\n" "#define HAVE_TZSET 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "unlinkat" "ac_cv_func_unlinkat"
+if test "x$ac_cv_func_unlinkat" = xyes
+then :
+ printf "%s\n" "#define HAVE_UNLINKAT 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "unsetenv" "ac_cv_func_unsetenv"
+if test "x$ac_cv_func_unsetenv" = xyes
+then :
+ printf "%s\n" "#define HAVE_UNSETENV 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "utime" "ac_cv_func_utime"
+if test "x$ac_cv_func_utime" = xyes
+then :
+ printf "%s\n" "#define HAVE_UTIME 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "utimensat" "ac_cv_func_utimensat"
+if test "x$ac_cv_func_utimensat" = xyes
+then :
+ printf "%s\n" "#define HAVE_UTIMENSAT 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "utimes" "ac_cv_func_utimes"
+if test "x$ac_cv_func_utimes" = xyes
+then :
+ printf "%s\n" "#define HAVE_UTIMES 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "vfork" "ac_cv_func_vfork"
+if test "x$ac_cv_func_vfork" = xyes
+then :
+ printf "%s\n" "#define HAVE_VFORK 1" >>confdefs.h
+
+fi
+
+ac_fn_c_check_func "$LINENO" "wcrtomb" "ac_cv_func_wcrtomb"
+if test "x$ac_cv_func_wcrtomb" = xyes
+then :
+ printf "%s\n" "#define HAVE_WCRTOMB 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "wcscmp" "ac_cv_func_wcscmp"
+if test "x$ac_cv_func_wcscmp" = xyes
+then :
+ printf "%s\n" "#define HAVE_WCSCMP 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "wcscpy" "ac_cv_func_wcscpy"
+if test "x$ac_cv_func_wcscpy" = xyes
+then :
+ printf "%s\n" "#define HAVE_WCSCPY 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "wcslen" "ac_cv_func_wcslen"
+if test "x$ac_cv_func_wcslen" = xyes
+then :
+ printf "%s\n" "#define HAVE_WCSLEN 1" >>confdefs.h
fi
-done
+ac_fn_c_check_func "$LINENO" "wctomb" "ac_cv_func_wctomb"
+if test "x$ac_cv_func_wctomb" = xyes
+then :
+ printf "%s\n" "#define HAVE_WCTOMB 1" >>confdefs.h
-for ac_func in nl_langinfo openat pipe poll posix_spawnp readlink readlinkat
-do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
+fi
+ac_fn_c_check_func "$LINENO" "wmemcmp" "ac_cv_func_wmemcmp"
+if test "x$ac_cv_func_wmemcmp" = xyes
+then :
+ printf "%s\n" "#define HAVE_WMEMCMP 1" >>confdefs.h
fi
-done
+ac_fn_c_check_func "$LINENO" "wmemcpy" "ac_cv_func_wmemcpy"
+if test "x$ac_cv_func_wmemcpy" = xyes
+then :
+ printf "%s\n" "#define HAVE_WMEMCPY 1" >>confdefs.h
-for ac_func in readpassphrase
-do :
- ac_fn_c_check_func "$LINENO" "readpassphrase" "ac_cv_func_readpassphrase"
-if test "x$ac_cv_func_readpassphrase" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_READPASSPHRASE 1
-_ACEOF
+fi
+ac_fn_c_check_func "$LINENO" "wmemmove" "ac_cv_func_wmemmove"
+if test "x$ac_cv_func_wmemmove" = xyes
+then :
+ printf "%s\n" "#define HAVE_WMEMMOVE 1" >>confdefs.h
fi
-done
-for ac_func in select setenv setlocale sigaction statfs statvfs
-do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
+ac_fn_c_check_func "$LINENO" "_fseeki64" "ac_cv_func__fseeki64"
+if test "x$ac_cv_func__fseeki64" = xyes
+then :
+ printf "%s\n" "#define HAVE__FSEEKI64 1" >>confdefs.h
fi
-done
-
-for ac_func in strchr strdup strerror strncpy_s strnlen strrchr symlink
-do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
+ac_fn_c_check_func "$LINENO" "_get_timezone" "ac_cv_func__get_timezone"
+if test "x$ac_cv_func__get_timezone" = xyes
+then :
+ printf "%s\n" "#define HAVE__GET_TIMEZONE 1" >>confdefs.h
fi
-done
-for ac_func in timegm tzset unlinkat unsetenv utime utimensat utimes vfork
-do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
+ac_fn_check_decl "$LINENO" "cmtime_s" "ac_cv_have_decl_cmtime_s" "#include <time.h>
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_cmtime_s" = xyes
+then :
+
+printf "%s\n" "#define HAVE_CMTIME_S 1" >>confdefs.h
fi
-done
+ac_fn_check_decl "$LINENO" "gmtime_s" "ac_cv_have_decl_gmtime_s" "#include <time.h>
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_gmtime_s" = xyes
+then :
-for ac_func in wcrtomb wcscmp wcscpy wcslen wctomb wmemcmp wmemcpy wmemmove
-do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
+printf "%s\n" "#define HAVE_GMTIME_S 1" >>confdefs.h
fi
-done
+ac_fn_c_check_type "$LINENO" "localtime_s" "ac_cv_type_localtime_s" "#include <time.h>
+"
+if test "x$ac_cv_type_localtime_s" = xyes
+then :
-for ac_func in _ctime64_s _fseeki64
-do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
+printf "%s\n" "#define HAVE_LOCALTIME_S 1" >>confdefs.h
fi
-done
-for ac_func in _get_timezone _gmtime64_s _localtime64_s _mkgmtime64
-do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
+ac_fn_check_decl "$LINENO" "_mkgmtime" "ac_cv_have_decl__mkgmtime" "#include <time.h>
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl__mkgmtime" = xyes
+then :
+
+printf "%s\n" "#define HAVE__MKGMTIME 1" >>confdefs.h
fi
-done
# detects cygwin-1.7, as opposed to older versions
-for ac_func in cygwin_conv_path
-do :
- ac_fn_c_check_func "$LINENO" "cygwin_conv_path" "ac_cv_func_cygwin_conv_path"
-if test "x$ac_cv_func_cygwin_conv_path" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_CYGWIN_CONV_PATH 1
-_ACEOF
+ac_fn_c_check_func "$LINENO" "cygwin_conv_path" "ac_cv_func_cygwin_conv_path"
+if test "x$ac_cv_func_cygwin_conv_path" = xyes
+then :
+ printf "%s\n" "#define HAVE_CYGWIN_CONV_PATH 1" >>confdefs.h
fi
-done
# DragonFly uses vfsconf, FreeBSD xvfsconf.
#include <sys/mount.h>
"
-if test "x$ac_cv_type_struct_vfsconf" = xyes; then :
+if test "x$ac_cv_type_struct_vfsconf" = xyes
+then :
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_VFSCONF 1
-_ACEOF
+printf "%s\n" "#define HAVE_STRUCT_VFSCONF 1" >>confdefs.h
fi
#include <sys/mount.h>
"
-if test "x$ac_cv_type_struct_xvfsconf" = xyes; then :
+if test "x$ac_cv_type_struct_xvfsconf" = xyes
+then :
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_XVFSCONF 1
-_ACEOF
+printf "%s\n" "#define HAVE_STRUCT_XVFSCONF 1" >>confdefs.h
fi
#include <sys/mount.h>
"
-if test "x$ac_cv_type_struct_statfs" = xyes; then :
+if test "x$ac_cv_type_struct_statfs" = xyes
+then :
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_STATFS 1
-_ACEOF
+printf "%s\n" "#define HAVE_STRUCT_STATFS 1" >>confdefs.h
fi
/* end confdefs.h. */
#include <dirent.h>
int
-main ()
+main (void)
{
DIR *dir; struct dirent e, *r;
return(readdir_r(dir, &e, &r));
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
-$as_echo "#define HAVE_READDIR_R 1" >>confdefs.h
+printf "%s\n" "#define HAVE_READDIR_R 1" >>confdefs.h
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+ conftest$ac_exeext conftest.$ac_ext
# dirfd can be either a function or a macro.
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <dirent.h>
DIR *dir;
int
-main ()
+main (void)
{
return(dirfd(dir));
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
-$as_echo "#define HAVE_DIRFD 1" >>confdefs.h
+printf "%s\n" "#define HAVE_DIRFD 1" >>confdefs.h
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+ conftest$ac_exeext conftest.$ac_ext
# FreeBSD's nl_langinfo supports an option to specify whether the
# current locale uses month/day or day/month ordering. It makes the
# output a little prettier...
-ac_fn_c_check_decl "$LINENO" "D_MD_ORDER" "ac_cv_have_decl_D_MD_ORDER" "#if HAVE_LANGINFO_H
+ac_fn_check_decl "$LINENO" "D_MD_ORDER" "ac_cv_have_decl_D_MD_ORDER" "#if HAVE_LANGINFO_H
#include <langinfo.h>
#endif
-"
-if test "x$ac_cv_have_decl_D_MD_ORDER" = xyes; then :
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_D_MD_ORDER" = xyes
+then :
-$as_echo "#define HAVE_D_MD_ORDER 1" >>confdefs.h
+printf "%s\n" "#define HAVE_D_MD_ORDER 1" >>confdefs.h
fi
-
# Check for dirent.d_namlen field explicitly
# (This is a bit more straightforward than, if not quite as portable as,
# the recipe given by the autoconf maintainers.)
#endif
"
-if test "x$ac_cv_member_struct_dirent_d_namlen" = xyes; then :
+if test "x$ac_cv_member_struct_dirent_d_namlen" = xyes
+then :
fi
# Check for Extended Attributes support
# Check whether --enable-xattr was given.
-if test "${enable_xattr+set}" = set; then :
+if test ${enable_xattr+y}
+then :
enableval=$enable_xattr;
fi
if test "x$enable_xattr" != "xno"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing setxattr" >&5
-$as_echo_n "checking for library containing setxattr... " >&6; }
-if ${ac_cv_search_setxattr+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing setxattr" >&5
+printf %s "checking for library containing setxattr... " >&6; }
+if test ${ac_cv_search_setxattr+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_func_search_save_LIBS=$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 setxattr ();
int
-main ()
+main (void)
{
return setxattr ();
;
return 0;
}
_ACEOF
-for ac_lib in '' attr gnu; do
+for ac_lib in '' attr gnu
+do
if test -z "$ac_lib"; then
ac_res="none required"
else
ac_res=-l$ac_lib
LIBS="-l$ac_lib $ac_func_search_save_LIBS"
fi
- if ac_fn_c_try_link "$LINENO"; then :
+ if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_search_setxattr=$ac_res
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext
- if ${ac_cv_search_setxattr+:} false; then :
+ if test ${ac_cv_search_setxattr+y}
+then :
break
fi
done
-if ${ac_cv_search_setxattr+:} false; then :
+if test ${ac_cv_search_setxattr+y}
+then :
-else
+else $as_nop
ac_cv_search_setxattr=no
fi
rm conftest.$ac_ext
LIBS=$ac_func_search_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_setxattr" >&5
-$as_echo "$ac_cv_search_setxattr" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_setxattr" >&5
+printf "%s\n" "$ac_cv_search_setxattr" >&6; }
ac_res=$ac_cv_search_setxattr
-if test "$ac_res" != no; then :
+if test "$ac_res" != no
+then :
test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
fi
- ac_fn_c_check_decl "$LINENO" "EXTATTR_NAMESPACE_USER" "ac_cv_have_decl_EXTATTR_NAMESPACE_USER" "#include <sys/types.h>
+ ac_fn_check_decl "$LINENO" "EXTATTR_NAMESPACE_USER" "ac_cv_have_decl_EXTATTR_NAMESPACE_USER" "#include <sys/types.h>
#include <sys/extattr.h>
-"
-if test "x$ac_cv_have_decl_EXTATTR_NAMESPACE_USER" = xyes; then :
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_EXTATTR_NAMESPACE_USER" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
+printf "%s\n" "#define HAVE_DECL_EXTATTR_NAMESPACE_USER $ac_have_decl" >>confdefs.h
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_EXTATTR_NAMESPACE_USER $ac_have_decl
-_ACEOF
-
- ac_fn_c_check_decl "$LINENO" "XATTR_NOFOLLOW" "ac_cv_have_decl_XATTR_NOFOLLOW" "#include <sys/xattr.h>
+ ac_fn_check_decl "$LINENO" "XATTR_NOFOLLOW" "ac_cv_have_decl_XATTR_NOFOLLOW" "#include <sys/xattr.h>
-"
-if test "x$ac_cv_have_decl_XATTR_NOFOLLOW" = xyes; then :
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_XATTR_NOFOLLOW" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_XATTR_NOFOLLOW $ac_have_decl
-_ACEOF
+printf "%s\n" "#define HAVE_DECL_XATTR_NOFOLLOW $ac_have_decl" >>confdefs.h
if test "x$ac_cv_header_sys_xattr_h" = "xyes" \
-a "x$ac_cv_have_decl_XATTR_NOFOLLOW" = "xyes"; then
# Darwin extended attributes support
- if ${ac_cv_archive_xattr_darwin+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- for ac_func in fgetxattr \
- flistxattr \
- fsetxattr \
- getxattr \
- listxattr \
- setxattr
+ if test ${ac_cv_archive_xattr_darwin+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+
+ for ac_func in fgetxattr flistxattr fsetxattr getxattr listxattr setxattr
do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ as_ac_var=`printf "%s\n" "ac_cv_func_$ac_func" | $as_tr_sh`
ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
+if eval test \"x\$"$as_ac_var"\" = x"yes"
+then :
cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+#define `printf "%s\n" "HAVE_$ac_func" | $as_tr_cpp` 1
_ACEOF
ac_cv_archive_xattr_darwin=yes
-else
+else $as_nop
ac_cv_archive_xattr_darwin=no
fi
-done
+done
fi
elif test "x$ac_cv_header_sys_extattr_h" = "xyes" \
-a "x$ac_cv_have_decl_EXTATTR_NAMESPACE_USER" = "xyes"; then
# FreeBSD extended attributes support
- if ${ac_cv_archive_xattr_freebsd+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- for ac_func in extattr_get_fd \
- extattr_get_file \
- extattr_get_link \
- extattr_list_fd \
- extattr_list_file \
- extattr_list_link \
- extattr_set_fd \
- extattr_set_link
+ if test ${ac_cv_archive_xattr_freebsd+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+
+ for ac_func in extattr_get_fd extattr_get_file extattr_get_link extattr_list_fd extattr_list_file extattr_list_link extattr_set_fd extattr_set_link
do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ as_ac_var=`printf "%s\n" "ac_cv_func_$ac_func" | $as_tr_sh`
ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
+if eval test \"x\$"$as_ac_var"\" = x"yes"
+then :
cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+#define `printf "%s\n" "HAVE_$ac_func" | $as_tr_cpp` 1
_ACEOF
ac_cv_archive_xattr_freebsd=yes
-else
+else $as_nop
ac_cv_archive_xattr_freebsd=no
fi
-done
+done
fi
elif test "x$ac_cv_header_sys_xattr_h" = "xyes" \
-o "x$ac_cv_header_attr_xattr_h" = "xyes"; then
# Linux extended attributes support
- if ${ac_cv_archive_xattr_linux+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- for ac_func in fgetxattr \
- flistxattr \
- fsetxattr \
- getxattr \
- lgetxattr \
- listxattr \
- llistxattr \
- lsetxattr
+ if test ${ac_cv_archive_xattr_linux+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+
+ for ac_func in fgetxattr flistxattr fsetxattr getxattr lgetxattr listxattr llistxattr lsetxattr
do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ as_ac_var=`printf "%s\n" "ac_cv_func_$ac_func" | $as_tr_sh`
ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
+if eval test \"x\$"$as_ac_var"\" = x"yes"
+then :
cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+#define `printf "%s\n" "HAVE_$ac_func" | $as_tr_cpp` 1
_ACEOF
ac_cv_archive_xattr_linux=yes
-else
+else $as_nop
ac_cv_archive_xattr_linux=no
fi
-done
+done
fi
elif test "x$ac_cv_header_sys_ea_h" = "xyes"; then
# AIX extended attributes support
- if ${ac_cv_archive_xattr_aix+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- for ac_func in fgetea \
- flistea \
- fsetea \
- getea \
- lgetea \
- listea \
- llistea \
- lsetea
+ if test ${ac_cv_archive_xattr_aix+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+
+ for ac_func in fgetea flistea fsetea getea lgetea listea llistea lsetea
do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ as_ac_var=`printf "%s\n" "ac_cv_func_$ac_func" | $as_tr_sh`
ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
+if eval test \"x\$"$as_ac_var"\" = x"yes"
+then :
cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+#define `printf "%s\n" "HAVE_$ac_func" | $as_tr_cpp` 1
_ACEOF
ac_cv_archive_xattr_aix=yes
-else
+else $as_nop
ac_cv_archive_xattr_aix=no
fi
-done
+done
fi
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for extended attributes support" >&5
-$as_echo_n "checking for extended attributes support... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for extended attributes support" >&5
+printf %s "checking for extended attributes support... " >&6; }
if test "x$ac_cv_archive_xattr_linux" = "xyes"; then
-$as_echo "#define ARCHIVE_XATTR_LINUX 1" >>confdefs.h
+printf "%s\n" "#define ARCHIVE_XATTR_LINUX 1" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: Linux" >&5
-$as_echo "Linux" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Linux" >&5
+printf "%s\n" "Linux" >&6; }
elif test "x$ac_cv_archive_xattr_darwin" = "xyes"; then
-$as_echo "#define ARCHIVE_XATTR_DARWIN 1" >>confdefs.h
+printf "%s\n" "#define ARCHIVE_XATTR_DARWIN 1" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: Darwin" >&5
-$as_echo "Darwin" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Darwin" >&5
+printf "%s\n" "Darwin" >&6; }
elif test "x$ac_cv_archive_xattr_freebsd" = "xyes"; then
-$as_echo "#define ARCHIVE_XATTR_FREEBSD 1" >>confdefs.h
+printf "%s\n" "#define ARCHIVE_XATTR_FREEBSD 1" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: FreeBSD" >&5
-$as_echo "FreeBSD" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: FreeBSD" >&5
+printf "%s\n" "FreeBSD" >&6; }
elif test "x$ac_cv_archive_xattr_aix" = "xyes"; then
-$as_echo "#define ARCHIVE_XATTR_AIX 1" >>confdefs.h
+printf "%s\n" "#define ARCHIVE_XATTR_AIX 1" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: AIX" >&5
-$as_echo "AIX" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: AIX" >&5
+printf "%s\n" "AIX" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5
-$as_echo "none" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none" >&5
+printf "%s\n" "none" >&6; }
fi
fi
# which makes the following checks rather more complex than I would like.
#
# Check whether --enable-acl was given.
-if test "${enable_acl+set}" = set; then :
+if test ${enable_acl+y}
+then :
enableval=$enable_acl;
fi
if test "x$enable_acl" != "xno"; then
# Libacl
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for acl_get_file in -lacl" >&5
-$as_echo_n "checking for acl_get_file in -lacl... " >&6; }
-if ${ac_cv_lib_acl_acl_get_file+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for acl_get_file in -lacl" >&5
+printf %s "checking for acl_get_file in -lacl... " >&6; }
+if test ${ac_cv_lib_acl_acl_get_file+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lacl $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* 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 acl_get_file ();
int
-main ()
+main (void)
{
return acl_get_file ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_acl_acl_get_file=yes
-else
+else $as_nop
ac_cv_lib_acl_acl_get_file=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_acl_acl_get_file" >&5
-$as_echo "$ac_cv_lib_acl_acl_get_file" >&6; }
-if test "x$ac_cv_lib_acl_acl_get_file" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBACL 1
-_ACEOF
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_acl_acl_get_file" >&5
+printf "%s\n" "$ac_cv_lib_acl_acl_get_file" >&6; }
+if test "x$ac_cv_lib_acl_acl_get_file" = xyes
+then :
+ printf "%s\n" "#define HAVE_LIBACL 1" >>confdefs.h
LIBS="-lacl $LIBS"
#endif
"
-if test "x$ac_cv_type_acl_t" = xyes; then :
+if test "x$ac_cv_type_acl_t" = xyes
+then :
-cat >>confdefs.h <<_ACEOF
-#define HAVE_ACL_T 1
-_ACEOF
+printf "%s\n" "#define HAVE_ACL_T 1" >>confdefs.h
fi
#endif
"
-if test "x$ac_cv_type_acl_entry_t" = xyes; then :
+if test "x$ac_cv_type_acl_entry_t" = xyes
+then :
-cat >>confdefs.h <<_ACEOF
-#define HAVE_ACL_ENTRY_T 1
-_ACEOF
+printf "%s\n" "#define HAVE_ACL_ENTRY_T 1" >>confdefs.h
fi
#endif
"
-if test "x$ac_cv_type_acl_permset_t" = xyes; then :
+if test "x$ac_cv_type_acl_permset_t" = xyes
+then :
-cat >>confdefs.h <<_ACEOF
-#define HAVE_ACL_PERMSET_T 1
-_ACEOF
+printf "%s\n" "#define HAVE_ACL_PERMSET_T 1" >>confdefs.h
fi
#endif
"
-if test "x$ac_cv_type_acl_tag_t" = xyes; then :
+if test "x$ac_cv_type_acl_tag_t" = xyes
+then :
-cat >>confdefs.h <<_ACEOF
-#define HAVE_ACL_TAG_T 1
-_ACEOF
+printf "%s\n" "#define HAVE_ACL_TAG_T 1" >>confdefs.h
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for richacl_get_file in -lrichacl" >&5
-$as_echo_n "checking for richacl_get_file in -lrichacl... " >&6; }
-if ${ac_cv_lib_richacl_richacl_get_file+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for richacl_get_file in -lrichacl" >&5
+printf %s "checking for richacl_get_file in -lrichacl... " >&6; }
+if test ${ac_cv_lib_richacl_richacl_get_file+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lrichacl $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* 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 richacl_get_file ();
int
-main ()
+main (void)
{
return richacl_get_file ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_richacl_richacl_get_file=yes
-else
+else $as_nop
ac_cv_lib_richacl_richacl_get_file=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_richacl_richacl_get_file" >&5
-$as_echo "$ac_cv_lib_richacl_richacl_get_file" >&6; }
-if test "x$ac_cv_lib_richacl_richacl_get_file" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBRICHACL 1
-_ACEOF
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_richacl_richacl_get_file" >&5
+printf "%s\n" "$ac_cv_lib_richacl_richacl_get_file" >&6; }
+if test "x$ac_cv_lib_richacl_richacl_get_file" = xyes
+then :
+ printf "%s\n" "#define HAVE_LIBRICHACL 1" >>confdefs.h
LIBS="-lrichacl $LIBS"
#endif
"
-if test "x$ac_cv_type_struct_richace" = xyes; then :
+if test "x$ac_cv_type_struct_richace" = xyes
+then :
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_RICHACE 1
-_ACEOF
+printf "%s\n" "#define HAVE_STRUCT_RICHACE 1" >>confdefs.h
fi
#endif
"
-if test "x$ac_cv_type_struct_richacl" = xyes; then :
+if test "x$ac_cv_type_struct_richacl" = xyes
+then :
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_RICHACL 1
-_ACEOF
+printf "%s\n" "#define HAVE_STRUCT_RICHACL 1" >>confdefs.h
fi
# Solaris and derivates ACLs
- for ac_func in acl facl
-do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
+ ac_fn_c_check_func "$LINENO" "acl" "ac_cv_func_acl"
+if test "x$ac_cv_func_acl" = xyes
+then :
+ printf "%s\n" "#define HAVE_ACL 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "facl" "ac_cv_func_facl"
+if test "x$ac_cv_func_facl" = xyes
+then :
+ printf "%s\n" "#define HAVE_FACL 1" >>confdefs.h
fi
-done
if test "x$ac_cv_lib_richacl_richacl_get_file" = "xyes" \
-a "x$ac_cv_type_struct_richace" = "xyes" \
-a "x$ac_cv_type_struct_richacl" = "xyes"; then
- if ${ac_cv_archive_acl_librichacl+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- for ac_func in richacl_alloc \
- richacl_equiv_mode \
- richacl_free \
- richacl_get_fd \
- richacl_get_file \
- richacl_set_fd \
- richacl_set_file
+ if test ${ac_cv_archive_acl_librichacl+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+
+ for ac_func in richacl_alloc richacl_equiv_mode richacl_free richacl_get_fd richacl_get_file richacl_set_fd richacl_set_file
do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ as_ac_var=`printf "%s\n" "ac_cv_func_$ac_func" | $as_tr_sh`
ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
+if eval test \"x\$"$as_ac_var"\" = x"yes"
+then :
cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+#define `printf "%s\n" "HAVE_$ac_func" | $as_tr_cpp` 1
_ACEOF
ac_cv_archive_acl_librichacl=yes
-else
+else $as_nop
ac_cv_archive_acl_librichacl=no
fi
-done
+done
fi
fi
-a "x$ac_cv_func_facl" = "xyes"; then
ac_fn_c_check_type "$LINENO" "aclent_t" "ac_cv_type_aclent_t" "#include <sys/acl.h>
"
-if test "x$ac_cv_type_aclent_t" = xyes; then :
+if test "x$ac_cv_type_aclent_t" = xyes
+then :
-cat >>confdefs.h <<_ACEOF
-#define HAVE_ACLENT_T 1
-_ACEOF
+printf "%s\n" "#define HAVE_ACLENT_T 1" >>confdefs.h
fi
if test "x$ac_cv_type_aclent_t" = "xyes"; then
- if ${ac_cv_archive_acl_sunos+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_fn_c_check_decl "$LINENO" "GETACL" "ac_cv_have_decl_GETACL" "#include <sys/acl.h>
-"
-if test "x$ac_cv_have_decl_GETACL" = xyes; then :
+ if test ${ac_cv_archive_acl_sunos+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ ac_fn_check_decl "$LINENO" "GETACL" "ac_cv_have_decl_GETACL" "#include <sys/acl.h>
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_GETACL" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_GETACL $ac_have_decl
-_ACEOF
-if test $ac_have_decl = 1; then :
+printf "%s\n" "#define HAVE_DECL_GETACL $ac_have_decl" >>confdefs.h
+if test $ac_have_decl = 1
+then :
ac_cv_archive_acl_sunos=yes
-else
+else $as_nop
ac_cv_archive_acl_sunos=no
fi
-ac_fn_c_check_decl "$LINENO" "SETACL" "ac_cv_have_decl_SETACL" "#include <sys/acl.h>
-"
-if test "x$ac_cv_have_decl_SETACL" = xyes; then :
+ac_fn_check_decl "$LINENO" "SETACL" "ac_cv_have_decl_SETACL" "#include <sys/acl.h>
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_SETACL" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_SETACL $ac_have_decl
-_ACEOF
-if test $ac_have_decl = 1; then :
+printf "%s\n" "#define HAVE_DECL_SETACL $ac_have_decl" >>confdefs.h
+if test $ac_have_decl = 1
+then :
ac_cv_archive_acl_sunos=yes
-else
+else $as_nop
ac_cv_archive_acl_sunos=no
fi
-ac_fn_c_check_decl "$LINENO" "GETACLCNT" "ac_cv_have_decl_GETACLCNT" "#include <sys/acl.h>
-"
-if test "x$ac_cv_have_decl_GETACLCNT" = xyes; then :
+ac_fn_check_decl "$LINENO" "GETACLCNT" "ac_cv_have_decl_GETACLCNT" "#include <sys/acl.h>
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_GETACLCNT" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_GETACLCNT $ac_have_decl
-_ACEOF
-if test $ac_have_decl = 1; then :
+printf "%s\n" "#define HAVE_DECL_GETACLCNT $ac_have_decl" >>confdefs.h
+if test $ac_have_decl = 1
+then :
ac_cv_archive_acl_sunos=yes
-else
+else $as_nop
ac_cv_archive_acl_sunos=no
fi
ac_fn_c_check_type "$LINENO" "ace_t" "ac_cv_type_ace_t" "#include <sys/acl.h>
"
-if test "x$ac_cv_type_ace_t" = xyes; then :
+if test "x$ac_cv_type_ace_t" = xyes
+then :
-cat >>confdefs.h <<_ACEOF
-#define HAVE_ACE_T 1
-_ACEOF
+printf "%s\n" "#define HAVE_ACE_T 1" >>confdefs.h
fi
if test "x$ac_cv_type_ace_t" = "xyes"; then
- if ${ac_cv_archive_acl_sunos_nfs4+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_fn_c_check_decl "$LINENO" "ACE_GETACL" "ac_cv_have_decl_ACE_GETACL" "#include <sys/acl.h>
-"
-if test "x$ac_cv_have_decl_ACE_GETACL" = xyes; then :
+ if test ${ac_cv_archive_acl_sunos_nfs4+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ ac_fn_check_decl "$LINENO" "ACE_GETACL" "ac_cv_have_decl_ACE_GETACL" "#include <sys/acl.h>
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_ACE_GETACL" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_ACE_GETACL $ac_have_decl
-_ACEOF
-if test $ac_have_decl = 1; then :
+printf "%s\n" "#define HAVE_DECL_ACE_GETACL $ac_have_decl" >>confdefs.h
+if test $ac_have_decl = 1
+then :
ac_cv_archive_acl_sunos_nfs4=yes
-else
+else $as_nop
ac_cv_archive_acl_sonos_nfs4=no
fi
-ac_fn_c_check_decl "$LINENO" "ACE_SETACL" "ac_cv_have_decl_ACE_SETACL" "#include <sys/acl.h>
-"
-if test "x$ac_cv_have_decl_ACE_SETACL" = xyes; then :
+ac_fn_check_decl "$LINENO" "ACE_SETACL" "ac_cv_have_decl_ACE_SETACL" "#include <sys/acl.h>
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_ACE_SETACL" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_ACE_SETACL $ac_have_decl
-_ACEOF
-if test $ac_have_decl = 1; then :
+printf "%s\n" "#define HAVE_DECL_ACE_SETACL $ac_have_decl" >>confdefs.h
+if test $ac_have_decl = 1
+then :
ac_cv_archive_acl_sunos_nfs4=yes
-else
+else $as_nop
ac_cv_archive_acl_sonos_nfs4=no
fi
-ac_fn_c_check_decl "$LINENO" "ACE_GETACLCNT" "ac_cv_have_decl_ACE_GETACLCNT" "#include <sys/acl.h>
-"
-if test "x$ac_cv_have_decl_ACE_GETACLCNT" = xyes; then :
+ac_fn_check_decl "$LINENO" "ACE_GETACLCNT" "ac_cv_have_decl_ACE_GETACLCNT" "#include <sys/acl.h>
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_ACE_GETACLCNT" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_ACE_GETACLCNT $ac_have_decl
-_ACEOF
-if test $ac_have_decl = 1; then :
+printf "%s\n" "#define HAVE_DECL_ACE_GETACLCNT $ac_have_decl" >>confdefs.h
+if test $ac_have_decl = 1
+then :
ac_cv_archive_acl_sunos_nfs4=yes
-else
+else $as_nop
ac_cv_archive_acl_sonos_nfs4=no
fi
-a "x$ac_cv_type_acl_permset_t" = "xyes" \
-a "x$ac_cv_type_acl_tag_t" = "xyes"; then
# POSIX.1e ACL functions
- if ${ac_cv_posix_acl_funcs+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- for ac_func in acl_add_perm \
- acl_clear_perms \
- acl_create_entry \
- acl_delete_def_file \
- acl_free \
- acl_get_entry \
- acl_get_fd \
- acl_get_file \
- acl_get_permset \
- acl_get_qualifier \
- acl_get_tag_type \
- acl_init \
- acl_set_fd \
- acl_set_file \
- acl_set_qualifier \
- acl_set_tag_type
+ if test ${ac_cv_posix_acl_funcs+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+
+ for ac_func in acl_add_perm acl_clear_perms acl_create_entry acl_delete_def_file acl_free acl_get_entry acl_get_fd acl_get_file acl_get_permset acl_get_qualifier acl_get_tag_type acl_init acl_set_fd acl_set_file acl_set_qualifier acl_set_tag_type
do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ as_ac_var=`printf "%s\n" "ac_cv_func_$ac_func" | $as_tr_sh`
ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
+if eval test \"x\$"$as_ac_var"\" = x"yes"
+then :
cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+#define `printf "%s\n" "HAVE_$ac_func" | $as_tr_cpp` 1
_ACEOF
ac_cv_posix_acl_funcs=yes
-else
+else $as_nop
ac_cv_posix_acl_funcs=no
fi
-done
+done
fi
- for ac_func in acl_get_perm
-do :
- ac_fn_c_check_func "$LINENO" "acl_get_perm" "ac_cv_func_acl_get_perm"
-if test "x$ac_cv_func_acl_get_perm" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_ACL_GET_PERM 1
-_ACEOF
+ ac_fn_c_check_func "$LINENO" "acl_get_perm" "ac_cv_func_acl_get_perm"
+if test "x$ac_cv_func_acl_get_perm" = xyes
+then :
+ printf "%s\n" "#define HAVE_ACL_GET_PERM 1" >>confdefs.h
fi
-done
if test "x$ac_cv_posix_acl_funcs" = "xyes" \
-a "x$ac_cv_header_acl_libacl_h" = "xyes" \
-a "x$ac_cv_lib_acl_acl_get_file" = "xyes" \
-a "x$ac_cv_func_acl_get_perm"; then
- if ${ac_cv_archive_acl_libacl+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ if test ${ac_cv_archive_acl_libacl+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_cv_archive_acl_libacl=yes
fi
-$as_echo "#define ARCHIVE_ACL_LIBACL 1" >>confdefs.h
+printf "%s\n" "#define ARCHIVE_ACL_LIBACL 1" >>confdefs.h
else
# FreeBSD/Darwin
- for ac_func in acl_add_flag_np \
- acl_clear_flags_np \
- acl_get_brand_np \
- acl_get_entry_type_np \
- acl_get_flag_np \
- acl_get_flagset_np \
- acl_get_fd_np \
- acl_get_link_np \
- acl_get_perm_np \
- acl_is_trivial_np \
- acl_set_entry_type_np \
- acl_set_fd_np \
- acl_set_link_np
-do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
+ ac_fn_c_check_func "$LINENO" "acl_add_flag_np" "ac_cv_func_acl_add_flag_np"
+if test "x$ac_cv_func_acl_add_flag_np" = xyes
+then :
+ printf "%s\n" "#define HAVE_ACL_ADD_FLAG_NP 1" >>confdefs.h
fi
-done
+ac_fn_c_check_func "$LINENO" "acl_clear_flags_np" "ac_cv_func_acl_clear_flags_np"
+if test "x$ac_cv_func_acl_clear_flags_np" = xyes
+then :
+ printf "%s\n" "#define HAVE_ACL_CLEAR_FLAGS_NP 1" >>confdefs.h
+fi
+ac_fn_c_check_func "$LINENO" "acl_get_brand_np" "ac_cv_func_acl_get_brand_np"
+if test "x$ac_cv_func_acl_get_brand_np" = xyes
+then :
+ printf "%s\n" "#define HAVE_ACL_GET_BRAND_NP 1" >>confdefs.h
- for ac_func in mbr_uid_to_uuid \
- mbr_uuid_to_id \
- mbr_gid_to_uuid
-do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
+fi
+ac_fn_c_check_func "$LINENO" "acl_get_entry_type_np" "ac_cv_func_acl_get_entry_type_np"
+if test "x$ac_cv_func_acl_get_entry_type_np" = xyes
+then :
+ printf "%s\n" "#define HAVE_ACL_GET_ENTRY_TYPE_NP 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "acl_get_flag_np" "ac_cv_func_acl_get_flag_np"
+if test "x$ac_cv_func_acl_get_flag_np" = xyes
+then :
+ printf "%s\n" "#define HAVE_ACL_GET_FLAG_NP 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "acl_get_flagset_np" "ac_cv_func_acl_get_flagset_np"
+if test "x$ac_cv_func_acl_get_flagset_np" = xyes
+then :
+ printf "%s\n" "#define HAVE_ACL_GET_FLAGSET_NP 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "acl_get_fd_np" "ac_cv_func_acl_get_fd_np"
+if test "x$ac_cv_func_acl_get_fd_np" = xyes
+then :
+ printf "%s\n" "#define HAVE_ACL_GET_FD_NP 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "acl_get_link_np" "ac_cv_func_acl_get_link_np"
+if test "x$ac_cv_func_acl_get_link_np" = xyes
+then :
+ printf "%s\n" "#define HAVE_ACL_GET_LINK_NP 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "acl_get_perm_np" "ac_cv_func_acl_get_perm_np"
+if test "x$ac_cv_func_acl_get_perm_np" = xyes
+then :
+ printf "%s\n" "#define HAVE_ACL_GET_PERM_NP 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "acl_is_trivial_np" "ac_cv_func_acl_is_trivial_np"
+if test "x$ac_cv_func_acl_is_trivial_np" = xyes
+then :
+ printf "%s\n" "#define HAVE_ACL_IS_TRIVIAL_NP 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "acl_set_entry_type_np" "ac_cv_func_acl_set_entry_type_np"
+if test "x$ac_cv_func_acl_set_entry_type_np" = xyes
+then :
+ printf "%s\n" "#define HAVE_ACL_SET_ENTRY_TYPE_NP 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "acl_set_fd_np" "ac_cv_func_acl_set_fd_np"
+if test "x$ac_cv_func_acl_set_fd_np" = xyes
+then :
+ printf "%s\n" "#define HAVE_ACL_SET_FD_NP 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "acl_set_link_np" "ac_cv_func_acl_set_link_np"
+if test "x$ac_cv_func_acl_set_link_np" = xyes
+then :
+ printf "%s\n" "#define HAVE_ACL_SET_LINK_NP 1" >>confdefs.h
+
+fi
+
+
+ ac_fn_c_check_func "$LINENO" "mbr_uid_to_uuid" "ac_cv_func_mbr_uid_to_uuid"
+if test "x$ac_cv_func_mbr_uid_to_uuid" = xyes
+then :
+ printf "%s\n" "#define HAVE_MBR_UID_TO_UUID 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "mbr_uuid_to_id" "ac_cv_func_mbr_uuid_to_id"
+if test "x$ac_cv_func_mbr_uuid_to_id" = xyes
+then :
+ printf "%s\n" "#define HAVE_MBR_UUID_TO_ID 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "mbr_gid_to_uuid" "ac_cv_func_mbr_gid_to_uuid"
+if test "x$ac_cv_func_mbr_gid_to_uuid" = xyes
+then :
+ printf "%s\n" "#define HAVE_MBR_GID_TO_UUID 1" >>confdefs.h
fi
-done
- ac_fn_c_check_decl "$LINENO" "ACL_TYPE_EXTENDED" "ac_cv_have_decl_ACL_TYPE_EXTENDED" "#include <sys/types.h>
+ ac_fn_check_decl "$LINENO" "ACL_TYPE_EXTENDED" "ac_cv_have_decl_ACL_TYPE_EXTENDED" "#include <sys/types.h>
#include <sys/acl.h>
-"
-if test "x$ac_cv_have_decl_ACL_TYPE_EXTENDED" = xyes; then :
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_ACL_TYPE_EXTENDED" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_ACL_TYPE_EXTENDED $ac_have_decl
-_ACEOF
-ac_fn_c_check_decl "$LINENO" "ACL_TYPE_NFS4" "ac_cv_have_decl_ACL_TYPE_NFS4" "#include <sys/types.h>
+printf "%s\n" "#define HAVE_DECL_ACL_TYPE_EXTENDED $ac_have_decl" >>confdefs.h
+ac_fn_check_decl "$LINENO" "ACL_TYPE_NFS4" "ac_cv_have_decl_ACL_TYPE_NFS4" "#include <sys/types.h>
#include <sys/acl.h>
-"
-if test "x$ac_cv_have_decl_ACL_TYPE_NFS4" = xyes; then :
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_ACL_TYPE_NFS4" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_ACL_TYPE_NFS4 $ac_have_decl
-_ACEOF
-ac_fn_c_check_decl "$LINENO" "ACL_USER" "ac_cv_have_decl_ACL_USER" "#include <sys/types.h>
+printf "%s\n" "#define HAVE_DECL_ACL_TYPE_NFS4 $ac_have_decl" >>confdefs.h
+ac_fn_check_decl "$LINENO" "ACL_USER" "ac_cv_have_decl_ACL_USER" "#include <sys/types.h>
#include <sys/acl.h>
-"
-if test "x$ac_cv_have_decl_ACL_USER" = xyes; then :
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_ACL_USER" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_ACL_USER $ac_have_decl
-_ACEOF
-ac_fn_c_check_decl "$LINENO" "ACL_SYNCHRONIZE" "ac_cv_have_decl_ACL_SYNCHRONIZE" "#include <sys/types.h>
+printf "%s\n" "#define HAVE_DECL_ACL_USER $ac_have_decl" >>confdefs.h
+ac_fn_check_decl "$LINENO" "ACL_SYNCHRONIZE" "ac_cv_have_decl_ACL_SYNCHRONIZE" "#include <sys/types.h>
#include <sys/acl.h>
-"
-if test "x$ac_cv_have_decl_ACL_SYNCHRONIZE" = xyes; then :
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_ACL_SYNCHRONIZE" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_ACL_SYNCHRONIZE $ac_have_decl
-_ACEOF
+printf "%s\n" "#define HAVE_DECL_ACL_SYNCHRONIZE $ac_have_decl" >>confdefs.h
if test "x$ac_cv_posix_acl_funcs" = "xyes" \
-a "x$ac_cv_func_acl_get_fd_np" = "xyes" \
-a "x$ac_cv_func_acl_get_perm_np" = "xyes" \
-a "x$ac_cv_func_acl_set_fd_np" = "xyes"; then
if test "x$ac_cv_have_decl_ACL_USER" = "xyes"; then
- if ${ac_cv_archive_acl_freebsd+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ if test ${ac_cv_archive_acl_freebsd+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_cv_archive_acl_freebsd=yes
fi
-a "x$ac_cv_func_acl_get_entry_type_np" = "xyes" \
-a "x$ac_cv_func_acl_get_flagset_np" = "xyes" \
-a "x$ac_cv_func_acl_set_entry_type_np" = "xyes"; then
- if ${ac_cv_archive_acl_freebsd_nfs4+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ if test ${ac_cv_archive_acl_freebsd_nfs4+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_cv_archive_acl_freebsd_nfs4=yes
fi
-a "x$ac_cv_func_mbr_uid_to_uuid" = "xyes" \
-a "x$ac_cv_func_mbr_uuid_to_id" = "xyes" \
-a "x$ac_cv_func_mbr_gid_to_uuid" = "xyes"; then
- if ${ac_cv_archive_acl_darwin+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ if test ${ac_cv_archive_acl_darwin+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_cv_archive_acl_darwin=yes
fi
fi
fi
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ACL support" >&5
-$as_echo_n "checking for ACL support... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ACL support" >&5
+printf %s "checking for ACL support... " >&6; }
if test "x$ac_cv_archive_acl_libacl" = "xyes" \
-a "x$ac_cv_archive_acl_librichacl" = "xyes"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: libacl (POSIX.1e) + librichacl (NFSv4)" >&5
-$as_echo "libacl (POSIX.1e) + librichacl (NFSv4)" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: libacl (POSIX.1e) + librichacl (NFSv4)" >&5
+printf "%s\n" "libacl (POSIX.1e) + librichacl (NFSv4)" >&6; }
-$as_echo "#define ARCHIVE_ACL_LIBACL 1" >>confdefs.h
+printf "%s\n" "#define ARCHIVE_ACL_LIBACL 1" >>confdefs.h
-$as_echo "#define ARCHIVE_ACL_LIBRICHACL 1" >>confdefs.h
+printf "%s\n" "#define ARCHIVE_ACL_LIBRICHACL 1" >>confdefs.h
elif test "x$ac_cv_archive_acl_libacl" = "xyes"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: libacl (POSIX.1e)" >&5
-$as_echo "libacl (POSIX.1e)" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: libacl (POSIX.1e)" >&5
+printf "%s\n" "libacl (POSIX.1e)" >&6; }
-$as_echo "#define ARCHIVE_ACL_LIBACL 1" >>confdefs.h
+printf "%s\n" "#define ARCHIVE_ACL_LIBACL 1" >>confdefs.h
elif test "x$ac_cv_archive_acl_librichacl" = "xyes"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: librichacl (NFSv4)" >&5
-$as_echo "librichacl (NFSv4)" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: librichacl (NFSv4)" >&5
+printf "%s\n" "librichacl (NFSv4)" >&6; }
-$as_echo "#define ARCHIVE_ACL_LIBRICHACL 1" >>confdefs.h
+printf "%s\n" "#define ARCHIVE_ACL_LIBRICHACL 1" >>confdefs.h
elif test "x$ac_cv_archive_acl_darwin" = "xyes"; then
-$as_echo "#define ARCHIVE_ACL_DARWIN 1" >>confdefs.h
+printf "%s\n" "#define ARCHIVE_ACL_DARWIN 1" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: Darwin (limited NFSv4)" >&5
-$as_echo "Darwin (limited NFSv4)" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Darwin (limited NFSv4)" >&5
+printf "%s\n" "Darwin (limited NFSv4)" >&6; }
elif test "x$ac_cv_archive_acl_sunos" = "xyes"; then
-$as_echo "#define ARCHIVE_ACL_SUNOS 1" >>confdefs.h
+printf "%s\n" "#define ARCHIVE_ACL_SUNOS 1" >>confdefs.h
if test "x$ac_cv_archive_acl_sunos_nfs4" = "xyes"; then
-$as_echo "#define ARCHIVE_ACL_SUNOS_NFS4 1" >>confdefs.h
+printf "%s\n" "#define ARCHIVE_ACL_SUNOS_NFS4 1" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: Solaris (POSIX.1e and NFSv4)" >&5
-$as_echo "Solaris (POSIX.1e and NFSv4)" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Solaris (POSIX.1e and NFSv4)" >&5
+printf "%s\n" "Solaris (POSIX.1e and NFSv4)" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: Solaris (POSIX.1e)" >&5
-$as_echo "Solaris (POSIX.1e)" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Solaris (POSIX.1e)" >&5
+printf "%s\n" "Solaris (POSIX.1e)" >&6; }
fi
elif test "x$ac_cv_archive_acl_freebsd" = "xyes"; then
-$as_echo "#define ARCHIVE_ACL_FREEBSD 1" >>confdefs.h
+printf "%s\n" "#define ARCHIVE_ACL_FREEBSD 1" >>confdefs.h
if test "x$ac_cv_archive_acl_freebsd_nfs4" = "xyes"; then
-$as_echo "#define ARCHIVE_ACL_FREEBSD_NFS4 1" >>confdefs.h
+printf "%s\n" "#define ARCHIVE_ACL_FREEBSD_NFS4 1" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: FreeBSD (POSIX.1e and NFSv4)" >&5
-$as_echo "FreeBSD (POSIX.1e and NFSv4)" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: FreeBSD (POSIX.1e and NFSv4)" >&5
+printf "%s\n" "FreeBSD (POSIX.1e and NFSv4)" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: FreeBSD (POSIX.1e)" >&5
-$as_echo "FreeBSD (POSIX.1e)" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: FreeBSD (POSIX.1e)" >&5
+printf "%s\n" "FreeBSD (POSIX.1e)" >&6; }
fi
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5
-$as_echo "none" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none" >&5
+printf "%s\n" "none" >&6; }
fi
fi
# Additional requirements
# Check whether --enable-largefile was given.
-if test "${enable_largefile+set}" = set; then :
+if test ${enable_largefile+y}
+then :
enableval=$enable_largefile;
fi
if test "$enable_largefile" != no; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5
-$as_echo_n "checking for special C compiler options needed for large files... " >&6; }
-if ${ac_cv_sys_largefile_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5
+printf %s "checking for special C compiler options needed for large files... " >&6; }
+if test ${ac_cv_sys_largefile_CC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_cv_sys_largefile_CC=no
if test "$GCC" != yes; then
ac_save_CC=$CC
We can't simply define LARGE_OFF_T to be 9223372036854775807,
since some C++ compilers masquerading as C compilers
incorrectly reject 9223372036854775807. */
-#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31))
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
&& LARGE_OFF_T % 2147483647 == 1)
? 1 : -1];
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
- if ac_fn_c_try_compile "$LINENO"; then :
+ if ac_fn_c_try_compile "$LINENO"
+then :
break
fi
-rm -f core conftest.err conftest.$ac_objext
+rm -f core conftest.err conftest.$ac_objext conftest.beam
CC="$CC -n32"
- if ac_fn_c_try_compile "$LINENO"; then :
+ if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_sys_largefile_CC=' -n32'; break
fi
-rm -f core conftest.err conftest.$ac_objext
+rm -f core conftest.err conftest.$ac_objext conftest.beam
break
done
CC=$ac_save_CC
rm -f conftest.$ac_ext
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5
-$as_echo "$ac_cv_sys_largefile_CC" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5
+printf "%s\n" "$ac_cv_sys_largefile_CC" >&6; }
if test "$ac_cv_sys_largefile_CC" != no; then
CC=$CC$ac_cv_sys_largefile_CC
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5
-$as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; }
-if ${ac_cv_sys_file_offset_bits+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5
+printf %s "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; }
+if test ${ac_cv_sys_file_offset_bits+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
while :; do
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
We can't simply define LARGE_OFF_T to be 9223372036854775807,
since some C++ compilers masquerading as C compilers
incorrectly reject 9223372036854775807. */
-#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31))
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
&& LARGE_OFF_T % 2147483647 == 1)
? 1 : -1];
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_sys_file_offset_bits=no; break
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#define _FILE_OFFSET_BITS 64
We can't simply define LARGE_OFF_T to be 9223372036854775807,
since some C++ compilers masquerading as C compilers
incorrectly reject 9223372036854775807. */
-#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31))
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
&& LARGE_OFF_T % 2147483647 == 1)
? 1 : -1];
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_sys_file_offset_bits=64; break
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
ac_cv_sys_file_offset_bits=unknown
break
done
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5
-$as_echo "$ac_cv_sys_file_offset_bits" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5
+printf "%s\n" "$ac_cv_sys_file_offset_bits" >&6; }
case $ac_cv_sys_file_offset_bits in #(
no | unknown) ;;
*)
-cat >>confdefs.h <<_ACEOF
-#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits
-_ACEOF
+printf "%s\n" "#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits" >>confdefs.h
;;
esac
rm -rf conftest*
if test $ac_cv_sys_file_offset_bits = unknown; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5
-$as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; }
-if ${ac_cv_sys_large_files+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5
+printf %s "checking for _LARGE_FILES value needed for large files... " >&6; }
+if test ${ac_cv_sys_large_files+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
while :; do
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
We can't simply define LARGE_OFF_T to be 9223372036854775807,
since some C++ compilers masquerading as C compilers
incorrectly reject 9223372036854775807. */
-#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31))
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
&& LARGE_OFF_T % 2147483647 == 1)
? 1 : -1];
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_sys_large_files=no; break
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#define _LARGE_FILES 1
We can't simply define LARGE_OFF_T to be 9223372036854775807,
since some C++ compilers masquerading as C compilers
incorrectly reject 9223372036854775807. */
-#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31))
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
&& LARGE_OFF_T % 2147483647 == 1)
? 1 : -1];
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_sys_large_files=1; break
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
ac_cv_sys_large_files=unknown
break
done
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5
-$as_echo "$ac_cv_sys_large_files" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5
+printf "%s\n" "$ac_cv_sys_large_files" >&6; }
case $ac_cv_sys_large_files in #(
no | unknown) ;;
*)
-cat >>confdefs.h <<_ACEOF
-#define _LARGE_FILES $ac_cv_sys_large_files
-_ACEOF
+printf "%s\n" "#define _LARGE_FILES $ac_cv_sys_large_files" >>confdefs.h
;;
esac
rm -rf conftest*
fi
-
-
fi
saved_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS -I. -I$srcdir -I$srcdir/libarchive"
touch "check_crypto_md.h"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_MD5_LIBC" >&5
-$as_echo_n "checking support for ARCHIVE_CRYPTO_MD5_LIBC... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_MD5_LIBC" >&5
+printf %s "checking support for ARCHIVE_CRYPTO_MD5_LIBC... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+if ac_fn_c_try_link "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
found_MD5=yes
found_LIBC=yes
-$as_echo "#define ARCHIVE_CRYPTO_MD5_LIBC 1" >>confdefs.h
+printf "%s\n" "#define ARCHIVE_CRYPTO_MD5_LIBC 1" >>confdefs.h
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
CPPFLAGS="$saved_CPPFLAGS"
rm "check_crypto_md.h"
saved_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS -I. -I$srcdir -I$srcdir/libarchive"
touch "check_crypto_md.h"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_MD5_LIBSYSTEM" >&5
-$as_echo_n "checking support for ARCHIVE_CRYPTO_MD5_LIBSYSTEM... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_MD5_LIBSYSTEM" >&5
+printf %s "checking support for ARCHIVE_CRYPTO_MD5_LIBSYSTEM... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+if ac_fn_c_try_link "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
found_MD5=yes
found_LIBSYSTEM=yes
-$as_echo "#define ARCHIVE_CRYPTO_MD5_LIBSYSTEM 1" >>confdefs.h
+printf "%s\n" "#define ARCHIVE_CRYPTO_MD5_LIBSYSTEM 1" >>confdefs.h
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
CPPFLAGS="$saved_CPPFLAGS"
rm "check_crypto_md.h"
saved_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS -I. -I$srcdir -I$srcdir/libarchive"
touch "check_crypto_md.h"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_RMD160_LIBC" >&5
-$as_echo_n "checking support for ARCHIVE_CRYPTO_RMD160_LIBC... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_RMD160_LIBC" >&5
+printf %s "checking support for ARCHIVE_CRYPTO_RMD160_LIBC... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+if ac_fn_c_try_link "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
found_RMD160=yes
found_LIBC=yes
-$as_echo "#define ARCHIVE_CRYPTO_RMD160_LIBC 1" >>confdefs.h
+printf "%s\n" "#define ARCHIVE_CRYPTO_RMD160_LIBC 1" >>confdefs.h
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
CPPFLAGS="$saved_CPPFLAGS"
rm "check_crypto_md.h"
saved_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS -I. -I$srcdir -I$srcdir/libarchive"
touch "check_crypto_md.h"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_SHA1_LIBC" >&5
-$as_echo_n "checking support for ARCHIVE_CRYPTO_SHA1_LIBC... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_SHA1_LIBC" >&5
+printf %s "checking support for ARCHIVE_CRYPTO_SHA1_LIBC... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+if ac_fn_c_try_link "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
found_SHA1=yes
found_LIBC=yes
-$as_echo "#define ARCHIVE_CRYPTO_SHA1_LIBC 1" >>confdefs.h
+printf "%s\n" "#define ARCHIVE_CRYPTO_SHA1_LIBC 1" >>confdefs.h
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
CPPFLAGS="$saved_CPPFLAGS"
rm "check_crypto_md.h"
saved_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS -I. -I$srcdir -I$srcdir/libarchive"
touch "check_crypto_md.h"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_SHA1_LIBSYSTEM" >&5
-$as_echo_n "checking support for ARCHIVE_CRYPTO_SHA1_LIBSYSTEM... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_SHA1_LIBSYSTEM" >&5
+printf %s "checking support for ARCHIVE_CRYPTO_SHA1_LIBSYSTEM... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+if ac_fn_c_try_link "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
found_SHA1=yes
found_LIBSYSTEM=yes
-$as_echo "#define ARCHIVE_CRYPTO_SHA1_LIBSYSTEM 1" >>confdefs.h
+printf "%s\n" "#define ARCHIVE_CRYPTO_SHA1_LIBSYSTEM 1" >>confdefs.h
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
CPPFLAGS="$saved_CPPFLAGS"
rm "check_crypto_md.h"
saved_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS -I. -I$srcdir -I$srcdir/libarchive"
touch "check_crypto_md.h"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_SHA256_LIBC" >&5
-$as_echo_n "checking support for ARCHIVE_CRYPTO_SHA256_LIBC... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_SHA256_LIBC" >&5
+printf %s "checking support for ARCHIVE_CRYPTO_SHA256_LIBC... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+if ac_fn_c_try_link "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
found_SHA256=yes
found_LIBC=yes
-$as_echo "#define ARCHIVE_CRYPTO_SHA256_LIBC 1" >>confdefs.h
+printf "%s\n" "#define ARCHIVE_CRYPTO_SHA256_LIBC 1" >>confdefs.h
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
CPPFLAGS="$saved_CPPFLAGS"
rm "check_crypto_md.h"
saved_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS -I. -I$srcdir -I$srcdir/libarchive"
touch "check_crypto_md.h"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_SHA256_LIBC2" >&5
-$as_echo_n "checking support for ARCHIVE_CRYPTO_SHA256_LIBC2... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_SHA256_LIBC2" >&5
+printf %s "checking support for ARCHIVE_CRYPTO_SHA256_LIBC2... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+if ac_fn_c_try_link "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
found_SHA256=yes
found_LIBC2=yes
-$as_echo "#define ARCHIVE_CRYPTO_SHA256_LIBC2 1" >>confdefs.h
+printf "%s\n" "#define ARCHIVE_CRYPTO_SHA256_LIBC2 1" >>confdefs.h
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
CPPFLAGS="$saved_CPPFLAGS"
rm "check_crypto_md.h"
saved_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS -I. -I$srcdir -I$srcdir/libarchive"
touch "check_crypto_md.h"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_SHA256_LIBC3" >&5
-$as_echo_n "checking support for ARCHIVE_CRYPTO_SHA256_LIBC3... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_SHA256_LIBC3" >&5
+printf %s "checking support for ARCHIVE_CRYPTO_SHA256_LIBC3... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+if ac_fn_c_try_link "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
found_SHA256=yes
found_LIBC3=yes
-$as_echo "#define ARCHIVE_CRYPTO_SHA256_LIBC3 1" >>confdefs.h
+printf "%s\n" "#define ARCHIVE_CRYPTO_SHA256_LIBC3 1" >>confdefs.h
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
CPPFLAGS="$saved_CPPFLAGS"
rm "check_crypto_md.h"
saved_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS -I. -I$srcdir -I$srcdir/libarchive"
touch "check_crypto_md.h"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_SHA256_LIBSYSTEM" >&5
-$as_echo_n "checking support for ARCHIVE_CRYPTO_SHA256_LIBSYSTEM... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_SHA256_LIBSYSTEM" >&5
+printf %s "checking support for ARCHIVE_CRYPTO_SHA256_LIBSYSTEM... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+if ac_fn_c_try_link "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
found_SHA256=yes
found_LIBSYSTEM=yes
-$as_echo "#define ARCHIVE_CRYPTO_SHA256_LIBSYSTEM 1" >>confdefs.h
+printf "%s\n" "#define ARCHIVE_CRYPTO_SHA256_LIBSYSTEM 1" >>confdefs.h
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
CPPFLAGS="$saved_CPPFLAGS"
rm "check_crypto_md.h"
saved_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS -I. -I$srcdir -I$srcdir/libarchive"
touch "check_crypto_md.h"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_SHA384_LIBC" >&5
-$as_echo_n "checking support for ARCHIVE_CRYPTO_SHA384_LIBC... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_SHA384_LIBC" >&5
+printf %s "checking support for ARCHIVE_CRYPTO_SHA384_LIBC... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+if ac_fn_c_try_link "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
found_SHA384=yes
found_LIBC=yes
-$as_echo "#define ARCHIVE_CRYPTO_SHA384_LIBC 1" >>confdefs.h
+printf "%s\n" "#define ARCHIVE_CRYPTO_SHA384_LIBC 1" >>confdefs.h
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
CPPFLAGS="$saved_CPPFLAGS"
rm "check_crypto_md.h"
saved_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS -I. -I$srcdir -I$srcdir/libarchive"
touch "check_crypto_md.h"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_SHA384_LIBC2" >&5
-$as_echo_n "checking support for ARCHIVE_CRYPTO_SHA384_LIBC2... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_SHA384_LIBC2" >&5
+printf %s "checking support for ARCHIVE_CRYPTO_SHA384_LIBC2... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+if ac_fn_c_try_link "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
found_SHA384=yes
found_LIBC2=yes
-$as_echo "#define ARCHIVE_CRYPTO_SHA384_LIBC2 1" >>confdefs.h
+printf "%s\n" "#define ARCHIVE_CRYPTO_SHA384_LIBC2 1" >>confdefs.h
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
CPPFLAGS="$saved_CPPFLAGS"
rm "check_crypto_md.h"
saved_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS -I. -I$srcdir -I$srcdir/libarchive"
touch "check_crypto_md.h"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_SHA384_LIBC3" >&5
-$as_echo_n "checking support for ARCHIVE_CRYPTO_SHA384_LIBC3... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_SHA384_LIBC3" >&5
+printf %s "checking support for ARCHIVE_CRYPTO_SHA384_LIBC3... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+if ac_fn_c_try_link "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
found_SHA384=yes
found_LIBC3=yes
-$as_echo "#define ARCHIVE_CRYPTO_SHA384_LIBC3 1" >>confdefs.h
+printf "%s\n" "#define ARCHIVE_CRYPTO_SHA384_LIBC3 1" >>confdefs.h
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
CPPFLAGS="$saved_CPPFLAGS"
rm "check_crypto_md.h"
saved_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS -I. -I$srcdir -I$srcdir/libarchive"
touch "check_crypto_md.h"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_SHA384_LIBSYSTEM" >&5
-$as_echo_n "checking support for ARCHIVE_CRYPTO_SHA384_LIBSYSTEM... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_SHA384_LIBSYSTEM" >&5
+printf %s "checking support for ARCHIVE_CRYPTO_SHA384_LIBSYSTEM... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+if ac_fn_c_try_link "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
found_SHA384=yes
found_LIBSYSTEM=yes
-$as_echo "#define ARCHIVE_CRYPTO_SHA384_LIBSYSTEM 1" >>confdefs.h
+printf "%s\n" "#define ARCHIVE_CRYPTO_SHA384_LIBSYSTEM 1" >>confdefs.h
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
CPPFLAGS="$saved_CPPFLAGS"
rm "check_crypto_md.h"
saved_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS -I. -I$srcdir -I$srcdir/libarchive"
touch "check_crypto_md.h"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_SHA512_LIBC" >&5
-$as_echo_n "checking support for ARCHIVE_CRYPTO_SHA512_LIBC... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_SHA512_LIBC" >&5
+printf %s "checking support for ARCHIVE_CRYPTO_SHA512_LIBC... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+if ac_fn_c_try_link "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
found_SHA512=yes
found_LIBC=yes
-$as_echo "#define ARCHIVE_CRYPTO_SHA512_LIBC 1" >>confdefs.h
+printf "%s\n" "#define ARCHIVE_CRYPTO_SHA512_LIBC 1" >>confdefs.h
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
CPPFLAGS="$saved_CPPFLAGS"
rm "check_crypto_md.h"
saved_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS -I. -I$srcdir -I$srcdir/libarchive"
touch "check_crypto_md.h"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_SHA512_LIBC2" >&5
-$as_echo_n "checking support for ARCHIVE_CRYPTO_SHA512_LIBC2... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_SHA512_LIBC2" >&5
+printf %s "checking support for ARCHIVE_CRYPTO_SHA512_LIBC2... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+if ac_fn_c_try_link "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
found_SHA512=yes
found_LIBC2=yes
-$as_echo "#define ARCHIVE_CRYPTO_SHA512_LIBC2 1" >>confdefs.h
+printf "%s\n" "#define ARCHIVE_CRYPTO_SHA512_LIBC2 1" >>confdefs.h
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
CPPFLAGS="$saved_CPPFLAGS"
rm "check_crypto_md.h"
saved_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS -I. -I$srcdir -I$srcdir/libarchive"
touch "check_crypto_md.h"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_SHA512_LIBC3" >&5
-$as_echo_n "checking support for ARCHIVE_CRYPTO_SHA512_LIBC3... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_SHA512_LIBC3" >&5
+printf %s "checking support for ARCHIVE_CRYPTO_SHA512_LIBC3... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+if ac_fn_c_try_link "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
found_SHA512=yes
found_LIBC3=yes
-$as_echo "#define ARCHIVE_CRYPTO_SHA512_LIBC3 1" >>confdefs.h
+printf "%s\n" "#define ARCHIVE_CRYPTO_SHA512_LIBC3 1" >>confdefs.h
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
CPPFLAGS="$saved_CPPFLAGS"
rm "check_crypto_md.h"
saved_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS -I. -I$srcdir -I$srcdir/libarchive"
touch "check_crypto_md.h"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_SHA512_LIBSYSTEM" >&5
-$as_echo_n "checking support for ARCHIVE_CRYPTO_SHA512_LIBSYSTEM... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_SHA512_LIBSYSTEM" >&5
+printf %s "checking support for ARCHIVE_CRYPTO_SHA512_LIBSYSTEM... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+if ac_fn_c_try_link "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
found_SHA512=yes
found_LIBSYSTEM=yes
-$as_echo "#define ARCHIVE_CRYPTO_SHA512_LIBSYSTEM 1" >>confdefs.h
+printf "%s\n" "#define ARCHIVE_CRYPTO_SHA512_LIBSYSTEM 1" >>confdefs.h
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
CPPFLAGS="$saved_CPPFLAGS"
rm "check_crypto_md.h"
esac
if test "x$with_cng" != "xno"; then
- for ac_header in bcrypt.h
+ for ac_header in bcrypt.h
do :
ac_fn_c_check_header_compile "$LINENO" "bcrypt.h" "ac_cv_header_bcrypt_h" "#ifdef HAVE_WINDOWS_H
# include <windows.h>
#endif
"
-if test "x$ac_cv_header_bcrypt_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_BCRYPT_H 1
-_ACEOF
+if test "x$ac_cv_header_bcrypt_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_BCRYPT_H 1" >>confdefs.h
LIBS="$LIBS -lbcrypt"
fi
done
-
fi
-if test "x$with_mbedtls" = "xyes"; then
- for ac_header in mbedtls/aes.h mbedtls/md.h mbedtls/pkcs5.h
-do :
- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
+if test "x$with_mbedtls" = "xyes"; then
+ ac_fn_c_check_header_compile "$LINENO" "mbedtls/aes.h" "ac_cv_header_mbedtls_aes_h" "$ac_includes_default"
+if test "x$ac_cv_header_mbedtls_aes_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_MBEDTLS_AES_H 1" >>confdefs.h
fi
+ac_fn_c_check_header_compile "$LINENO" "mbedtls/md.h" "ac_cv_header_mbedtls_md_h" "$ac_includes_default"
+if test "x$ac_cv_header_mbedtls_md_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_MBEDTLS_MD_H 1" >>confdefs.h
-done
+fi
+ac_fn_c_check_header_compile "$LINENO" "mbedtls/pkcs5.h" "ac_cv_header_mbedtls_pkcs5_h" "$ac_includes_default"
+if test "x$ac_cv_header_mbedtls_pkcs5_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_MBEDTLS_PKCS5_H 1" >>confdefs.h
+
+fi
saved_LIBS=$LIBS
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for mbedtls_sha1_init in -lmbedcrypto" >&5
-$as_echo_n "checking for mbedtls_sha1_init in -lmbedcrypto... " >&6; }
-if ${ac_cv_lib_mbedcrypto_mbedtls_sha1_init+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for mbedtls_sha1_init in -lmbedcrypto" >&5
+printf %s "checking for mbedtls_sha1_init in -lmbedcrypto... " >&6; }
+if test ${ac_cv_lib_mbedcrypto_mbedtls_sha1_init+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lmbedcrypto $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* 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 mbedtls_sha1_init ();
int
-main ()
+main (void)
{
return mbedtls_sha1_init ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_mbedcrypto_mbedtls_sha1_init=yes
-else
+else $as_nop
ac_cv_lib_mbedcrypto_mbedtls_sha1_init=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_mbedcrypto_mbedtls_sha1_init" >&5
-$as_echo "$ac_cv_lib_mbedcrypto_mbedtls_sha1_init" >&6; }
-if test "x$ac_cv_lib_mbedcrypto_mbedtls_sha1_init" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBMBEDCRYPTO 1
-_ACEOF
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_mbedcrypto_mbedtls_sha1_init" >&5
+printf "%s\n" "$ac_cv_lib_mbedcrypto_mbedtls_sha1_init" >&6; }
+if test "x$ac_cv_lib_mbedcrypto_mbedtls_sha1_init" = xyes
+then :
+ printf "%s\n" "#define HAVE_LIBMBEDCRYPTO 1" >>confdefs.h
LIBS="-lmbedcrypto $LIBS"
saved_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS -I. -I$srcdir -I$srcdir/libarchive"
touch "check_crypto_md.h"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_MD5_MBEDTLS" >&5
-$as_echo_n "checking support for ARCHIVE_CRYPTO_MD5_MBEDTLS... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_MD5_MBEDTLS" >&5
+printf %s "checking support for ARCHIVE_CRYPTO_MD5_MBEDTLS... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+if ac_fn_c_try_link "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
found_MD5=yes
found_MBEDTLS=yes
-$as_echo "#define ARCHIVE_CRYPTO_MD5_MBEDTLS 1" >>confdefs.h
+printf "%s\n" "#define ARCHIVE_CRYPTO_MD5_MBEDTLS 1" >>confdefs.h
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
CPPFLAGS="$saved_CPPFLAGS"
rm "check_crypto_md.h"
saved_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS -I. -I$srcdir -I$srcdir/libarchive"
touch "check_crypto_md.h"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_RMD160_MBEDTLS" >&5
-$as_echo_n "checking support for ARCHIVE_CRYPTO_RMD160_MBEDTLS... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_RMD160_MBEDTLS" >&5
+printf %s "checking support for ARCHIVE_CRYPTO_RMD160_MBEDTLS... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+if ac_fn_c_try_link "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
found_RMD160=yes
found_MBEDTLS=yes
-$as_echo "#define ARCHIVE_CRYPTO_RMD160_MBEDTLS 1" >>confdefs.h
+printf "%s\n" "#define ARCHIVE_CRYPTO_RMD160_MBEDTLS 1" >>confdefs.h
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
CPPFLAGS="$saved_CPPFLAGS"
rm "check_crypto_md.h"
saved_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS -I. -I$srcdir -I$srcdir/libarchive"
touch "check_crypto_md.h"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_SHA1_MBEDTLS" >&5
-$as_echo_n "checking support for ARCHIVE_CRYPTO_SHA1_MBEDTLS... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_SHA1_MBEDTLS" >&5
+printf %s "checking support for ARCHIVE_CRYPTO_SHA1_MBEDTLS... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+if ac_fn_c_try_link "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
found_SHA1=yes
found_MBEDTLS=yes
-$as_echo "#define ARCHIVE_CRYPTO_SHA1_MBEDTLS 1" >>confdefs.h
+printf "%s\n" "#define ARCHIVE_CRYPTO_SHA1_MBEDTLS 1" >>confdefs.h
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
CPPFLAGS="$saved_CPPFLAGS"
rm "check_crypto_md.h"
saved_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS -I. -I$srcdir -I$srcdir/libarchive"
touch "check_crypto_md.h"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_SHA256_MBEDTLS" >&5
-$as_echo_n "checking support for ARCHIVE_CRYPTO_SHA256_MBEDTLS... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_SHA256_MBEDTLS" >&5
+printf %s "checking support for ARCHIVE_CRYPTO_SHA256_MBEDTLS... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+if ac_fn_c_try_link "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
found_SHA256=yes
found_MBEDTLS=yes
-$as_echo "#define ARCHIVE_CRYPTO_SHA256_MBEDTLS 1" >>confdefs.h
+printf "%s\n" "#define ARCHIVE_CRYPTO_SHA256_MBEDTLS 1" >>confdefs.h
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
CPPFLAGS="$saved_CPPFLAGS"
rm "check_crypto_md.h"
saved_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS -I. -I$srcdir -I$srcdir/libarchive"
touch "check_crypto_md.h"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_SHA384_MBEDTLS" >&5
-$as_echo_n "checking support for ARCHIVE_CRYPTO_SHA384_MBEDTLS... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_SHA384_MBEDTLS" >&5
+printf %s "checking support for ARCHIVE_CRYPTO_SHA384_MBEDTLS... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+if ac_fn_c_try_link "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
found_SHA384=yes
found_MBEDTLS=yes
-$as_echo "#define ARCHIVE_CRYPTO_SHA384_MBEDTLS 1" >>confdefs.h
+printf "%s\n" "#define ARCHIVE_CRYPTO_SHA384_MBEDTLS 1" >>confdefs.h
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
CPPFLAGS="$saved_CPPFLAGS"
rm "check_crypto_md.h"
saved_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS -I. -I$srcdir -I$srcdir/libarchive"
touch "check_crypto_md.h"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_SHA512_MBEDTLS" >&5
-$as_echo_n "checking support for ARCHIVE_CRYPTO_SHA512_MBEDTLS... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_SHA512_MBEDTLS" >&5
+printf %s "checking support for ARCHIVE_CRYPTO_SHA512_MBEDTLS... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+if ac_fn_c_try_link "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
found_SHA512=yes
found_MBEDTLS=yes
-$as_echo "#define ARCHIVE_CRYPTO_SHA512_MBEDTLS 1" >>confdefs.h
+printf "%s\n" "#define ARCHIVE_CRYPTO_SHA512_MBEDTLS 1" >>confdefs.h
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
CPPFLAGS="$saved_CPPFLAGS"
rm "check_crypto_md.h"
fi
if test "x$with_nettle" = "xyes"; then
- for ac_header in nettle/md5.h nettle/ripemd160.h nettle/sha.h
-do :
- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
+ ac_fn_c_check_header_compile "$LINENO" "nettle/md5.h" "ac_cv_header_nettle_md5_h" "$ac_includes_default"
+if test "x$ac_cv_header_nettle_md5_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_NETTLE_MD5_H 1" >>confdefs.h
fi
+ac_fn_c_check_header_compile "$LINENO" "nettle/ripemd160.h" "ac_cv_header_nettle_ripemd160_h" "$ac_includes_default"
+if test "x$ac_cv_header_nettle_ripemd160_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_NETTLE_RIPEMD160_H 1" >>confdefs.h
-done
+fi
+ac_fn_c_check_header_compile "$LINENO" "nettle/sha.h" "ac_cv_header_nettle_sha_h" "$ac_includes_default"
+if test "x$ac_cv_header_nettle_sha_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_NETTLE_SHA_H 1" >>confdefs.h
- for ac_header in nettle/pbkdf2.h nettle/aes.h nettle/hmac.h
-do :
- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
+fi
+
+ ac_fn_c_check_header_compile "$LINENO" "nettle/pbkdf2.h" "ac_cv_header_nettle_pbkdf2_h" "$ac_includes_default"
+if test "x$ac_cv_header_nettle_pbkdf2_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_NETTLE_PBKDF2_H 1" >>confdefs.h
fi
+ac_fn_c_check_header_compile "$LINENO" "nettle/aes.h" "ac_cv_header_nettle_aes_h" "$ac_includes_default"
+if test "x$ac_cv_header_nettle_aes_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_NETTLE_AES_H 1" >>confdefs.h
-done
+fi
+ac_fn_c_check_header_compile "$LINENO" "nettle/hmac.h" "ac_cv_header_nettle_hmac_h" "$ac_includes_default"
+if test "x$ac_cv_header_nettle_hmac_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_NETTLE_HMAC_H 1" >>confdefs.h
+
+fi
saved_LIBS=$LIBS
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for nettle_sha1_init in -lnettle" >&5
-$as_echo_n "checking for nettle_sha1_init in -lnettle... " >&6; }
-if ${ac_cv_lib_nettle_nettle_sha1_init+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for nettle_sha1_init in -lnettle" >&5
+printf %s "checking for nettle_sha1_init in -lnettle... " >&6; }
+if test ${ac_cv_lib_nettle_nettle_sha1_init+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lnettle $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char nettle_sha1_init ();
int
-main ()
+main (void)
{
return nettle_sha1_init ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_nettle_nettle_sha1_init=yes
-else
+else $as_nop
ac_cv_lib_nettle_nettle_sha1_init=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nettle_nettle_sha1_init" >&5
-$as_echo "$ac_cv_lib_nettle_nettle_sha1_init" >&6; }
-if test "x$ac_cv_lib_nettle_nettle_sha1_init" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBNETTLE 1
-_ACEOF
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nettle_nettle_sha1_init" >&5
+printf "%s\n" "$ac_cv_lib_nettle_nettle_sha1_init" >&6; }
+if test "x$ac_cv_lib_nettle_nettle_sha1_init" = xyes
+then :
+ printf "%s\n" "#define HAVE_LIBNETTLE 1" >>confdefs.h
LIBS="-lnettle $LIBS"
saved_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS -I. -I$srcdir -I$srcdir/libarchive"
touch "check_crypto_md.h"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_MD5_NETTLE" >&5
-$as_echo_n "checking support for ARCHIVE_CRYPTO_MD5_NETTLE... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_MD5_NETTLE" >&5
+printf %s "checking support for ARCHIVE_CRYPTO_MD5_NETTLE... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+if ac_fn_c_try_link "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
found_MD5=yes
found_NETTLE=yes
-$as_echo "#define ARCHIVE_CRYPTO_MD5_NETTLE 1" >>confdefs.h
+printf "%s\n" "#define ARCHIVE_CRYPTO_MD5_NETTLE 1" >>confdefs.h
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
CPPFLAGS="$saved_CPPFLAGS"
rm "check_crypto_md.h"
saved_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS -I. -I$srcdir -I$srcdir/libarchive"
touch "check_crypto_md.h"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_RMD160_NETTLE" >&5
-$as_echo_n "checking support for ARCHIVE_CRYPTO_RMD160_NETTLE... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_RMD160_NETTLE" >&5
+printf %s "checking support for ARCHIVE_CRYPTO_RMD160_NETTLE... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+if ac_fn_c_try_link "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
found_RMD160=yes
found_NETTLE=yes
-$as_echo "#define ARCHIVE_CRYPTO_RMD160_NETTLE 1" >>confdefs.h
+printf "%s\n" "#define ARCHIVE_CRYPTO_RMD160_NETTLE 1" >>confdefs.h
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
CPPFLAGS="$saved_CPPFLAGS"
rm "check_crypto_md.h"
saved_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS -I. -I$srcdir -I$srcdir/libarchive"
touch "check_crypto_md.h"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_SHA1_NETTLE" >&5
-$as_echo_n "checking support for ARCHIVE_CRYPTO_SHA1_NETTLE... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_SHA1_NETTLE" >&5
+printf %s "checking support for ARCHIVE_CRYPTO_SHA1_NETTLE... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+if ac_fn_c_try_link "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
found_SHA1=yes
found_NETTLE=yes
-$as_echo "#define ARCHIVE_CRYPTO_SHA1_NETTLE 1" >>confdefs.h
+printf "%s\n" "#define ARCHIVE_CRYPTO_SHA1_NETTLE 1" >>confdefs.h
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
CPPFLAGS="$saved_CPPFLAGS"
rm "check_crypto_md.h"
saved_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS -I. -I$srcdir -I$srcdir/libarchive"
touch "check_crypto_md.h"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_SHA256_NETTLE" >&5
-$as_echo_n "checking support for ARCHIVE_CRYPTO_SHA256_NETTLE... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_SHA256_NETTLE" >&5
+printf %s "checking support for ARCHIVE_CRYPTO_SHA256_NETTLE... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+if ac_fn_c_try_link "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
found_SHA256=yes
found_NETTLE=yes
-$as_echo "#define ARCHIVE_CRYPTO_SHA256_NETTLE 1" >>confdefs.h
+printf "%s\n" "#define ARCHIVE_CRYPTO_SHA256_NETTLE 1" >>confdefs.h
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
CPPFLAGS="$saved_CPPFLAGS"
rm "check_crypto_md.h"
saved_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS -I. -I$srcdir -I$srcdir/libarchive"
touch "check_crypto_md.h"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_SHA384_NETTLE" >&5
-$as_echo_n "checking support for ARCHIVE_CRYPTO_SHA384_NETTLE... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_SHA384_NETTLE" >&5
+printf %s "checking support for ARCHIVE_CRYPTO_SHA384_NETTLE... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+if ac_fn_c_try_link "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
found_SHA384=yes
found_NETTLE=yes
-$as_echo "#define ARCHIVE_CRYPTO_SHA384_NETTLE 1" >>confdefs.h
+printf "%s\n" "#define ARCHIVE_CRYPTO_SHA384_NETTLE 1" >>confdefs.h
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
CPPFLAGS="$saved_CPPFLAGS"
rm "check_crypto_md.h"
saved_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS -I. -I$srcdir -I$srcdir/libarchive"
touch "check_crypto_md.h"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_SHA512_NETTLE" >&5
-$as_echo_n "checking support for ARCHIVE_CRYPTO_SHA512_NETTLE... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_SHA512_NETTLE" >&5
+printf %s "checking support for ARCHIVE_CRYPTO_SHA512_NETTLE... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+if ac_fn_c_try_link "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
found_SHA512=yes
found_NETTLE=yes
-$as_echo "#define ARCHIVE_CRYPTO_SHA512_NETTLE 1" >>confdefs.h
+printf "%s\n" "#define ARCHIVE_CRYPTO_SHA512_NETTLE 1" >>confdefs.h
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
CPPFLAGS="$saved_CPPFLAGS"
rm "check_crypto_md.h"
fi
if test "x$with_openssl" != "xno"; then
- for ac_header in openssl/evp.h
-do :
- ac_fn_c_check_header_mongrel "$LINENO" "openssl/evp.h" "ac_cv_header_openssl_evp_h" "$ac_includes_default"
-if test "x$ac_cv_header_openssl_evp_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_OPENSSL_EVP_H 1
-_ACEOF
+ ac_fn_c_check_header_compile "$LINENO" "openssl/evp.h" "ac_cv_header_openssl_evp_h" "$ac_includes_default"
+if test "x$ac_cv_header_openssl_evp_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_OPENSSL_EVP_H 1" >>confdefs.h
fi
-done
-
saved_LIBS=$LIBS
- case "$host_os" in
- *mingw* | *cygwin* | *msys*)
- case "$host_cpu" in
- x86_64)
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for OPENSSL_config in -leay64" >&5
-$as_echo_n "checking for OPENSSL_config in -leay64... " >&6; }
-if ${ac_cv_lib_eay64_OPENSSL_config+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-leay64 $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char OPENSSL_config ();
-int
-main ()
-{
-return OPENSSL_config ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_eay64_OPENSSL_config=yes
-else
- ac_cv_lib_eay64_OPENSSL_config=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_eay64_OPENSSL_config" >&5
-$as_echo "$ac_cv_lib_eay64_OPENSSL_config" >&6; }
-if test "x$ac_cv_lib_eay64_OPENSSL_config" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBEAY64 1
-_ACEOF
-
- LIBS="-leay64 $LIBS"
-
-fi
-
- if test "x$ac_cv_lib_eay64_main" != "xyes"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for OPENSSL_config in -leay32" >&5
-$as_echo_n "checking for OPENSSL_config in -leay32... " >&6; }
-if ${ac_cv_lib_eay32_OPENSSL_config+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-leay32 $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char OPENSSL_config ();
-int
-main ()
-{
-return OPENSSL_config ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_eay32_OPENSSL_config=yes
-else
- ac_cv_lib_eay32_OPENSSL_config=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_eay32_OPENSSL_config" >&5
-$as_echo "$ac_cv_lib_eay32_OPENSSL_config" >&6; }
-if test "x$ac_cv_lib_eay32_OPENSSL_config" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBEAY32 1
-_ACEOF
-
- LIBS="-leay32 $LIBS"
-
-fi
-
- fi
- ;;
- *)
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for OPENSSL_config in -leay32" >&5
-$as_echo_n "checking for OPENSSL_config in -leay32... " >&6; }
-if ${ac_cv_lib_eay32_OPENSSL_config+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-leay32 $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char OPENSSL_config ();
-int
-main ()
-{
-return OPENSSL_config ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_eay32_OPENSSL_config=yes
-else
- ac_cv_lib_eay32_OPENSSL_config=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_eay32_OPENSSL_config" >&5
-$as_echo "$ac_cv_lib_eay32_OPENSSL_config" >&6; }
-if test "x$ac_cv_lib_eay32_OPENSSL_config" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBEAY32 1
-_ACEOF
-
- LIBS="-leay32 $LIBS"
-
-fi
-
- ;;
- esac
- ;;
- *)
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for OPENSSL_config in -lcrypto" >&5
-$as_echo_n "checking for OPENSSL_config in -lcrypto... " >&6; }
-if ${ac_cv_lib_crypto_OPENSSL_config+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ LIBSREQUIRED="$LIBSREQUIRED${LIBSREQUIRED:+ }libcrypto"
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for OPENSSL_config in -lcrypto" >&5
+printf %s "checking for OPENSSL_config in -lcrypto... " >&6; }
+if test ${ac_cv_lib_crypto_OPENSSL_config+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lcrypto $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char OPENSSL_config ();
int
-main ()
+main (void)
{
return OPENSSL_config ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_crypto_OPENSSL_config=yes
-else
+else $as_nop
ac_cv_lib_crypto_OPENSSL_config=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_crypto_OPENSSL_config" >&5
-$as_echo "$ac_cv_lib_crypto_OPENSSL_config" >&6; }
-if test "x$ac_cv_lib_crypto_OPENSSL_config" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBCRYPTO 1
-_ACEOF
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_crypto_OPENSSL_config" >&5
+printf "%s\n" "$ac_cv_lib_crypto_OPENSSL_config" >&6; }
+if test "x$ac_cv_lib_crypto_OPENSSL_config" = xyes
+then :
+ printf "%s\n" "#define HAVE_LIBCRYPTO 1" >>confdefs.h
LIBS="-lcrypto $LIBS"
fi
- ;;
- esac
if test "$found_MD5" != yes; then
saved_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS -I. -I$srcdir -I$srcdir/libarchive"
touch "check_crypto_md.h"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_MD5_OPENSSL" >&5
-$as_echo_n "checking support for ARCHIVE_CRYPTO_MD5_OPENSSL... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_MD5_OPENSSL" >&5
+printf %s "checking support for ARCHIVE_CRYPTO_MD5_OPENSSL... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+if ac_fn_c_try_link "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
found_MD5=yes
found_OPENSSL=yes
-$as_echo "#define ARCHIVE_CRYPTO_MD5_OPENSSL 1" >>confdefs.h
+printf "%s\n" "#define ARCHIVE_CRYPTO_MD5_OPENSSL 1" >>confdefs.h
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
CPPFLAGS="$saved_CPPFLAGS"
rm "check_crypto_md.h"
saved_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS -I. -I$srcdir -I$srcdir/libarchive"
touch "check_crypto_md.h"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_RMD160_OPENSSL" >&5
-$as_echo_n "checking support for ARCHIVE_CRYPTO_RMD160_OPENSSL... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_RMD160_OPENSSL" >&5
+printf %s "checking support for ARCHIVE_CRYPTO_RMD160_OPENSSL... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+if ac_fn_c_try_link "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
found_RMD160=yes
found_OPENSSL=yes
-$as_echo "#define ARCHIVE_CRYPTO_RMD160_OPENSSL 1" >>confdefs.h
+printf "%s\n" "#define ARCHIVE_CRYPTO_RMD160_OPENSSL 1" >>confdefs.h
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
CPPFLAGS="$saved_CPPFLAGS"
rm "check_crypto_md.h"
saved_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS -I. -I$srcdir -I$srcdir/libarchive"
touch "check_crypto_md.h"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_SHA1_OPENSSL" >&5
-$as_echo_n "checking support for ARCHIVE_CRYPTO_SHA1_OPENSSL... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_SHA1_OPENSSL" >&5
+printf %s "checking support for ARCHIVE_CRYPTO_SHA1_OPENSSL... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+if ac_fn_c_try_link "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
found_SHA1=yes
found_OPENSSL=yes
-$as_echo "#define ARCHIVE_CRYPTO_SHA1_OPENSSL 1" >>confdefs.h
+printf "%s\n" "#define ARCHIVE_CRYPTO_SHA1_OPENSSL 1" >>confdefs.h
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
CPPFLAGS="$saved_CPPFLAGS"
rm "check_crypto_md.h"
saved_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS -I. -I$srcdir -I$srcdir/libarchive"
touch "check_crypto_md.h"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_SHA256_OPENSSL" >&5
-$as_echo_n "checking support for ARCHIVE_CRYPTO_SHA256_OPENSSL... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_SHA256_OPENSSL" >&5
+printf %s "checking support for ARCHIVE_CRYPTO_SHA256_OPENSSL... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+if ac_fn_c_try_link "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
found_SHA256=yes
found_OPENSSL=yes
-$as_echo "#define ARCHIVE_CRYPTO_SHA256_OPENSSL 1" >>confdefs.h
+printf "%s\n" "#define ARCHIVE_CRYPTO_SHA256_OPENSSL 1" >>confdefs.h
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
CPPFLAGS="$saved_CPPFLAGS"
rm "check_crypto_md.h"
saved_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS -I. -I$srcdir -I$srcdir/libarchive"
touch "check_crypto_md.h"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_SHA384_OPENSSL" >&5
-$as_echo_n "checking support for ARCHIVE_CRYPTO_SHA384_OPENSSL... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_SHA384_OPENSSL" >&5
+printf %s "checking support for ARCHIVE_CRYPTO_SHA384_OPENSSL... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+if ac_fn_c_try_link "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
found_SHA384=yes
found_OPENSSL=yes
-$as_echo "#define ARCHIVE_CRYPTO_SHA384_OPENSSL 1" >>confdefs.h
+printf "%s\n" "#define ARCHIVE_CRYPTO_SHA384_OPENSSL 1" >>confdefs.h
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
CPPFLAGS="$saved_CPPFLAGS"
rm "check_crypto_md.h"
saved_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS -I. -I$srcdir -I$srcdir/libarchive"
touch "check_crypto_md.h"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_SHA512_OPENSSL" >&5
-$as_echo_n "checking support for ARCHIVE_CRYPTO_SHA512_OPENSSL... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_SHA512_OPENSSL" >&5
+printf %s "checking support for ARCHIVE_CRYPTO_SHA512_OPENSSL... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+if ac_fn_c_try_link "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
found_SHA512=yes
found_OPENSSL=yes
-$as_echo "#define ARCHIVE_CRYPTO_SHA512_OPENSSL 1" >>confdefs.h
+printf "%s\n" "#define ARCHIVE_CRYPTO_SHA512_OPENSSL 1" >>confdefs.h
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
CPPFLAGS="$saved_CPPFLAGS"
rm "check_crypto_md.h"
fi
- for ac_func in PKCS5_PBKDF2_HMAC_SHA1
-do :
- ac_fn_c_check_func "$LINENO" "PKCS5_PBKDF2_HMAC_SHA1" "ac_cv_func_PKCS5_PBKDF2_HMAC_SHA1"
-if test "x$ac_cv_func_PKCS5_PBKDF2_HMAC_SHA1" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_PKCS5_PBKDF2_HMAC_SHA1 1
-_ACEOF
+ ac_fn_c_check_func "$LINENO" "PKCS5_PBKDF2_HMAC_SHA1" "ac_cv_func_PKCS5_PBKDF2_HMAC_SHA1"
+if test "x$ac_cv_func_PKCS5_PBKDF2_HMAC_SHA1" = xyes
+then :
+ printf "%s\n" "#define HAVE_PKCS5_PBKDF2_HMAC_SHA1 1" >>confdefs.h
fi
-done
fi
+
+
# Probe libmd AFTER OpenSSL/libcrypto.
# The two are incompatible and OpenSSL is more complete.
-for ac_header in md5.h ripemd.h sha.h sha256.h sha512.h
-do :
- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
+ac_fn_c_check_header_compile "$LINENO" "md5.h" "ac_cv_header_md5_h" "$ac_includes_default"
+if test "x$ac_cv_header_md5_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_MD5_H 1" >>confdefs.h
fi
+ac_fn_c_check_header_compile "$LINENO" "ripemd.h" "ac_cv_header_ripemd_h" "$ac_includes_default"
+if test "x$ac_cv_header_ripemd_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_RIPEMD_H 1" >>confdefs.h
-done
+fi
+ac_fn_c_check_header_compile "$LINENO" "sha.h" "ac_cv_header_sha_h" "$ac_includes_default"
+if test "x$ac_cv_header_sha_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SHA_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "sha256.h" "ac_cv_header_sha256_h" "$ac_includes_default"
+if test "x$ac_cv_header_sha256_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SHA256_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "sha512.h" "ac_cv_header_sha512_h" "$ac_includes_default"
+if test "x$ac_cv_header_sha512_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SHA512_H 1" >>confdefs.h
+
+fi
saved_LIBS=$LIBS
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for MD5Init in -lmd" >&5
-$as_echo_n "checking for MD5Init in -lmd... " >&6; }
-if ${ac_cv_lib_md_MD5Init+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for MD5Init in -lmd" >&5
+printf %s "checking for MD5Init in -lmd... " >&6; }
+if test ${ac_cv_lib_md_MD5Init+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lmd $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char MD5Init ();
int
-main ()
+main (void)
{
return MD5Init ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_md_MD5Init=yes
-else
+else $as_nop
ac_cv_lib_md_MD5Init=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_md_MD5Init" >&5
-$as_echo "$ac_cv_lib_md_MD5Init" >&6; }
-if test "x$ac_cv_lib_md_MD5Init" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBMD 1
-_ACEOF
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_md_MD5Init" >&5
+printf "%s\n" "$ac_cv_lib_md_MD5Init" >&6; }
+if test "x$ac_cv_lib_md_MD5Init" = xyes
+then :
+ printf "%s\n" "#define HAVE_LIBMD 1" >>confdefs.h
LIBS="-lmd $LIBS"
saved_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS -I. -I$srcdir -I$srcdir/libarchive"
touch "check_crypto_md.h"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_MD5_LIBMD" >&5
-$as_echo_n "checking support for ARCHIVE_CRYPTO_MD5_LIBMD... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_MD5_LIBMD" >&5
+printf %s "checking support for ARCHIVE_CRYPTO_MD5_LIBMD... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+if ac_fn_c_try_link "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
found_MD5=yes
found_LIBMD=yes
-$as_echo "#define ARCHIVE_CRYPTO_MD5_LIBMD 1" >>confdefs.h
+printf "%s\n" "#define ARCHIVE_CRYPTO_MD5_LIBMD 1" >>confdefs.h
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
CPPFLAGS="$saved_CPPFLAGS"
rm "check_crypto_md.h"
saved_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS -I. -I$srcdir -I$srcdir/libarchive"
touch "check_crypto_md.h"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_RMD160_LIBMD" >&5
-$as_echo_n "checking support for ARCHIVE_CRYPTO_RMD160_LIBMD... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_RMD160_LIBMD" >&5
+printf %s "checking support for ARCHIVE_CRYPTO_RMD160_LIBMD... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+if ac_fn_c_try_link "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
found_RMD160=yes
found_LIBMD=yes
-$as_echo "#define ARCHIVE_CRYPTO_RMD160_LIBMD 1" >>confdefs.h
+printf "%s\n" "#define ARCHIVE_CRYPTO_RMD160_LIBMD 1" >>confdefs.h
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
CPPFLAGS="$saved_CPPFLAGS"
rm "check_crypto_md.h"
saved_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS -I. -I$srcdir -I$srcdir/libarchive"
touch "check_crypto_md.h"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_SHA1_LIBMD" >&5
-$as_echo_n "checking support for ARCHIVE_CRYPTO_SHA1_LIBMD... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_SHA1_LIBMD" >&5
+printf %s "checking support for ARCHIVE_CRYPTO_SHA1_LIBMD... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+if ac_fn_c_try_link "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
found_SHA1=yes
found_LIBMD=yes
-$as_echo "#define ARCHIVE_CRYPTO_SHA1_LIBMD 1" >>confdefs.h
+printf "%s\n" "#define ARCHIVE_CRYPTO_SHA1_LIBMD 1" >>confdefs.h
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
CPPFLAGS="$saved_CPPFLAGS"
rm "check_crypto_md.h"
saved_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS -I. -I$srcdir -I$srcdir/libarchive"
touch "check_crypto_md.h"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_SHA256_LIBMD" >&5
-$as_echo_n "checking support for ARCHIVE_CRYPTO_SHA256_LIBMD... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_SHA256_LIBMD" >&5
+printf %s "checking support for ARCHIVE_CRYPTO_SHA256_LIBMD... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+if ac_fn_c_try_link "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
found_SHA256=yes
found_LIBMD=yes
-$as_echo "#define ARCHIVE_CRYPTO_SHA256_LIBMD 1" >>confdefs.h
+printf "%s\n" "#define ARCHIVE_CRYPTO_SHA256_LIBMD 1" >>confdefs.h
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
CPPFLAGS="$saved_CPPFLAGS"
rm "check_crypto_md.h"
saved_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS -I. -I$srcdir -I$srcdir/libarchive"
touch "check_crypto_md.h"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_SHA512_LIBMD" >&5
-$as_echo_n "checking support for ARCHIVE_CRYPTO_SHA512_LIBMD... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_SHA512_LIBMD" >&5
+printf %s "checking support for ARCHIVE_CRYPTO_SHA512_LIBMD... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+if ac_fn_c_try_link "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
found_SHA512=yes
found_LIBMD=yes
-$as_echo "#define ARCHIVE_CRYPTO_SHA512_LIBMD 1" >>confdefs.h
+printf "%s\n" "#define ARCHIVE_CRYPTO_SHA512_LIBMD 1" >>confdefs.h
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
CPPFLAGS="$saved_CPPFLAGS"
rm "check_crypto_md.h"
*mingw* | *cygwin* | *msys*)
if test "$found_MD5" != yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_MD5_WIN" >&5
-$as_echo_n "checking support for ARCHIVE_CRYPTO_MD5_WIN... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_MD5_WIN" >&5
+printf %s "checking support for ARCHIVE_CRYPTO_MD5_WIN... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+if ac_fn_c_try_link "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
found_MD5=yes
found_WIN=yes
-$as_echo "#define ARCHIVE_CRYPTO_MD5_WIN 1" >>confdefs.h
+printf "%s\n" "#define ARCHIVE_CRYPTO_MD5_WIN 1" >>confdefs.h
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
fi
if test "$found_SHA1" != yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_SHA1_WIN" >&5
-$as_echo_n "checking support for ARCHIVE_CRYPTO_SHA1_WIN... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_SHA1_WIN" >&5
+printf %s "checking support for ARCHIVE_CRYPTO_SHA1_WIN... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+if ac_fn_c_try_link "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
found_SHA1=yes
found_WIN=yes
-$as_echo "#define ARCHIVE_CRYPTO_SHA1_WIN 1" >>confdefs.h
+printf "%s\n" "#define ARCHIVE_CRYPTO_SHA1_WIN 1" >>confdefs.h
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
fi
if test "$found_SHA256" != yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_SHA256_WIN" >&5
-$as_echo_n "checking support for ARCHIVE_CRYPTO_SHA256_WIN... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_SHA256_WIN" >&5
+printf %s "checking support for ARCHIVE_CRYPTO_SHA256_WIN... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+if ac_fn_c_try_link "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
found_SHA256=yes
found_WIN=yes
-$as_echo "#define ARCHIVE_CRYPTO_SHA256_WIN 1" >>confdefs.h
+printf "%s\n" "#define ARCHIVE_CRYPTO_SHA256_WIN 1" >>confdefs.h
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
fi
if test "$found_SHA384" != yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_SHA384_WIN" >&5
-$as_echo_n "checking support for ARCHIVE_CRYPTO_SHA384_WIN... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_SHA384_WIN" >&5
+printf %s "checking support for ARCHIVE_CRYPTO_SHA384_WIN... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+if ac_fn_c_try_link "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
found_SHA384=yes
found_WIN=yes
-$as_echo "#define ARCHIVE_CRYPTO_SHA384_WIN 1" >>confdefs.h
+printf "%s\n" "#define ARCHIVE_CRYPTO_SHA384_WIN 1" >>confdefs.h
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
fi
if test "$found_SHA512" != yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_SHA512_WIN" >&5
-$as_echo_n "checking support for ARCHIVE_CRYPTO_SHA512_WIN... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking support for ARCHIVE_CRYPTO_SHA512_WIN" >&5
+printf %s "checking support for ARCHIVE_CRYPTO_SHA512_WIN... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+if ac_fn_c_try_link "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
found_SHA512=yes
found_WIN=yes
-$as_echo "#define ARCHIVE_CRYPTO_SHA512_WIN 1" >>confdefs.h
+printf "%s\n" "#define ARCHIVE_CRYPTO_SHA512_WIN 1" >>confdefs.h
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
fi
;;
esac
+saved_CFLAGS="$CFLAGS"
+CFLAGS="$CFLAGS -fvisibility=hidden -Werror"
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether compiler supports visibility annotations" >&5
+printf %s "checking whether compiler supports visibility annotations... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+ int foo( void ) __attribute__((visibility("default")));
+
+int
+main (void)
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"
+then :
+ CFLAGS="$saved_CFLAGS -fvisibility=hidden -D__LIBARCHIVE_ENABLE_VISIBILITY";
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+else $as_nop
+ CFLAGS="$saved_CFLAGS"
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+ conftest$ac_exeext conftest.$ac_ext
+
# Ensure test directories are present if building out-of-tree
ac_config_commands="$ac_config_commands mkdirs"
case $ac_val in #(
*${as_nl}*)
case $ac_var in #(
- *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+ *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
esac
case $ac_var in #(
_ | IFS | as_nl) ;; #(
/^ac_cv_env_/b end
t clear
:clear
- s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+ s/^\([^=]*\)=\(.*[{}].*\)$/test ${\1+y} || &/
t end
s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
:end' >>confcache
if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
if test -w "$cache_file"; then
if test "x$cache_file" != "x/dev/null"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
-$as_echo "$as_me: updating cache $cache_file" >&6;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
+printf "%s\n" "$as_me: updating cache $cache_file" >&6;}
if test ! -f "$cache_file" || test -h "$cache_file"; then
cat confcache >"$cache_file"
else
fi
fi
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
-$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
+printf "%s\n" "$as_me: not updating unwritable cache $cache_file" >&6;}
fi
fi
rm -f confcache
for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
# 1. Remove the extension, and $U if already installed.
ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
- ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
+ ac_i=`printf "%s\n" "$ac_i" | sed "$ac_script"`
# 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR
# will be set to the directory where LIBOBJS objects are built.
as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
LTLIBOBJS=$ac_ltlibobjs
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5
-$as_echo_n "checking that generated files are newer than configure... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5
+printf %s "checking that generated files are newer than configure... " >&6; }
if test -n "$am_sleep_pid"; then
# Hide warnings about reused PIDs.
wait $am_sleep_pid 2>/dev/null
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5
-$as_echo "done" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: done" >&5
+printf "%s\n" "done" >&6; }
if test -n "$EXEEXT"; then
am__EXEEXT_TRUE=
am__EXEEXT_FALSE='#'
as_fn_error $? "conditional \"STATIC_BSDCPIO\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
+if test -z "${BUILD_BSDUNZIP_TRUE}" && test -z "${BUILD_BSDUNZIP_FALSE}"; then
+ as_fn_error $? "conditional \"BUILD_BSDUNZIP\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${STATIC_BSDUNZIP_TRUE}" && test -z "${STATIC_BSDUNZIP_FALSE}"; then
+ as_fn_error $? "conditional \"STATIC_BSDUNZIP\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
if test -z "${INC_BLAKE2_TRUE}" && test -z "${INC_BLAKE2_FALSE}"; then
as_fn_error $? "conditional \"INC_BLAKE2\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
ac_write_fail=0
ac_clean_files_save=$ac_clean_files
ac_clean_files="$ac_clean_files $CONFIG_STATUS"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
-$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
+printf "%s\n" "$as_me: creating $CONFIG_STATUS" >&6;}
as_write_fail=0
cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
#! $SHELL
# Be more Bourne compatible
DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+as_nop=:
+if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1
+then :
emulate sh
NULLCMD=:
# Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
# is contrary to our usage. Disable this feature.
alias -g '${1+"$@"}'='"$@"'
setopt NO_GLOB_SUBST
-else
+else $as_nop
case `(set -o) 2>/dev/null` in #(
*posix*) :
set -o posix ;; #(
fi
+
+# Reset variables that may have inherited troublesome values from
+# the environment.
+
+# IFS needs to be set, to space, tab, and newline, in precisely that order.
+# (If _AS_PATH_WALK were called with IFS unset, it would have the
+# side effect of setting IFS to empty, thus disabling word splitting.)
+# Quoting is to prevent editors from complaining about space-tab.
as_nl='
'
export as_nl
-# Printing a long string crashes Solaris 7 /usr/bin/printf.
-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-# Prefer a ksh shell builtin over an external printf program on Solaris,
-# but without wasting forks for bash or zsh.
-if test -z "$BASH_VERSION$ZSH_VERSION" \
- && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
- as_echo='print -r --'
- as_echo_n='print -rn --'
-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
- as_echo='printf %s\n'
- as_echo_n='printf %s'
-else
- if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
- as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
- as_echo_n='/usr/ucb/echo -n'
- else
- as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
- as_echo_n_body='eval
- arg=$1;
- case $arg in #(
- *"$as_nl"*)
- expr "X$arg" : "X\\(.*\\)$as_nl";
- arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
- esac;
- expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
- '
- export as_echo_n_body
- as_echo_n='sh -c $as_echo_n_body as_echo'
- fi
- export as_echo_body
- as_echo='sh -c $as_echo_body as_echo'
-fi
+IFS=" "" $as_nl"
+
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# Ensure predictable behavior from utilities with locale-dependent output.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# We cannot yet rely on "unset" to work, but we need these variables
+# to be unset--not just set to an empty or harmless value--now, to
+# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct
+# also avoids known problems related to "unset" and subshell syntax
+# in other old shells (e.g. bash 2.01 and pdksh 5.2.14).
+for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH
+do eval test \${$as_var+y} \
+ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+
+# Ensure that fds 0, 1, and 2 are open.
+if (exec 3>&0) 2>/dev/null; then :; else exec 0</dev/null; fi
+if (exec 3>&1) 2>/dev/null; then :; else exec 1>/dev/null; fi
+if (exec 3>&2) ; then :; else exec 2>/dev/null; fi
# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
+if ${PATH_SEPARATOR+false} :; then
PATH_SEPARATOR=:
(PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
(PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
fi
-# IFS
-# We need space, tab and new line, in precisely that order. Quoting is
-# there to prevent editors from complaining about space-tab.
-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
-# splitting by setting IFS to empty value.)
-IFS=" "" $as_nl"
-
# Find who we are. Look in the path if we contain no directory separator.
as_myself=
case $0 in #((
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ test -r "$as_dir$0" && as_myself=$as_dir$0 && break
done
IFS=$as_save_IFS
as_myself=$0
fi
if test ! -f "$as_myself"; then
- $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+ printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
exit 1
fi
-# Unset variables that we do not need and which cause bugs (e.g. in
-# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
-# suppresses any "Segmentation fault" message there. '((' could
-# trigger a bug in pdksh 5.2.14.
-for as_var in BASH_ENV ENV MAIL MAILPATH
-do eval test x\${$as_var+set} = xset \
- && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
-done
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-LC_ALL=C
-export LC_ALL
-LANGUAGE=C
-export LANGUAGE
-
-# CDPATH.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
# as_fn_error STATUS ERROR [LINENO LOG_FD]
as_status=$1; test $as_status -eq 0 && as_status=1
if test "$4"; then
as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
fi
- $as_echo "$as_me: error: $2" >&2
+ printf "%s\n" "$as_me: error: $2" >&2
as_fn_exit $as_status
} # as_fn_error
+
# as_fn_set_status STATUS
# -----------------------
# Set $? to STATUS, without forking.
{ eval $1=; unset $1;}
}
as_unset=as_fn_unset
+
# as_fn_append VAR VALUE
# ----------------------
# Append the text in VALUE to the end of the definition contained in VAR. Take
# advantage of any shell optimizations that allow amortized linear growth over
# repeated appends, instead of the typical quadratic growth present in naive
# implementations.
-if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null
+then :
eval 'as_fn_append ()
{
eval $1+=\$2
}'
-else
+else $as_nop
as_fn_append ()
{
eval $1=\$$1\$2
# Perform arithmetic evaluation on the ARGs, and store the result in the
# global $as_val. Take advantage of shells that can avoid forks. The arguments
# must be portable across $(()) and expr.
-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null
+then :
eval 'as_fn_arith ()
{
as_val=$(( $* ))
}'
-else
+else $as_nop
as_fn_arith ()
{
as_val=`expr "$@" || test $? -eq 1`
$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
X"$0" : 'X\(//\)$' \| \
X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/"$0" |
+printf "%s\n" X/"$0" |
sed '/^.*\/\([^/][^/]*\)\/*$/{
s//\1/
q
as_cr_digits='0123456789'
as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+# Determine whether it's possible to make 'echo' print without a newline.
+# These variables are no longer used directly by Autoconf, but are AC_SUBSTed
+# for compatibility with existing Makefiles.
ECHO_C= ECHO_N= ECHO_T=
case `echo -n x` in #(((((
-n*)
ECHO_N='-n';;
esac
+# For backward compatibility with old third-party macros, we provide
+# the shell variables $as_echo and $as_echo_n. New code should use
+# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively.
+as_echo='printf %s\n'
+as_echo_n='printf %s'
+
rm -f conf$$ conf$$.exe conf$$.file
if test -d conf$$.dir; then
rm -f conf$$.dir/conf$$.file
as_dirs=
while :; do
case $as_dir in #(
- *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+ *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
*) as_qdir=$as_dir;;
esac
as_dirs="'$as_qdir' $as_dirs"
X"$as_dir" : 'X\(//\)[^/]' \| \
X"$as_dir" : 'X\(//\)$' \| \
X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
+printf "%s\n" X"$as_dir" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
s//\1/
q
# 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.5.2, which was
-generated by GNU Autoconf 2.69. Invocation command line was
+This file was extended by libarchive $as_me 3.7.2, which was
+generated by GNU Autoconf 2.71. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
CONFIG_HEADERS = $CONFIG_HEADERS
Report bugs to <libarchive-discuss@googlegroups.com>."
_ACEOF
+ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"`
+ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"`
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
+ac_cs_config='$ac_cs_config_escaped'
ac_cs_version="\\
-libarchive config.status 3.5.2
-configured by $0, generated by GNU Autoconf 2.69,
+libarchive config.status 3.7.2
+configured by $0, generated by GNU Autoconf 2.71,
with options \\"\$ac_cs_config\\"
-Copyright (C) 2012 Free Software Foundation, Inc.
+Copyright (C) 2021 Free Software Foundation, Inc.
This config.status script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it."
-recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
ac_cs_recheck=: ;;
--version | --versio | --versi | --vers | --ver | --ve | --v | -V )
- $as_echo "$ac_cs_version"; exit ;;
+ printf "%s\n" "$ac_cs_version"; exit ;;
--config | --confi | --conf | --con | --co | --c )
- $as_echo "$ac_cs_config"; exit ;;
+ printf "%s\n" "$ac_cs_config"; exit ;;
--debug | --debu | --deb | --de | --d | -d )
debug=: ;;
--file | --fil | --fi | --f )
$ac_shift
case $ac_optarg in
- *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
'') as_fn_error $? "missing file argument" ;;
esac
as_fn_append CONFIG_FILES " '$ac_optarg'"
--header | --heade | --head | --hea )
$ac_shift
case $ac_optarg in
- *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
esac
as_fn_append CONFIG_HEADERS " '$ac_optarg'"
ac_need_defaults=false;;
as_fn_error $? "ambiguous option: \`$1'
Try \`$0 --help' for more information.";;
--help | --hel | -h )
- $as_echo "$ac_cs_usage"; exit ;;
+ printf "%s\n" "$ac_cs_usage"; exit ;;
-q | -quiet | --quiet | --quie | --qui | --qu | --q \
| -silent | --silent | --silen | --sile | --sil | --si | --s)
ac_cs_silent=: ;;
if \$ac_cs_recheck; then
set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
shift
- \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
+ \printf "%s\n" "running CONFIG_SHELL=$SHELL \$*" >&6
CONFIG_SHELL='$SHELL'
export CONFIG_SHELL
exec "\$@"
sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## Running $as_me. ##
_ASBOX
- $as_echo "$ac_log"
+ printf "%s\n" "$ac_log"
} >&5
_ACEOF
# We use the long form for the default assignment because of an extremely
# bizarre bug on SunOS 4.1.3.
if $ac_need_defaults; then
- test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
- test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
- test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
+ test ${CONFIG_FILES+y} || CONFIG_FILES=$config_files
+ test ${CONFIG_HEADERS+y} || CONFIG_HEADERS=$config_headers
+ test ${CONFIG_COMMANDS+y} || CONFIG_COMMANDS=$config_commands
fi
# Have a temporary directory for convenience. Make it in the build tree
esac ||
as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
esac
- case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
+ case $ac_f in *\'*) ac_f=`printf "%s\n" "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
as_fn_append ac_file_inputs " '$ac_f'"
done
# use $as_me), people would be surprised to read:
# /* config.h. Generated by config.status. */
configure_input='Generated from '`
- $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
+ printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
`' by configure.'
if test x"$ac_file" != x-; then
configure_input="$ac_file. $configure_input"
- { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
-$as_echo "$as_me: creating $ac_file" >&6;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
+printf "%s\n" "$as_me: creating $ac_file" >&6;}
fi
# Neutralize special characters interpreted by sed in replacement strings.
case $configure_input in #(
*\&* | *\|* | *\\* )
- ac_sed_conf_input=`$as_echo "$configure_input" |
+ ac_sed_conf_input=`printf "%s\n" "$configure_input" |
sed 's/[\\\\&|]/\\\\&/g'`;; #(
*) ac_sed_conf_input=$configure_input;;
esac
X"$ac_file" : 'X\(//\)[^/]' \| \
X"$ac_file" : 'X\(//\)$' \| \
X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$ac_file" |
+printf "%s\n" X"$ac_file" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
s//\1/
q
case "$ac_dir" in
.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
*)
- ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+ ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'`
# A ".." for each directory in $ac_dir_suffix.
- ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+ ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
case $ac_top_builddir_sub in
"") ac_top_builddir_sub=. ac_top_build_prefix= ;;
*) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
*datarootdir*) ac_datarootdir_seen=yes;;
*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
-$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+printf "%s\n" "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_datarootdir_hack='
{ ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
{ ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \
"$ac_tmp/out"`; test -z "$ac_out"; } &&
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
which seems to be undefined. Please make sure it is defined" >&5
-$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+printf "%s\n" "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
which seems to be undefined. Please make sure it is defined" >&2;}
rm -f "$ac_tmp/stdin"
#
if test x"$ac_file" != x-; then
{
- $as_echo "/* $configure_input */" \
+ printf "%s\n" "/* $configure_input */" >&1 \
&& eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs"
} >"$ac_tmp/config.h" \
|| as_fn_error $? "could not create $ac_file" "$LINENO" 5
if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
-$as_echo "$as_me: $ac_file is unchanged" >&6;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
+printf "%s\n" "$as_me: $ac_file is unchanged" >&6;}
else
rm -f "$ac_file"
mv "$ac_tmp/config.h" "$ac_file" \
|| as_fn_error $? "could not create $ac_file" "$LINENO" 5
fi
else
- $as_echo "/* $configure_input */" \
+ printf "%s\n" "/* $configure_input */" >&1 \
&& eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \
|| as_fn_error $? "could not create -" "$LINENO" 5
fi
X"$_am_arg" : 'X\(//\)[^/]' \| \
X"$_am_arg" : 'X\(//\)$' \| \
X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$_am_arg" |
+printf "%s\n" X"$_am_arg" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
s//\1/
q
s/.*/./; q'`/stamp-h$_am_stamp_count
;;
- :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
-$as_echo "$as_me: executing $ac_file commands" >&6;}
+ :C) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
+printf "%s\n" "$as_me: executing $ac_file commands" >&6;}
;;
esac
for am_mf
do
# Strip MF so we end up with the name of the file.
- am_mf=`$as_echo "$am_mf" | sed -e 's/:.*$//'`
+ am_mf=`printf "%s\n" "$am_mf" | sed -e 's/:.*$//'`
# Check whether this is an Automake generated Makefile which includes
# dependency-tracking related rules and includes.
# Grep'ing the whole file directly is not great: AIX grep has a line
X"$am_mf" : 'X\(//\)[^/]' \| \
X"$am_mf" : 'X\(//\)$' \| \
X"$am_mf" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$am_mf" |
+printf "%s\n" X"$am_mf" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
s//\1/
q
$as_expr X/"$am_mf" : '.*/\([^/][^/]*\)/*$' \| \
X"$am_mf" : 'X\(//\)$' \| \
X"$am_mf" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/"$am_mf" |
+printf "%s\n" X/"$am_mf" |
sed '/^.*\/\([^/][^/]*\)\/*$/{
s//\1/
q
(exit $ac_status); } || am_rc=$?
done
if test $am_rc -ne 0; then
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "Something went wrong bootstrapping makefile fragments
- for automatic dependency tracking. Try re-running configure with the
+ for automatic dependency tracking. If GNU make was not used, consider
+ re-running the configure script with MAKE=\"gmake\" (or whatever is
+ necessary). You can also try re-running configure with the
'--disable-dependency-tracking' option to at least be able to build
the package (albeit without support for automatic dependency tracking).
See \`config.log' for more details" "$LINENO" 5; }
esac
+
ltmain=$ac_aux_dir/ltmain.sh
$ac_cs_success || as_fn_exit 1
fi
if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
-$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
+printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
fi
+
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.5.2])
-m4_define([LIBARCHIVE_VERSION_N],[3005002])
+m4_define([LIBARCHIVE_VERSION_S],[3.7.2])
+m4_define([LIBARCHIVE_VERSION_N],[3007002])
dnl bsdtar and bsdcpio versioning tracks libarchive
m4_define([BSDTAR_VERSION_S],LIBARCHIVE_VERSION_S())
m4_define([BSDCPIO_VERSION_S],LIBARCHIVE_VERSION_S())
m4_define([BSDCAT_VERSION_S],LIBARCHIVE_VERSION_S())
+m4_define([BSDUNZIP_VERSION_S],LIBARCHIVE_VERSION_S())
-AC_PREREQ([2.69])
+AC_PREREQ([2.71])
#
# Now starts the "real" configure script.
[Version number of bsdtar])
AC_DEFINE([BSDCAT_VERSION_STRING],"BSDTAR_VERSION_S()",
[Version number of bsdcat])
+AC_DEFINE([BSDUNZIP_VERSION_STRING],"BSDUNZIP_VERSION_S()",
+ [Version number of bsdunzip])
# 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
BSDCPIO_VERSION_STRING=BSDCPIO_VERSION_S()
BSDTAR_VERSION_STRING=BSDTAR_VERSION_S()
BSDCAT_VERSION_STRING=BSDCAT_VERSION_S()
+BSDUNZIP_VERSION_STRING=BSDUNZIP_VERSION_S()
LIBARCHIVE_VERSION_STRING=LIBARCHIVE_VERSION_S()
LIBARCHIVE_VERSION_NUMBER=LIBARCHIVE_VERSION_N()
AC_SUBST(BSDCPIO_VERSION_STRING)
AC_SUBST(BSDTAR_VERSION_STRING)
AC_SUBST(BSDCAT_VERSION_STRING)
+AC_SUBST(BSDUNZIP_VERSION_STRING)
AC_SUBST(LIBARCHIVE_VERSION_STRING)
AC_SUBST(LIBARCHIVE_VERSION_NUMBER)
dnl Defines that are required for specific platforms (e.g. -D_POSIX_SOURCE, etc)
PLATFORMCPPFLAGS=
case "$host_os" in
- *mingw* ) PLATFORMCPPFLAGS=-D__USE_MINGW_ANSI_STDIO ;;
+ *mingw* ) PLATFORMCPPFLAGS=-D__USE_MINGW_ANSI_STDIO -D__MINGW_USE_VC2005_COMPAT ;;
esac
AC_SUBST(PLATFORMCPPFLAGS)
# Checks for programs.
AC_PROG_CC
-AC_PROG_CC_C99
AM_PROG_CC_C_O
AC_PROG_CPP
AC_USE_SYSTEM_EXTENSIONS
;;
esac
+#
+# Options for building bsdunzip.
+#
+# Default is to build bsdunzip, but allow people to override that.
+# Bsdunzip has not yet been ported for Windows
+#
+case "$host_os" in
+ *mingw* | *msys*)
+ enable_bsdunzip=no
+ ;;
+ *)
+ AC_ARG_ENABLE([bsdunzip],
+ [AS_HELP_STRING([--enable-bsdunzip], [enable build of bsdunzip (default)])
+ AS_HELP_STRING([--enable-bsdunzip=static], [force static build of bsdunzip])
+ AS_HELP_STRING([--enable-bsdunzip=shared], [force dynamic build of bsdunzip])
+ AS_HELP_STRING([--disable-bsdunzip], [disable build of bsdunzip])],
+ [], [enable_bsdunzip=yes])
+ ;;
+esac
+
+case "$enable_bsdunzip" in
+yes)
+ if test "$enable_static" = "no"; then
+ static_bsdunzip=no
+ else
+ static_bsdunzip=yes
+ fi
+ build_bsdunzip=yes
+ ;;
+dynamic|shared)
+ if test "$enable_shared" = "no"; then
+ AC_MSG_FAILURE([Shared linking of bsdunzip requires shared libarchive])
+ fi
+ build_bsdunzip=yes
+ static_bsdunzip=no
+ ;;
+static)
+ build_bsdunzip=yes
+ static_bsdunzip=yes
+ ;;
+no)
+ build_bsdunzip=no
+ static_bsdunzip=no
+ ;;
+*)
+ AC_MSG_FAILURE([Unsupported value for --enable-bsdunzip])
+ ;;
+esac
+
+AM_CONDITIONAL([BUILD_BSDUNZIP], [ test "$build_bsdunzip" = yes ])
+AM_CONDITIONAL([STATIC_BSDUNZIP], [ test "$static_bsdunzip" = yes ])
+
# Checks for header files.
AC_HEADER_DIRENT
AC_HEADER_SYS_WAIT
AC_CHECK_HEADERS([acl/libacl.h attr/xattr.h])
AC_CHECK_HEADERS([copyfile.h ctype.h])
-AC_CHECK_HEADERS([errno.h ext2fs/ext2_fs.h fcntl.h grp.h])
+AC_CHECK_HEADERS([errno.h ext2fs/ext2_fs.h fcntl.h fnmatch.h grp.h])
AC_CACHE_CHECK([whether EXT2_IOC_GETFLAGS is usable],
[ac_cv_have_decl_EXT2_IOC_GETFLAGS],
AC_CHECK_HEADERS([readpassphrase.h signal.h spawn.h])
AC_CHECK_HEADERS([stdarg.h stdint.h stdlib.h string.h])
AC_CHECK_HEADERS([sys/acl.h sys/cdefs.h sys/ea.h sys/extattr.h])
-AC_CHECK_HEADERS([sys/ioctl.h sys/mkdev.h sys/mount.h])
+AC_CHECK_HEADERS([sys/ioctl.h sys/mkdev.h sys/mount.h sys/queue.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 sys/sysmacros.h])
AC_CHECK_HEADERS([sys/time.h sys/utime.h sys/utsname.h sys/vfs.h sys/xattr.h])
AC_CHECK_HEADERS([localcharset.h])
am_save_LIBS="$LIBS"
LIBS="${LIBS} ${LIBICONV}"
+ if test -n "$LIBICONV"; then
+ LIBSREQUIRED="$LIBSREQUIRED${LIBSREQUIRED:+ }iconv"
+ fi
AC_CHECK_FUNCS([locale_charset])
LIBS="${am_save_LIBS}"
if test "x$ac_cv_func_locale_charset" != "xyes"; then
if test "x$with_zstd" != "xno"; then
AC_CHECK_HEADERS([zstd.h])
- AC_CHECK_LIB(zstd,ZSTD_compressStream)
+ AC_CHECK_LIB(zstd,ZSTD_decompressStream)
+ AC_CHECK_LIB(zstd,ZSTD_compressStream,
+ AC_DEFINE([HAVE_LIBZSTD_COMPRESSOR], [1], [Define to 1 if you have the `zstd' library (-lzstd) with compression support.]))
fi
AC_ARG_WITH([lzma],
if test "x$ac_cv_lzma_has_mt" != xno; then
AC_DEFINE([HAVE_LZMA_STREAM_ENCODER_MT], [1], [Define to 1 if you have the `lzma_stream_encoder_mt' function.])
fi
+
+ AC_CACHE_CHECK(
+ [whether we have ARM64 filter support in lzma],
+ ac_cv_lzma_has_arm64,
+ [AC_LINK_IFELSE([
+ AC_LANG_PROGRAM([[#include <lzma.h>]
+ [#ifndef LZMA_FILTER_ARM64]
+ [#error unsupported]
+ [#endif]])],
+ [ac_cv_lzma_has_arm64=yes], [ac_cv_lzma_has_arm64=no])])
+ if test "x$ac_cv_lzma_has_arm64" != xno; then
+ AC_DEFINE([HAVE_LZMA_FILTER_ARM64], [1], [Define to 1 if you have the `LZMA_FILTER_ARM64' macro.])
+ fi
fi
AC_ARG_WITH([lzo2],
# Checks for supported compiler flags
AX_APPEND_COMPILE_FLAGS([-Wall -Wformat -Wformat-security])
+# Place the functions and data into separate sections, allowing the linker
+# to garbage collect the unused ones.
+save_LDFLAGS=$LDFLAGS
+LDFLAGS="$LDFLAGS -Wl,--gc-sections"
+AC_MSG_CHECKING([whether ld supports --gc-sections])
+AC_LINK_IFELSE(
+ [AC_LANG_SOURCE([static char UnusedFunc() { return 5; } int main() { return 0;}])],
+ [AC_MSG_RESULT([yes])
+ GC_SECTIONS="-Wl,--gc-sections";
+ AX_APPEND_COMPILE_FLAGS([-ffunction-sections -fdata-sections])],
+ [AC_MSG_RESULT([no])
+ GC_SECTIONS="";])
+LDFLAGS=$save_LDFLAGS
+
+AC_SUBST(GC_SECTIONS)
+
# Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST
# la_TYPE_UID_T defaults to "int", which is incorrect for MinGW
AC_CHECK_SIZEOF([wchar_t])],
[])
-AC_HEADER_TIME
+AX_COMPILE_CHECK_SIZEOF(int)
+AX_COMPILE_CHECK_SIZEOF(long)
+
+AC_CHECK_HEADERS_ONCE([sys/time.h])
# Checks for library functions.
AC_PROG_GCC_TRADITIONAL
# workarounds, we use 'void *' for 'struct SECURITY_ATTRIBUTES *'
AC_CHECK_STDCALL_FUNC([CreateHardLinkA],[const char *, const char *, void *])
AC_CHECK_FUNCS([arc4random_buf chflags chown chroot ctime_r])
-AC_CHECK_FUNCS([fchdir fchflags fchmod fchown fcntl fdopendir fork])
+AC_CHECK_FUNCS([fchdir fchflags fchmod fchown fcntl fdopendir fnmatch fork])
AC_CHECK_FUNCS([fstat fstatat fstatfs fstatvfs ftruncate])
AC_CHECK_FUNCS([futimens futimes futimesat])
-AC_CHECK_FUNCS([geteuid getpid getgrgid_r getgrnam_r])
+AC_CHECK_FUNCS([geteuid getline getpid getgrgid_r getgrnam_r])
AC_CHECK_FUNCS([getpwnam_r getpwuid_r getvfsbyname gmtime_r])
AC_CHECK_FUNCS([lchflags lchmod lchown link linkat localtime_r lstat lutimes])
AC_CHECK_FUNCS([mbrtowc memmove memset])
AC_CHECK_FUNCS([strchr strdup strerror strncpy_s strnlen strrchr symlink])
AC_CHECK_FUNCS([timegm tzset unlinkat unsetenv utime utimensat utimes vfork])
AC_CHECK_FUNCS([wcrtomb wcscmp wcscpy wcslen wctomb wmemcmp wmemcpy wmemmove])
-AC_CHECK_FUNCS([_ctime64_s _fseeki64])
-AC_CHECK_FUNCS([_get_timezone _gmtime64_s _localtime64_s _mkgmtime64])
+AC_CHECK_FUNCS([_fseeki64 _get_timezone])
+AC_CHECK_DECL([cmtime_s],
+ [AC_DEFINE(HAVE_CMTIME_S, 1, [cmtime_s function])],
+ [],
+ [#include <time.h>])
+AC_CHECK_DECL([gmtime_s],
+ [AC_DEFINE(HAVE_GMTIME_S, 1, [gmtime_s function])],
+ [],
+ [#include <time.h>])
+AC_CHECK_TYPE([localtime_s],
+ [AC_DEFINE(HAVE_LOCALTIME_S, 1, [localtime_s function])],
+ [],
+ [#include <time.h>])
+AC_CHECK_DECL([_mkgmtime],
+ [AC_DEFINE(HAVE__MKGMTIME, 1, [_mkgmtime function])],
+ [],
+ [#include <time.h>])
+
# detects cygwin-1.7, as opposed to older versions
AC_CHECK_FUNCS([cygwin_conv_path])
# There are several variants of readdir_r around; we only
# accept the POSIX-compliant version.
-AC_COMPILE_IFELSE(
+AC_LINK_IFELSE(
[AC_LANG_PROGRAM([[#include <dirent.h>]],
[[DIR *dir; struct dirent e, *r;
return(readdir_r(dir, &e, &r));]])],
[AC_DEFINE(HAVE_READDIR_R,1,[Define to 1 if you have a POSIX compatible readdir_r])]
)
# dirfd can be either a function or a macro.
-AC_COMPILE_IFELSE(
+AC_LINK_IFELSE(
[AC_LANG_PROGRAM([[#include <dirent.h>
DIR *dir;]],
[[return(dirfd(dir));]])],
if test "x$with_openssl" != "xno"; then
AC_CHECK_HEADERS([openssl/evp.h])
saved_LIBS=$LIBS
- case "$host_os" in
- *mingw* | *cygwin* | *msys*)
- case "$host_cpu" in
- x86_64)
- AC_CHECK_LIB(eay64,OPENSSL_config)
- if test "x$ac_cv_lib_eay64_main" != "xyes"; then
- AC_CHECK_LIB(eay32,OPENSSL_config)
- fi
- ;;
- *)
- AC_CHECK_LIB(eay32,OPENSSL_config)
- ;;
- esac
- ;;
- *)
- AC_CHECK_LIB(crypto,OPENSSL_config)
- ;;
- esac
+ LIBSREQUIRED="$LIBSREQUIRED${LIBSREQUIRED:+ }libcrypto"
+ AC_CHECK_LIB(crypto,OPENSSL_config)
CRYPTO_CHECK(MD5, OPENSSL, md5)
CRYPTO_CHECK(RMD160, OPENSSL, rmd160)
CRYPTO_CHECK(SHA1, OPENSSL, sha1)
AC_CHECK_FUNCS([PKCS5_PBKDF2_HMAC_SHA1])
fi
+AC_SUBST(LIBSREQUIRED)
+
# Probe libmd AFTER OpenSSL/libcrypto.
# The two are incompatible and OpenSSL is more complete.
AC_CHECK_HEADERS([md5.h ripemd.h sha.h sha256.h sha512.h])
;;
esac
+dnl Visibility annotations...
+saved_CFLAGS="$CFLAGS"
+CFLAGS="$CFLAGS -fvisibility=hidden -Werror"
+AC_MSG_CHECKING(whether compiler supports visibility annotations)
+AC_LINK_IFELSE([AC_LANG_PROGRAM([
+ int foo( void ) __attribute__((visibility("default")));
+ ])],
+ [CFLAGS="$saved_CFLAGS -fvisibility=hidden -D__LIBARCHIVE_ENABLE_VISIBILITY";
+ AC_MSG_RESULT(yes)],
+ [CFLAGS="$saved_CFLAGS"
+ AC_MSG_RESULT(no)])
+
# Ensure test directories are present if building out-of-tree
AC_CONFIG_COMMANDS([mkdirs],
[mkdir -p libarchive/test tar/test cat/test cpio/test])
#define SIZEOF_WCHAR_T 4
#define STDC_HEADERS 1
#define STRERROR_R_CHAR_P 1
-#define TIME_WITH_SYS_TIME 1
+#define HAVE_SYS_TIME_H 1
#endif
#define SIZEOF_WCHAR_T 4
#define STDC_HEADERS 1
#define STRERROR_R_CHAR_P 1
-#define TIME_WITH_SYS_TIME 1
+#define HAVE_SYS_TIME_H 1
#define _GNU_SOURCE 1
#endif
/* Define to 1 if you have the <attr/xattr.h> header file. */
/* #undef HAVE_ATTR_XATTR_H */
-/* Define to 1 if you have the <Bcrypt.h> header file. */
+/* Define to 1 if you have the <bcrypt.h> header file. */
#define HAVE_BCRYPT_H
/* Define to 1 if you have the <bzlib.h> header file. */
/* Define to 1 if you have the <zlib.h> header file. */
/* #undef HAVE_ZLIB_H */
-/* Define to 1 if you have the `_ctime64_s' function. */
-#define HAVE__CTIME64_S 1
+/* Define to 1 if you have the `ctime_s' function. */
+#define HAVE_CTIME_S 1
/* Define to 1 if you have the `_fseeki64' function. */
#define HAVE__FSEEKI64 1
/* Define to 1 if you have the `_get_timezone' function. */
/* #undef HAVE__GET_TIMEZONE */
-/* Define to 1 if you have the `_localtime64_s' function. */
-#define HAVE__LOCALTIME64_S 1
+/* Define to 1 if you have the `localtime_s' function. */
+#define HAVE_LOCALTIME_S 1
-/* Define to 1 if you have the `_mkgmtime64' function. */
-/* #define HAVE__MKGMTIME64 1 */
+/* Define to 1 if you have the `_mkgmtime' function. */
+/* #define HAVE__MKGMTIME 1 */
/* Define as const if the declaration of iconv() needs const. */
/* #undef ICONV_CONST */
/* #undef STRERROR_R_CHAR_P */
/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
-#define TIME_WITH_SYS_TIME 1
+#define HAVE_SYS_TIME_H 1
" -f filename Filename to verify\n"
" -h Show this help\n"
" -q Quiet mode\n"
+ " -r Enforce raw archive format\n"
" -s Verify only headers (skip data)\n\n"
"If no filename is specified, data is read from standard input.\n"
"\n%s\n", archive_version_details());
const char *p;
char buffer[4096];
int c;
- int v, skip_data;
+ int v, skip_data, raw;
int r = ARCHIVE_OK;
int format_printed;
+ mode_t mode;
filename = NULL;
skip_data = 0;
+ raw = 0;
v = 1;
- while ((c = getopt (argc, argv, "f:hqs")) != -1) {
+ while ((c = getopt (argc, argv, "f:hrqs")) != -1) {
switch (c) {
case 'f':
filename = optarg;
case 'q':
v = 0;
break;
+ case 'r':
+ raw = 1;
+ break;
case 's':
skip_data = 1;
break;
a = archive_read_new();
archive_read_support_filter_all(a);
- archive_read_support_format_all(a);
+ if (raw)
+ archive_read_support_format_raw(a);
+ else
+ archive_read_support_format_all(a);
v_print(v, "Data source: ");
if (r == ARCHIVE_EOF)
break;
p = archive_entry_pathname(entry);
+ mode = archive_entry_mode(entry);
v_print(v, "Entry %d: %s, pathname", c, errnostr(r));
if (p == NULL || p[0] == '\0')
v_print(v, " unreadable");
else
v_print(v, ": %s", p);
+ v_print(v, ", mode: %o", mode);
v_print(v, ", data: ");
if (skip_data) {
v_print(v, "skipping");
} else {
- while ((r = archive_read_data(a, buffer, 4096) > 0))
+ while ((r = archive_read_data(a, buffer, 4096)) > 0)
;
if (r == ARCHIVE_FATAL) {
v_print(v, "ERROR\nError string: %s\n",
/* This is for mkdir(); this may need to be changed for some platforms. */
#include <sys/stat.h> /* For mkdir() */
+#if defined(_WIN32) && !defined(__CYGWIN__)
+#define NUM_FORMAT "zu"
+#include <direct.h>
+#elif defined(__linux__) || defined(linux) || defined(__linux)
+#define NUM_FORMAT "d"
+#else
+#define NUM_FORMAT "lu"
+#endif /* defined(_WIN32) && !defined(__CYGWIN__) */
+
+#define TO_STRING(x) #x
+#define STR(x) TO_STRING(x)
+
/* Parse an octal number, ignoring leading and trailing nonsense. */
static int
parseoct(const char *p, size_t n)
pathname[strlen(pathname) - 1] = '\0';
/* Try creating the directory. */
+#if defined(_WIN32) && !defined(__CYGWIN__)
+ r = _mkdir(pathname);
+#else
r = mkdir(pathname, mode);
+#endif
if (r != 0) {
/* On failure, try creating parent directory. */
*p = '\0';
create_dir(pathname, 0755);
*p = '/';
+#if defined(_WIN32) && !defined(__CYGWIN__)
+ r = _mkdir(pathname);
+#else
r = mkdir(pathname, mode);
+#endif
}
}
if (r != 0)
static void
untar(FILE *a, const char *path)
{
- char buff[512];
+ enum { BUF_SIZE=512 };
+ char buff[BUF_SIZE];
FILE *f = NULL;
size_t bytes_read;
- int filesize;
+ off_t filesize;
printf("Extracting from %s\n", path);
for (;;) {
- bytes_read = fread(buff, 1, 512, a);
- if (bytes_read < 512) {
+ bytes_read = fread(buff, 1, BUF_SIZE, a);
+ if (bytes_read < BUF_SIZE) {
fprintf(stderr,
- "Short read on %s: expected 512, got %d\n",
- path, (int)bytes_read);
+ "Short read on %s: expected " STR(BUF_SIZE) ", got %"NUM_FORMAT"\n",
+ path, bytes_read);
return;
}
if (is_end_of_archive(buff)) {
}
filesize = parseoct(buff + 124, 12);
switch (buff[156]) {
- case '1':
- printf(" Ignoring hardlink %s\n", buff);
- break;
- case '2':
- printf(" Ignoring symlink %s\n", buff);
- break;
- case '3':
- printf(" Ignoring character device %s\n", buff);
+ case '1':
+ printf(" Ignoring hardlink %s\n", buff);
+ break;
+ case '2':
+ printf(" Ignoring symlink %s\n", buff);
+ break;
+ case '3':
+ printf(" Ignoring character device %s\n", buff);
+ break;
+ case '4':
+ printf(" Ignoring block device %s\n", buff);
+ break;
+ case '5':
+ printf(" Extracting dir %s\n", buff);
+ create_dir(buff, parseoct(buff + 100, 8));
+ filesize = 0;
+ break;
+ case '6':
+ printf(" Ignoring FIFO %s\n", buff);
+ break;
+ default:
+ printf(" Extracting file %s\n", buff);
+ f = create_file(buff, parseoct(buff + 100, 8));
break;
- case '4':
- printf(" Ignoring block device %s\n", buff);
- break;
- case '5':
- printf(" Extracting dir %s\n", buff);
- create_dir(buff, parseoct(buff + 100, 8));
- filesize = 0;
- break;
- case '6':
- printf(" Ignoring FIFO %s\n", buff);
- break;
- default:
- printf(" Extracting file %s\n", buff);
- f = create_file(buff, parseoct(buff + 100, 8));
- break;
}
while (filesize > 0) {
- bytes_read = fread(buff, 1, 512, a);
- if (bytes_read < 512) {
+ bytes_read = fread(buff, 1, BUF_SIZE, a);
+ if (bytes_read < BUF_SIZE) {
fprintf(stderr,
- "Short read on %s: Expected 512, got %d\n",
- path, (int)bytes_read);
+ "Short read on %s: Expected " STR(BUF_SIZE) ", got %"NUM_FORMAT"\n",
+ path, bytes_read);
return;
}
- if (filesize < 512)
+ if (filesize < BUF_SIZE)
bytes_read = filesize;
if (f != NULL) {
if (fwrite(buff, 1, bytes_read, f)
- != bytes_read)
+ != bytes_read)
{
fprintf(stderr, "Failed write\n");
fclose(f);
f = NULL;
}
}
- filesize -= bytes_read;
+ filesize -= (off_t)bytes_read;
}
if (f != NULL) {
fclose(f);
archive_match_free(cpio->matching);
free_cache(cpio->gname_cache);
free_cache(cpio->uname_cache);
+ archive_read_close(cpio->archive_read_disk);
+ archive_read_free(cpio->archive_read_disk);
free(cpio->destdir);
passphrase_free(cpio->ppbuff);
return (cpio->return_value);
{
char size[32];
char date[32];
- char uids[16], gids[16];
+ char uids[22], gids[22];
const char *uname, *gname;
FILE *out = stdout;
const char *fmt;
time_t mtime;
static time_t now;
struct tm *ltime;
-#if defined(HAVE_LOCALTIME_R) || defined(HAVE__LOCALTIME64_S)
+#if defined(HAVE_LOCALTIME_R) || defined(HAVE_LOCALTIME_S)
struct tm tmbuf;
#endif
-#if defined(HAVE__LOCALTIME64_S)
- errno_t terr;
- __time64_t tmptime;
-#endif
if (!now)
time(&now);
else
fmt = cpio->day_first ? "%e %b %H:%M" : "%b %e %H:%M";
#endif
-#if defined(HAVE_LOCALTIME_R)
+#if defined(HAVE_LOCALTIME_S)
+ ltime = localtime_s(&tmbuf, &mtime) ? NULL : &tmbuf;
+#elif defined(HAVE_LOCALTIME_R)
ltime = localtime_r(&mtime, &tmbuf);
-#elif defined(HAVE__LOCALTIME64_S)
- tmptime = mtime;
- terr = _localtime64_s(&tmbuf, &tmptime);
- if (terr)
- ltime = NULL;
- else
- ltime = &tmbuf;
#else
ltime = localtime(&mtime);
#endif
- strftime(date, sizeof(date), fmt, ltime);
+ if (ltime != NULL)
+ strftime(date, sizeof(date), fmt, ltime);
+ else
+ strcpy(date, "invalid mtime");
fprintf(out, "%s%3d %-8s %-8s %8s %12s %s",
archive_entry_strmode(entry),
{
wchar_t *wpath;
HANDLE handle;
+# if _WIN32_WINNT >= 0x0602 /* _WIN32_WINNT_WIN8 */
+ CREATEFILE2_EXTENDED_PARAMETERS createExParams;
+#endif
+#if !defined(WINAPI_FAMILY_PARTITION) || WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
handle = CreateFileA(path, dwDesiredAccess, dwShareMode,
lpSecurityAttributes, dwCreationDisposition, dwFlagsAndAttributes,
hTemplateFile);
return (handle);
if (GetLastError() != ERROR_PATH_NOT_FOUND)
return (handle);
+#endif
wpath = permissive_name(path);
if (wpath == NULL)
- return (handle);
+ return INVALID_HANDLE_VALUE;
+# if _WIN32_WINNT >= 0x0602 /* _WIN32_WINNT_WIN8 */
+ ZeroMemory(&createExParams, sizeof(createExParams));
+ createExParams.dwSize = sizeof(createExParams);
+ createExParams.dwFileAttributes = dwFlagsAndAttributes & 0xFFFF;
+ createExParams.dwFileFlags = dwFlagsAndAttributes & 0xFFF00000;
+ createExParams.dwSecurityQosFlags = dwFlagsAndAttributes & 0x000F0000;
+ createExParams.lpSecurityAttributes = lpSecurityAttributes;
+ createExParams.hTemplateFile = hTemplateFile;
+ handle = CreateFile2(wpath, dwDesiredAccess, dwShareMode,
+ dwCreationDisposition, &createExParams);
+#else
handle = CreateFileW(wpath, dwDesiredAccess, dwShareMode,
lpSecurityAttributes, dwCreationDisposition, dwFlagsAndAttributes,
hTemplateFile);
+#endif
free(wpath);
return (handle);
}
if (strstr(p, "compression not available") != NULL) {
skipping("This version of bsdcpio was compiled "
"without xz support");
+ free(p);
return;
}
failure("-J option is broken");
return (1);
}
-static int
+static long long int
from_octal(const char *p, size_t l)
{
- int r = 0;
+ long long int r = 0;
while (l > 0) {
r *= 8;
assertEqualInt(from_octal(e + 24, 6), uid); /* uid */
assertEqualInt(gid, from_octal(e + 30, 6)); /* gid */
assertEqualMem(e + 36, "000001", 6); /* nlink */
- failure("file entries should have rdev == 0 (dev was 0%o)",
+ failure("file entries should have rdev == 0 (dev was 0%llo)",
from_octal(e + 6, 6));
assertEqualMem(e + 42, "000000", 6); /* rdev */
t = from_octal(e + 48, 11); /* mtime */
time_t mtime;
char date[32];
char date2[32];
+ struct tm *tmptr;
+#if defined(HAVE_LOCALTIME_R) || defined(HAVE_LOCALTIME_S)
+ struct tm tmbuf;
+#endif
/* List reference archive, make sure the TOC is correct. */
extract_reference_file("test_option_t.cpio");
#ifdef HAVE_LOCALE_H
setlocale(LC_ALL, "");
#endif
+#if defined(HAVE_LOCALTIME_S)
+ tmptr = localtime_s(&tmbuf, &mtime) ? NULL : &tmbuf;
+#elif defined(HAVE_LOCALTIME_R)
+ tmptr = localtime_r(&mtime, &tmbuf);
+#else
+ tmptr = localtime(&mtime);
+#endif
#if defined(_WIN32) && !defined(__CYGWIN__)
- strftime(date2, sizeof(date2)-1, "%b %d %Y", localtime(&mtime));
+ strftime(date2, sizeof(date2)-1, "%b %d %Y", tmptr);
_snprintf(date, sizeof(date)-1, "%12.12s file", date2);
#else
- strftime(date2, sizeof(date2)-1, "%b %e %Y", localtime(&mtime));
+ strftime(date2, sizeof(date2)-1, "%b %e %Y", tmptr);
snprintf(date, sizeof(date)-1, "%12.12s file", date2);
#endif
assertEqualMem(p + 42, date, strlen(date));
<!-- Creator : groff version 1.22.4 -->
-<!-- CreationDate: Sun Aug 22 23:03:24 2021 -->
+<!-- CreationDate: Mon Sep 11 22:06:18 2023 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- Creator : groff version 1.22.4 -->
-<!-- CreationDate: Sun Aug 22 23:03:24 2021 -->
+<!-- CreationDate: Mon Sep 11 22:06:18 2023 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- Creator : groff version 1.22.4 -->
-<!-- CreationDate: Sun Aug 22 23:03:24 2021 -->
+<!-- CreationDate: Mon Sep 11 22:06:18 2023 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- Creator : groff version 1.22.4 -->
-<!-- CreationDate: Sun Aug 22 23:03:24 2021 -->
+<!-- CreationDate: Mon Sep 11 22:06:18 2023 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- Creator : groff version 1.22.4 -->
-<!-- CreationDate: Sun Aug 22 23:03:25 2021 -->
+<!-- CreationDate: Mon Sep 11 22:06:18 2023 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- Creator : groff version 1.22.4 -->
-<!-- CreationDate: Sun Aug 22 23:03:25 2021 -->
+<!-- CreationDate: Mon Sep 11 22:06:18 2023 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- Creator : groff version 1.22.4 -->
-<!-- CreationDate: Sun Aug 22 23:03:25 2021 -->
+<!-- CreationDate: Mon Sep 11 22:06:19 2023 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- Creator : groff version 1.22.4 -->
-<!-- CreationDate: Sun Aug 22 23:03:25 2021 -->
+<!-- CreationDate: Mon Sep 11 22:06:19 2023 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- Creator : groff version 1.22.4 -->
-<!-- CreationDate: Sun Aug 22 23:03:25 2021 -->
+<!-- CreationDate: Mon Sep 11 22:06:19 2023 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- Creator : groff version 1.22.4 -->
-<!-- CreationDate: Sun Aug 22 23:03:25 2021 -->
+<!-- CreationDate: Mon Sep 11 22:06:19 2023 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- Creator : groff version 1.22.4 -->
-<!-- CreationDate: Sun Aug 22 23:03:25 2021 -->
+<!-- CreationDate: Mon Sep 11 22:06:19 2023 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- Creator : groff version 1.22.4 -->
-<!-- CreationDate: Sun Aug 22 23:03:25 2021 -->
+<!-- CreationDate: Mon Sep 11 22:06:19 2023 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<p style="margin-top: 1em"><b>NAME</b></p>
<p style="margin-left:6%;"><b>archive_read_disk_new</b>,
+<b>archive_read_disk_open</b>,
+<b>archive_read_disk_open_w</b>,
<b>archive_read_disk_set_behavior</b>,
<b>archive_read_disk_set_symlink_logical</b>,
<b>archive_read_disk_set_symlink_physical</b>,
<b>archive_read_disk_uname</b>,
<b>archive_read_disk_set_uname_lookup</b>,
<b>archive_read_disk_set_gname_lookup</b>,
-<b>archive_read_disk_set_standard_lookup</b> —
-functions for reading objects from disk</p>
+<b>archive_read_disk_set_standard_lookup</b>,
+<b>archive_read_disk_descend</b>,
+<b>archive_read_disk_can_descend</b>,
+<b>archive_read_disk_current_filesystem</b>,
+<b>archive_read_disk_current_filesystem_is_synthetic</b>,
+<b>archive_read_disk_current_filesystem_is_remote</b>,
+<b>archive_read_disk_set_matching</b>,
+<b>archive_read_disk_set_metadata_filter_callback</b>,
+— functions for reading objects from disk</p>
<p style="margin-top: 1em"><b>LIBRARY</b></p>
<p style="margin-left:6%; margin-top: 1em"><i>int</i></p>
+<p style="margin-left:12%;"><b>archive_read_disk_open</b>(<i>struct archive *</i>,
+<i>const char *</i>);</p>
+
+<p style="margin-left:6%; margin-top: 1em"><i>int</i></p>
+
+
+<p style="margin-left:12%;"><b>archive_read_disk_open_w</b>(<i>struct archive *</i>,
+<i>const wchar_t *</i>);</p>
+
+<p style="margin-left:6%; margin-top: 1em"><i>int</i></p>
+
+
<p style="margin-left:12%;"><b>archive_read_disk_set_behavior</b>(<i>struct archive *</i>,
<i>int</i>);</p>
<i>struct archive_entry *</i>, <i>int fd</i>,
<i>const struct stat *</i>);</p>
+<p style="margin-left:6%; margin-top: 1em"><i>int</i></p>
+
+
+<p style="margin-left:12%;"><b>archive_read_disk_descend</b>(<i>struct archive *</i>);</p>
+
+<p style="margin-left:6%; margin-top: 1em"><i>int</i></p>
+
+
+<p style="margin-left:12%;"><b>archive_read_disk_can_descend</b>(<i>struct archive *</i>);</p>
+
+<p style="margin-left:6%; margin-top: 1em"><i>int</i></p>
+
+
+<p style="margin-left:12%;"><b>archive_read_disk_current_filesystem</b>(<i>struct archive *</i>);</p>
+
+<p style="margin-left:6%; margin-top: 1em"><i>int</i></p>
+
+
+<p style="margin-left:12%;"><b>archive_read_disk_current_filesystem_is_synthetic</b>(<i>struct archive *</i>);</p>
+
+<p style="margin-left:6%; margin-top: 1em"><i>int</i></p>
+
+
+<p style="margin-left:12%;"><b>archive_read_disk_current_filesystem_is_remote</b>(<i>struct archive *</i>);</p>
+
+<p style="margin-left:6%; margin-top: 1em"><i>int</i></p>
+
+
+<p><b>archive_read_disk_set_matching</b>(<i>struct archive *</i>,
+<i>struct archive *</i>,
+<i>void (*excluded_func)(struct archive *, void *, struct archive entry *)</i>,
+<i>void *</i>);</p>
+
+<p style="margin-left:6%; margin-top: 1em"><i>int</i></p>
+
+
+<p><b>archive_read_disk_set_metadata_filter_callback</b>(<i>struct archive *</i>,
+<i>int (*metadata_filter_func)(struct archive *, void*, struct archive_entry *)</i>,
+<i>void *</i>);</p>
+
<p style="margin-top: 1em"><b>DESCRIPTION</b></p>
<p style="margin-left:6%;">These functions provide an API
information from disk.</p>
+<p style="margin-top: 1em"><b>archive_read_disk_open</b>()</p>
+
+<p style="margin-left:17%;">Opens the file or directory
+from the given path and prepares the struct archive to read
+it from disk.</p>
+
+
+<p style="margin-top: 1em"><b>archive_read_disk_open_w</b>()</p>
+
+<p style="margin-left:17%;">Opens the file or directory
+from the given path as a wide character string and prepares
+the struct archive to read it from disk.</p>
+
+
<p style="margin-top: 1em"><b>archive_read_disk_set_behavior</b>()</p>
<p style="margin-left:17%;">Configures various behavior
traversed files. By default, access time of traversed files
is not restored.</p>
+<p><b>ARCHIVE_READDISK_NO_SPARSE</b></p>
+
+<p style="margin-left:27%;">Do not read sparse file
+information. By default, sparse file information is read
+from disk.</p>
+
<p style="margin-top: 1em"><b>archive_read_disk_set_symlink_logical</b>(),
<b>archive_read_disk_set_symlink_physical</b>(),
above. This affects the file ownership fields and ACL values
in the struct archive_entry object.</p>
+
+<p style="margin-top: 1em"><b>archive_read_disk_descend</b>()</p>
+
+<p style="margin-left:17%;">If the current entry can be
+descended, this function will mark the directory as the next
+entry for archive_read_header(3) to visit.</p>
+
+
+<p style="margin-top: 1em"><b>archive_read_disk_can_descend</b>()</p>
+
+<p style="margin-left:17%;">Returns 1 if the current entry
+is an unvisited directory and 0 otherwise.</p>
+
+
+<p style="margin-top: 1em"><b>archive_read_disk_current_filesystem</b>()</p>
+
+<p style="margin-left:17%;">Returns the index of the most
+recent filesystem entry that has been visited through
+archive_read_disk</p>
+
+
+<p style="margin-top: 1em"><b>archive_read_disk_current_filesystem_is_synthetic</b>()</p>
+
+<p style="margin-left:17%;">Returns 1 if the current
+filesystem is a virtual filesystem. Returns 0 if the current
+filesystem is not a virtual filesystem. Returns -1 if it is
+unknown.</p>
+
+
+<p style="margin-top: 1em"><b>archive_read_disk_current_filesystem_is_remote</b>()</p>
+
+<p style="margin-left:17%;">Returns 1 if the current
+filesystem is a remote filesystem. Returns 0 if the current
+filesystem is not a remote filesystem. Returns -1 if it is
+unknown.</p>
+
+
+<p style="margin-top: 1em"><b>archive_read_disk_set_matching</b>()</p>
+
+<p style="margin-left:17%;">Allows the caller to set struct
+archive *_ma to compare each entry during
+archive_read_header(3) calls. If matched based on calls to
+archive_match_path_excluded, archive_match_time_excluded, or
+archive_match_owner_excluded, then the callback function
+specified by the _excluded_func parameter will execute. This
+function will recieve data provided to the fourth parameter,
+void *_client_data.</p>
+
+
+<p style="margin-top: 1em"><b>archive_read_disk_set_metadata_filter_callback</b>()</p>
+
+<p style="margin-left:17%;">Allows the caller to set a
+callback function during calls to archive_read_header(3) to
+filter out metadata for each entry. The callback function
+recieves the struct archive object, void* custom filter
+data, and the struct archive_entry. If the callback function
+returns an error, ARCHIVE_RETRY will be returned and the
+entry will not be further processed.</p>
+
<p style="margin-left:6%;">More information about the
<i>struct archive</i> object and the overall design of the
library can be found in the libarchive(3) overview.</p>
<!-- Creator : groff version 1.22.4 -->
-<!-- CreationDate: Sun Aug 22 23:03:25 2021 -->
+<!-- CreationDate: Mon Sep 11 22:06:19 2023 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- Creator : groff version 1.22.4 -->
-<!-- CreationDate: Sun Aug 22 23:03:25 2021 -->
+<!-- CreationDate: Mon Sep 11 22:06:19 2023 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- Creator : groff version 1.22.4 -->
-<!-- CreationDate: Sun Aug 22 23:03:26 2021 -->
+<!-- CreationDate: Mon Sep 11 22:06:19 2023 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- Creator : groff version 1.22.4 -->
-<!-- CreationDate: Sun Aug 22 23:03:26 2021 -->
+<!-- CreationDate: Mon Sep 11 22:06:19 2023 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- Creator : groff version 1.22.4 -->
-<!-- CreationDate: Sun Aug 22 23:03:26 2021 -->
+<!-- CreationDate: Mon Sep 11 22:06:19 2023 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- Creator : groff version 1.22.4 -->
-<!-- CreationDate: Sun Aug 22 23:03:26 2021 -->
+<!-- CreationDate: Mon Sep 11 22:06:20 2023 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- Creator : groff version 1.22.4 -->
-<!-- CreationDate: Sun Aug 22 23:03:26 2021 -->
+<!-- CreationDate: Mon Sep 11 22:06:20 2023 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- Creator : groff version 1.22.4 -->
-<!-- CreationDate: Sun Aug 22 23:03:26 2021 -->
+<!-- CreationDate: Mon Sep 11 22:06:20 2023 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
contents of the first concatenated archive would be
read.</p>
+<p>Format zip <b><br>
+compat-2x</b></p>
+
+<p style="margin-left:27%;">Libarchive 2.x incorrectly
+encoded Unicode filenames on some platforms. This option
+mimics the libarchive 2.x filename handling so that such
+archives can be read correctly.</p>
+
+<p><b>hdrcharset</b></p>
+
+<p style="margin-left:27%;">The value is used as a
+character set name that will be used when translating file
+names.</p>
+
+<p><b>ignorecrc32</b></p>
+
+<p style="margin-left:27%;">Skip the CRC32 check. Mostly
+used for testing.</p>
+
+<p><b>mac-ext</b></p>
+
+<p style="margin-left:27%;">Support Mac OS metadata
+extension that records data in special files beginning with
+a period and underscore. Defaults to enabled on Mac OS,
+disabled on other platforms. Use <b>!mac-ext</b> to
+disable.</p>
+
<p style="margin-top: 1em"><b>ERRORS</b></p>
<p style="margin-left:6%;">Detailed error codes and textual
<!-- Creator : groff version 1.22.4 -->
-<!-- CreationDate: Sun Aug 22 23:03:26 2021 -->
+<!-- CreationDate: Mon Sep 11 22:06:20 2023 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- Creator : groff version 1.22.4 -->
-<!-- CreationDate: Sun Aug 22 23:03:26 2021 -->
+<!-- CreationDate: Mon Sep 11 22:06:20 2023 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- Creator : groff version 1.22.4 -->
-<!-- CreationDate: Sun Aug 22 23:03:26 2021 -->
+<!-- CreationDate: Mon Sep 11 22:06:20 2023 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- Creator : groff version 1.22.4 -->
-<!-- CreationDate: Sun Aug 22 23:03:26 2021 -->
+<!-- CreationDate: Mon Sep 11 22:06:20 2023 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- Creator : groff version 1.22.4 -->
-<!-- CreationDate: Sun Aug 22 23:03:26 2021 -->
+<!-- CreationDate: Mon Sep 11 22:06:20 2023 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
This is intended to help guard against a variety of mischief
caused by archives that (deliberately or otherwise) extract
files outside of the current directory. The default is not
-to perform this check. If</p>
+to perform this check. If <b>ARCHIVE_EXTRACT_UNLINK</b> is
+specified together with this option, the library will remove
+any intermediate symlinks it finds and return an error only
+if such symlink could not be removed.</p>
<p><b>ARCHIVE_EXTRACT_SPARSE</b></p>
<p style="margin-left:27%;">Scan data for blocks of NUL
bytes and try to recreate them with holes. This results in
sparse files, independent of whether the archive format
-supports or uses them. <b>ARCHIVE_EXTRACT_UNLINK</b> is
-specified together with this option, the library will remove
-any intermediate symlinks it finds and return an error only
-if such symlink could not be removed.</p>
+supports or uses them.</p>
<p><b>ARCHIVE_EXTRACT_TIME</b></p>
<!-- Creator : groff version 1.22.4 -->
-<!-- CreationDate: Sun Aug 22 23:03:26 2021 -->
+<!-- CreationDate: Mon Sep 11 22:06:20 2023 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- Creator : groff version 1.22.4 -->
-<!-- CreationDate: Sun Aug 22 23:03:26 2021 -->
+<!-- CreationDate: Mon Sep 11 22:06:20 2023 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- Creator : groff version 1.22.4 -->
-<!-- CreationDate: Sun Aug 22 23:03:26 2021 -->
+<!-- CreationDate: Mon Sep 11 22:06:20 2023 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- Creator : groff version 1.22.4 -->
-<!-- CreationDate: Sun Aug 22 23:03:26 2021 -->
+<!-- CreationDate: Mon Sep 11 22:06:20 2023 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- Creator : groff version 1.22.4 -->
-<!-- CreationDate: Sun Aug 22 23:03:27 2021 -->
+<!-- CreationDate: Mon Sep 11 22:06:20 2023 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- Creator : groff version 1.22.4 -->
-<!-- CreationDate: Sun Aug 22 23:03:27 2021 -->
+<!-- CreationDate: Mon Sep 11 22:06:21 2023 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- Creator : groff version 1.22.4 -->
-<!-- CreationDate: Sun Aug 22 23:03:27 2021 -->
+<!-- CreationDate: Mon Sep 11 22:06:21 2023 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
close callback is not invoked. The callback should return
<b>ARCHIVE_OK</b> on success. On failure, the callback
should invoke <b>archive_set_error</b>() to register an
-error code and message and return</p>
+error code and message and return <b>ARCHIVE_FATAL</b>.</p>
<p style="margin-left:14%; margin-top: 1em"><i>typedef
int</i> <b>archive_free_callback</b>(<i>struct archive
<!-- Creator : groff version 1.22.4 -->
-<!-- CreationDate: Sun Aug 22 23:03:27 2021 -->
+<!-- CreationDate: Mon Sep 11 22:06:21 2023 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
values depend on the library version, common values are from
1 to 22.</p>
+<p><b>long</b></p>
+
+<p style="margin-left:27%; margin-top: 1em">Enables long
+distance matching. The value is interpreted as a decimal
+integer specifying log2 window size in bytes. Values from 10
+to 30 for 32 bit, or 31 for 64 bit, are supported.</p>
+
+<p><b>threads</b></p>
+
+<p style="margin-left:27%;">The value is interpreted as a
+decimal integer specifying the number of threads for
+multi-threaded zstd compression. If set to 0, zstd will
+attempt to detect and use the number of physical CPU
+cores.</p>
+
<p>Format 7zip <b><br>
compression</b></p>
<!-- Creator : groff version 1.22.4 -->
-<!-- CreationDate: Sun Aug 22 23:03:27 2021 -->
+<!-- CreationDate: Mon Sep 11 22:06:21 2023 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- Creator : groff version 1.22.4 -->
-<!-- CreationDate: Sun Aug 22 23:03:28 2021 -->
+<!-- CreationDate: Mon Sep 11 22:06:22 2023 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- Creator : groff version 1.22.4 -->
-<!-- CreationDate: Sun Aug 22 23:03:28 2021 -->
+<!-- CreationDate: Mon Sep 11 22:06:22 2023 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
the reverse of <b>--mac-metadata</b>. and the default
behavior if <b>tar</b> is run as non-root in x mode.</p>
+<p style="margin-top: 1em"><b>--no-read-sparse</b></p>
+
+<p style="margin-left:17%;">(c, r, u modes only) Do not
+read sparse file information from disk. This is the reverse
+of <b>--read-sparse</b>.</p>
+
<p style="margin-top: 1em"><b>--no-safe-writes</b></p>
<p style="margin-left:17%;">(x mode only) Do not create
the zstd compression level. Supported values depend on the
library version, common values are from 1 to 22.</p>
+<p><b>zstd:threads</b></p>
+
+<p style="margin-left:27%;">Specify the number of worker
+threads to use. Setting threads to a special value 0 makes
+zstd(1) use as many threads as there are CPU cores on the
+system.</p>
+
+<p><b>zstd:frame-per-file</b></p>
+
+<p style="margin-left:27%;">Start a new compression frame
+at the beginning of each file in the archive.</p>
+
+<p><b>zstd:min-frame-size</b>=<i>N</i></p>
+
+<p style="margin-left:27%;">In combination with
+<b>zstd:frame-per-file</b>, do not start a new compression
+frame unless the current frame is at least <i>N</i>
+bytes.</p>
+
+<p><b>zstd:max-frame-size</b>=<i>N</i></p>
+
+<p style="margin-left:27%;">Start a new compression frame
+as soon as the current frame exceeds <i>N</i> bytes.</p>
+
<p><b>lzop:compression-level</b></p>
<p style="margin-left:27%;">A decimal integer from 1 to 9
<p style="margin-left:27%;">A decimal integer from 0 to 9
specifying the xz compression level.</p>
+<p><b>xz:threads</b></p>
+
+<p style="margin-left:27%;">Specify the number of worker
+threads to use. Setting threads to a special value 0 makes
+xz(1) use as many threads as there are CPU cores on the
+system.</p>
+
<p><b>mtree:</b><i>keyword</i></p>
<p style="margin-left:27%;">The mtree writer module allows
overwrite earlier entries. This option is provided as a
performance optimization.</p>
+<p style="margin-top: 1em"><b>--read-sparse</b></p>
+
+<p style="margin-left:17%;">(c, r, u modes only) Read
+sparse file information from disk. This is the reverse of
+<b>--no-read-sparse</b> and the default behavior.</p>
+
<p style="margin-top: 1em"><b>-S</b></p>
<p style="margin-left:17%; margin-top: 1em">(x mode only)
<p style="margin-top: 1em">TAR_READER_OPTIONS</p>
-<p style="margin-left:21%;">The default options for format
+<p style="margin-left:17%;">The default options for format
readers and compression readers. The <b>--options</b> option
overrides this.</p>
<p style="margin-top: 1em">TAR_WRITER_OPTIONS</p>
-<p style="margin-left:21%;">The default options for format
+<p style="margin-left:17%;">The default options for format
writers and compression writers. The <b>--options</b> option
overrides this.</p>
<p style="margin-top: 1em">LANG</p>
-<p style="margin-left:21%; margin-top: 1em">The locale to
+<p style="margin-left:17%; margin-top: 1em">The locale to
use. See environ(7) for more information.</p>
<p style="margin-top: 1em">TAPE</p>
-<p style="margin-left:21%; margin-top: 1em">The default
+<p style="margin-left:17%; margin-top: 1em">The default
device. The <b>-f</b> option overrides this. Please see the
description of the <b>-f</b> option above for more
details.</p>
<p style="margin-top: 1em">TZ</p>
-<p style="margin-left:21%; margin-top: 1em">The timezone to
+<p style="margin-left:17%; margin-top: 1em">The timezone to
use when displaying dates. See environ(7) for more
information.</p>
hardlink information.)</p>
<p style="margin-left:6%; margin-top: 1em">BSD
-January 31, 2020 BSD</p>
+December 1, 2022 BSD</p>
<hr>
</body>
</html>
<!-- Creator : groff version 1.22.4 -->
-<!-- CreationDate: Sun Aug 22 23:03:27 2021 -->
+<!-- CreationDate: Mon Sep 11 22:06:21 2023 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
written by Dick Haight while working in AT&T’s
Unix Support Group. It appeared in 1977 as part of PWB/UNIX
1.0, the “Programmer’s Work Bench” derived
-from AT&T UNIX 6th Edition UNIX that was used internally
+from Version 6 AT&T UNIX that was used internally
at AT&T. Both the new binary and old character formats
were in use by 1980, according to the System III source
released by SCO under their “Ancient Unix”
<!-- Creator : groff version 1.22.4 -->
-<!-- CreationDate: Sun Aug 22 23:03:27 2021 -->
+<!-- CreationDate: Mon Sep 11 22:06:22 2023 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- Creator : groff version 1.22.4 -->
-<!-- CreationDate: Sun Aug 22 23:03:27 2021 -->
+<!-- CreationDate: Mon Sep 11 22:06:21 2023 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<p><b>•</b></p>
-<p style="margin-left:12%;">ISO9660 CD images (including
-RockRidge and Joliet extensions),</p>
-
-<p><b>•</b></p>
-
-<p style="margin-left:12%;">Zip archives,</p>
+<p style="margin-left:12%;">7-Zip archives,</p>
<p><b>•</b></p>
<p><b>•</b></p>
+<p style="margin-left:12%;">ISO9660 CD images (including
+RockRidge and Joliet extensions),</p>
+
+<p><b>•</b></p>
+
<p style="margin-left:12%;">LHA archives,</p>
<p><b>•</b></p>
<p><b>•</b></p>
-<p style="margin-left:12%;">RAR archives,</p>
+<p style="margin-left:12%;">RAR and most RAR5 archives,</p>
+
+<p><b>•</b></p>
+
+<p style="margin-left:12%;">WARC archives,</p>
<p><b>•</b></p>
-<p style="margin-left:12%;">XAR archives.</p>
+<p style="margin-left:12%;">XAR archives,</p>
+
+<p><b>•</b></p>
+
+<p style="margin-left:12%;">Zip archives.</p>
<p style="margin-left:6%;">The library automatically
-detects archives compressed with gzip(1), bzip2(1), xz(1),
-lzip(1), or compress(1) and decompresses them transparently.
-It can similarly detect and decode archives processed with
-uuencode(1) or which have an rpm(1) header.</p>
+detects archives compressed with compress(1), bzip2(1),
+grzip(1), gzip(1), lrzip(1), lz4(1), lzip(1), lzop(1),
+xz(1), or zstd(1) and decompresses them transparently.
+Decompression of some formats requires external decompressor
+utilities. It can similarly detect and decode archives
+processed with uuencode(1) or which have an rpm(1)
+header.</p>
<p style="margin-left:6%; margin-top: 1em">When writing an
archive, you can specify the compression to be used and the
<p><b>•</b></p>
-<p style="margin-left:12%;">Zip archive,</p>
+<p style="margin-left:12%;">7-Zip archives,</p>
<p><b>•</b></p>
-<p style="margin-left:12%;">two different variants of shar
-archives,</p>
+<p style="margin-left:12%;">ar archives,</p>
<p><b>•</b></p>
-<p style="margin-left:12%;">ISO9660 CD images,</p>
+<p style="margin-left:12%;">two different variants of shar
+archives,</p>
<p><b>•</b></p>
-<p style="margin-left:12%;">7-Zip archives,</p>
+<p style="margin-left:12%;">ISO9660 CD images,</p>
<p><b>•</b></p>
-<p style="margin-left:12%;">ar archives,</p>
+<p style="margin-left:12%;">mtree file tree
+descriptions,</p>
<p><b>•</b></p>
-<p style="margin-left:12%;">mtree file tree
-descriptions,</p>
+<p style="margin-left:12%;">XAR archives,</p>
<p><b>•</b></p>
-<p style="margin-left:12%;">XAR archives.</p>
+<p style="margin-left:12%;">Zip archive.</p>
<p style="margin-left:6%;">Pax interchange format is an
extension of the tar archive format that eliminates
<!-- Creator : groff version 1.22.4 -->
-<!-- CreationDate: Sun Aug 22 23:03:27 2021 -->
+<!-- CreationDate: Mon Sep 11 22:06:21 2023 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- Creator : groff version 1.22.4 -->
-<!-- CreationDate: Sun Aug 22 23:03:27 2021 -->
+<!-- CreationDate: Mon Sep 11 22:06:22 2023 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- Creator : groff version 1.22.4 -->
-<!-- CreationDate: Sun Aug 22 23:03:27 2021 -->
+<!-- CreationDate: Mon Sep 11 22:06:22 2023 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- Creator : groff version 1.22.4 -->
-<!-- CreationDate: Sun Aug 22 23:03:28 2021 -->
+<!-- CreationDate: Mon Sep 11 22:06:22 2023 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
.SH NAME
.ad l
\fB\%archive_read_disk_new\fP,
+\fB\%archive_read_disk_open\fP,
+\fB\%archive_read_disk_open_w\fP,
\fB\%archive_read_disk_set_behavior\fP,
\fB\%archive_read_disk_set_symlink_logical\fP,
\fB\%archive_read_disk_set_symlink_physical\fP,
\fB\%archive_read_disk_uname\fP,
\fB\%archive_read_disk_set_uname_lookup\fP,
\fB\%archive_read_disk_set_gname_lookup\fP,
-\fB\%archive_read_disk_set_standard_lookup\fP
+\fB\%archive_read_disk_set_standard_lookup\fP,
+\fB\%archive_read_disk_descend\fP,
+\fB\%archive_read_disk_can_descend\fP,
+\fB\%archive_read_disk_current_filesystem\fP,
+\fB\%archive_read_disk_current_filesystem_is_synthetic\fP,
+\fB\%archive_read_disk_current_filesystem_is_remote\fP,
+\fB\%archive_read_disk_set_matching\fP,
+\fB\%archive_read_disk_set_metadata_filter_callback\fP,
\- functions for reading objects from disk
.SH LIBRARY
.ad l
.br
\fIint\fP
.br
+\fB\%archive_read_disk_open\fP(\fI\%struct\ archive\ *\fP, \fI\%const\ char\ *\fP);
+.br
+\fIint\fP
+.br
+\fB\%archive_read_disk_open_w\fP(\fI\%struct\ archive\ *\fP, \fI\%const\ wchar_t\ *\fP, \fI\%\fP);
+.br
+\fIint\fP
+.br
\fB\%archive_read_disk_set_behavior\fP(\fI\%struct\ archive\ *\fP, \fI\%int\fP);
.br
\fIint\fP
\fIint\fP
.br
\fB\%archive_read_disk_entry_from_file\fP(\fI\%struct\ archive\ *\fP, \fI\%struct\ archive_entry\ *\fP, \fI\%int\ fd\fP, \fI\%const\ struct\ stat\ *\fP);
+.br
+\fIint\fP
+.br
+\fB\%archive_read_disk_descend\fP(\fI\%struct\ archive\ *\fP);
+.br
+\fIint\fP
+.br
+\fB\%archive_read_disk_can_descend\fP(\fI\%struct\ archive\ *\fP);
+.br
+\fIint\fP
+.br
+\fB\%archive_read_disk_current_filesystem\fP(\fI\%struct\ archive\ *\fP);
+.br
+\fIint\fP
+.br
+\fB\%archive_read_disk_current_filesystem_is_synthetic\fP(\fI\%struct\ archive\ *\fP);
+.br
+\fIint\fP
+.br
+\fB\%archive_read_disk_current_filesystem_is_remote\fP(\fI\%struct\ archive\ *\fP);
+.br
+\fIint\fP
+.br
+\fB\%archive_read_disk_set_matching\fP(\fI\%struct\ archive\ *\fP, \fI\%struct\ archive\ *\fP, \fI\%void\ (*excluded_func)(struct\ archive\ *,\ void\ *,\ struct\ archive\ entry\ *)\fP, \fI\%void\ *\fP);
+.br
+\fIint\fP
+.br
+\fB\%archive_read_disk_set_metadata_filter_callback\fP(\fI\%struct\ archive\ *\fP, \fI\%int\ (*metadata_filter_func)(struct\ archive\ *,\ void*,\ struct\ archive_entry\ *)\fP, \fI\%void\ *\fP);
.SH DESCRIPTION
.ad l
These functions provide an API for reading information about
Tn struct archive
object suitable for reading object information from disk.
.TP
+\fB\%archive_read_disk_open\fP()
+Opens the file or directory from the given path and prepares the
+Tn struct archive
+to read it from disk.
+.TP
+\fB\%archive_read_disk_open_w\fP()
+Opens the file or directory from the given path as a wide character string and prepares the
+Tn struct archive
+to read it from disk.
+.TP
\fB\%archive_read_disk_set_behavior\fP()
Configures various behavior options when reading entries from disk.
The flags field consists of a bitwise OR of one or more of the
\fBARCHIVE_READDISK_RESTORE_ATIME\fP
Restore access time of traversed files.
By default, access time of traversed files is not restored.
+.TP
+\fBARCHIVE_READDISK_NO_SPARSE\fP
+Do not read sparse file information.
+By default, sparse file information is read from disk.
.RE
.TP
\fB\%archive_read_disk_set_symlink_logical\fP(),
This affects the file ownership fields and ACL values in the
Tn struct archive_entry
object.
+.TP
+\fB\%archive_read_disk_descend\fP()
+If the current entry can be descended, this function will mark the directory as the next entry for
+\fBarchive_read_header\fP(3)
+to visit.
+.TP
+\fB\%archive_read_disk_can_descend\fP()
+Returns 1 if the current entry is an unvisited directory and 0 otherwise.
+.TP
+\fB\%archive_read_disk_current_filesystem\fP()
+Returns the index of the most recent filesystem entry that has been visited through archive_read_disk
+.TP
+\fB\%archive_read_disk_current_filesystem_is_synthetic\fP()
+Returns 1 if the current filesystem is a virtual filesystem. Returns 0 if the current filesystem is not a virtual filesystem. Returns -1 if it is unknown.
+.TP
+\fB\%archive_read_disk_current_filesystem_is_remote\fP()
+Returns 1 if the current filesystem is a remote filesystem. Returns 0 if the current filesystem is not a remote filesystem. Returns -1 if it is unknown.
+.TP
+\fB\%archive_read_disk_set_matching\fP()
+Allows the caller to set
+Tn struct archive
+*_ma to compare each entry during
+\fBarchive_read_header\fP(3)
+calls. If matched based on calls to
+Tn archive_match_path_excluded,
+Tn archive_match_time_excluded,
+or
+Tn archive_match_owner_excluded,
+then the callback function specified by the _excluded_func parameter will execute. This function will recieve data provided to the fourth parameter, void *_client_data.
+.TP
+\fB\%archive_read_disk_set_metadata_filter_callback\fP()
+Allows the caller to set a callback function during calls to
+\fBarchive_read_header\fP(3)
+to filter out metadata for each entry. The callback function recieves the
+Tn struct archive
+object, void* custom filter data, and the
+Tn struct archive_entry.
+If the callback function returns an error, ARCHIVE_RETRY will be returned and the entry will not be further processed.
.RE
More information about the
\fIstruct\fP archive
Without this option, only the contents of
the first concatenated archive would be read.
.RE
+.TP
+Format zip
+.RS 5
+.TP
+\fBcompat-2x\fP
+Libarchive 2.x incorrectly encoded Unicode filenames on
+some platforms.
+This option mimics the libarchive 2.x filename handling
+so that such archives can be read correctly.
+.TP
+\fBhdrcharset\fP
+The value is used as a character set name that will be
+used when translating file names.
+.TP
+\fBignorecrc32\fP
+Skip the CRC32 check.
+Mostly used for testing.
+.TP
+\fBmac-ext\fP
+Support Mac OS metadata extension that records data in special
+files beginning with a period and underscore.
+Defaults to enabled on Mac OS, disabled on other platforms.
+Use
+\fB!mac-ext\fP
+to disable.
+.RE
.RE
.SH ERRORS
.ad l
files outside of the current directory.
The default is not to perform this check.
If
+\fBARCHIVE_EXTRACT_UNLINK\fP
+is specified together with this option, the library will
+remove any intermediate symlinks it finds and return an
+error only if such symlink could not be removed.
.TP
\fBARCHIVE_EXTRACT_SPARSE\fP
Scan data for blocks of NUL bytes and try to recreate them with holes.
This results in sparse files, independent of whether the archive format
supports or uses them.
-\fBARCHIVE_EXTRACT_UNLINK\fP
-is specified together with this option, the library will
-remove any intermediate symlinks it finds and return an
-error only if such symlink could not be removed.
.TP
\fBARCHIVE_EXTRACT_TIME\fP
The timestamps (mtime, ctime, and atime) should be restored.
\fB\%archive_set_error\fP()
to register an error code and message and
return
+\fBARCHIVE_FATAL\fP.
.RS 5
.IP
\fItypedef int\fP
The value is interpreted as a decimal integer specifying the
compression level. Supported values depend on the library version,
common values are from 1 to 22.
+.TP
+\fBlong\fP
+Enables long distance matching. The value is interpreted as a
+decimal integer specifying log2 window size in bytes. Values from
+10 to 30 for 32 bit, or 31 for 64 bit, are supported.
+.TP
+\fBthreads\fP
+The value is interpreted as a decimal integer specifying the
+number of threads for multi-threaded zstd compression.
+If set to 0, zstd will attempt to detect and use the number
+of physical CPU cores.
.RE
.TP
Format 7zip
-.TH TAR 1 "January 31, 2020" ""
+.TH TAR 1 "December 1, 2022" ""
.SH NAME
.ad l
\fB\%tar\fP
\fB\%tar\fP
is run as non-root in x mode.
.TP
+\fB\-Fl\fP no-read-sparse
+(c, r, u modes only)
+Do not read sparse file information from disk.
+This is the reverse of
+\fB\-Fl\fP read-sparse.
+.TP
\fB\-Fl\fP no-safe-writes
(x mode only)
Do not create temporary files and use
A decimal integer specifying the zstd compression level. Supported values depend
on the library version, common values are from 1 to 22.
.TP
+\fBzstd:threads\fP
+Specify the number of worker threads to use.
+Setting threads to a special value 0 makes
+\fBzstd\fP(1)
+use as many threads as there are CPU cores on the system.
+.TP
+\fBzstd:frame-per-file\fP
+Start a new compression frame at the beginning of each file in the
+archive.
+.TP
+\fBzstd:min-frame-size\fP=\fIN\fP
+In combination with
+\fBzstd:frame-per-file\fP,
+do not start a new compression frame unless the current frame is at least
+\fIN\fP
+bytes.
+.TP
+\fBzstd:max-frame-size\fP=\fIN\fP
+Start a new compression frame as soon as the current frame exceeds
+\fIN\fP
+bytes.
+.TP
\fBlzop:compression-level\fP
A decimal integer from 1 to 9 specifying the lzop compression level.
.TP
\fBxz:compression-level\fP
A decimal integer from 0 to 9 specifying the xz compression level.
.TP
+\fBxz:threads\fP
+Specify the number of worker threads to use.
+Setting threads to a special value 0 makes
+\fBxz\fP(1)
+use as many threads as there are CPU cores on the system.
+.TP
\fBmtree:\fP \fIkeyword\fP
The mtree writer module allows you to specify which mtree keywords
will be included in the output.
later entries overwrite earlier entries.
This option is provided as a performance optimization.
.TP
+\fB\-Fl\fP read-sparse
+(c, r, u modes only)
+Read sparse file information from disk.
+This is the reverse of
+\fB\-Fl\fP no-read-sparse
+and the default behavior.
+.TP
\fB\-S\fP
(x mode only)
Extract files as sparse files.
It appeared in 1977 as part of PWB/UNIX 1.0, the
``Programmer's Work Bench''
derived from
-At 6th Edition UNIX
+At v6
that was used internally at AT&T.
Both the new binary and old character formats were in use
by 1980, according to the System III source released
.IP \(bu
most common cpio archive formats,
.IP \(bu
-ISO9660 CD images (including RockRidge and Joliet extensions),
-.IP \(bu
-Zip archives,
+7-Zip archives,
.IP \(bu
ar archives (including GNU/SysV and BSD extensions),
.IP \(bu
Microsoft CAB archives,
.IP \(bu
+ISO9660 CD images (including RockRidge and Joliet extensions),
+.IP \(bu
LHA archives,
.IP \(bu
mtree file tree descriptions,
.IP \(bu
-RAR archives,
+RAR and most RAR5 archives,
.IP \(bu
-XAR archives.
+WARC archives,
+.IP \(bu
+XAR archives,
+.IP \(bu
+Zip archives.
.RE
The library automatically detects archives compressed with
-\fBgzip\fP(1),
+\fBcompress\fP(1),
\fBbzip2\fP(1),
-\fBxz\fP(1),
+\fBgrzip\fP(1),
+\fBgzip\fP(1),
+\fBlrzip\fP(1),
+\fBlz4\fP(1),
\fBlzip\fP(1),
+\fBlzop\fP(1),
+\fBxz\fP(1),
or
-\fBcompress\fP(1)
-and decompresses them transparently.
+\fBzstd\fP(1)
+and decompresses them transparently. Decompression of some formats
+requires external decompressor utilities.
It can similarly detect and decode archives processed with
\fBuuencode\fP(1)
or which have an
.IP \(bu
cpio archives,
.IP \(bu
-Zip archive,
+7-Zip archives,
+.IP \(bu
+ar archives,
.IP \(bu
two different variants of shar archives,
.IP \(bu
ISO9660 CD images,
.IP \(bu
-7-Zip archives,
-.IP \(bu
-ar archives,
-.IP \(bu
mtree file tree descriptions,
.IP \(bu
-XAR archives.
+XAR archives,
+.IP \(bu
+Zip archive.
.RE
Pax interchange format is an extension of the tar archive format that
eliminates essentially all of the limitations of historic tar formats
DESCRIPTION
These functions create and manipulate data objects that represent entries
- within an archive. You can think of a struct archive_entry as a heavy-
+ within an archive. You can think of a struct archive_entry as a heavy-
duty version of struct stat: it includes everything from struct stat plus
associated pathname, textual group and user names, etc. These objects
are used by libarchive(3) to represent the metadata associated with a
AUTHORS
The libarchive library was written by Tim Kientzle <kientzle@acm.org>.
-BSD February 2, 2012 BSD
+BSD February 2, 2012 BSD
ARCHIVE_ENTRY_ACL_TYPE_NFS4
Supports all formats that can be created with archive_entry_acl_to_text()
or respectively archive_entry_acl_to_text_w(). Existing ACL entries are
- preserved. To get a clean new ACL from text archive_entry_acl_clear()
+ preserved. To get a clean new ACL from text archive_entry_acl_clear()
must be called first. Entries prefixed with “default:” are treated as
ARCHIVE_ENTRY_ACL_TYPE_DEFAULT unless type is
ARCHIVE_ENTRY_ACL_TYPE_NFS4. Invalid entries, non-parseable ACL entries
archive_entry_acl_reset() prepare reading the list of ACL entries with
archive_entry_acl_next(). The function returns 0 if no non-extended ACLs
- are found. In this case, the access permissions should be obtained by
+ are found. In this case, the access permissions should be obtained by
archive_entry_mode(3) or set using chmod(2). Otherwise, the function re‐
turns the same value as archive_entry_acl_count().
are prefixed with “default:”.
archive_entry_acl_types() get ACL entry types contained in an archive en‐
- try's ACL. As POSIX.1e and NFSv4 ACL entries cannot be mixed, this func‐
+ try's ACL. As POSIX.1e and NFSv4 ACL entries cannot be mixed, this func‐
tion is a very efficient way to detect if an ACL already contains
POSIX.1e or NFSv4 ACL entries.
RETURN VALUES
archive_entry_acl_count() and archive_entry_acl_reset() returns the num‐
- ber of ACL entries that match the given type mask. For POSIX.1e ACLS if
+ ber of ACL entries that match the given type mask. For POSIX.1e ACLS if
the type mask includes ARCHIVE_ENTRY_ACL_TYPE_ACCESS and at least one ex‐
tended ACL entry exists, the three classic Unix permissions are counted.
Hardlinks are handled in different ways by the archive formats. The ba‐
sic strategies are:
- 1. Ignore hardlinks and store the body for each reference (old cpio,
+ 1. Ignore hardlinks and store the body for each reference (old cpio,
zip).
- 2. Store the body the first time an inode is seen (ustar, pax).
+ 2. Store the body the first time an inode is seen (ustar, pax).
- 3. Store the body the last time an inode is seen (new cpio).
+ 3. Store the body the last time an inode is seen (new cpio).
The archive_entry_linkresolver functions help by providing a unified in‐
terface and handling the complexity behind the scene.
The archive_entry_linkresolver_new() function allocates a new link re‐
solver. The instance can be freed using
- archive_entry_linkresolver_free(). All deferred entries are flushed and
+ archive_entry_linkresolver_free(). All deferred entries are flushed and
the internal storage is freed.
The archive_entry_linkresolver_set_strategy() function selects the opti‐
archive_entry that should be written. Depending on the strategy one of
the following actions is taken:
- 1. For the simple archive formats *entry is left unmodified and *sparse
+ 1. For the simple archive formats *entry is left unmodified and *sparse
is set to NULL.
- 2. For tar like archive formats, *sparse is set to NULL. If *entry is
+ 2. For tar like archive formats, *sparse is set to NULL. If *entry is
NULL, no action is taken. If the hardlink count of *entry is larger
than 1 and the file type is a regular file or symbolic link, the in‐
- ternal list is searched for a matching inode. If such an inode is
+ ternal list is searched for a matching inode. If such an inode is
found, the link count is decremented and the file size of *entry is
set to 0 to notify that no body should be written. If no such inode
is found, a copy of the entry is added to the internal cache with a
link count reduced by one.
- 3. For new cpio like archive formats a value for *entry of NULL is used
+ 3. For new cpio like archive formats a value for *entry of NULL is used
to flush deferred entries. In that case *entry is set to an arbi‐
trary deferred entry and the entry itself is removed from the inter‐
nal list. If the internal list is empty, *entry is set to NULL. In
- either case, *sparse is set to NULL and the function returns. If
+ either case, *sparse is set to NULL and the function returns. If
the hardlink count of *entry is one or the file type is a directory
or device, *sparse is set to NULL and no further action is taken.
Otherwise, the internal list is searched for a matching inode. If
The general usage is therefore:
- 1. For each new archive entry, call archive_entry_linkify().
+ 1. For each new archive entry, call archive_entry_linkify().
- 2. Keep in mind that the entries returned may have a size of 0 now.
+ 2. Keep in mind that the entries returned may have a size of 0 now.
- 3. If *entry is not NULL, archive it.
+ 3. If *entry is not NULL, archive it.
- 4. If *sparse is not NULL, archive it.
+ 4. If *sparse is not NULL, archive it.
- 5. After all entries have been written to disk, call
+ 5. After all entries have been written to disk, call
archive_entry_linkify() with *entry set to NULL and archive the re‐
turned entry as long as it is not NULL.
SEE ALSO
archive_entry(3)
-BSD February 2, 2012 BSD
+BSD February 2, 2012 BSD
wise, make the entry a hardlink and alter the destination for
that.
pathname Path in the archive
- sourcepath Path on the disk for use by archive_read_disk(3).
+ sourcepath Path on the disk for use by archive_read_disk(3).
symlink Destination of the symbolic link.
Path names can be provided in one of three different ways:
The sourcepath is a pure filesystem concept and never stored in an ar‐
chive directly.
- For that reason, it is only available as multibyte string. The link path
+ For that reason, it is only available as multibyte string. The link path
is a convenience function for conditionally setting hardlink or symlink
destination. It doesn't have a corresponding get accessor function.
SEE ALSO
archive_entry(3), libarchive(3)
-BSD February 2, 2012 BSD
+BSD February 2, 2012 BSD
Converting a bitmap to a textual string is a platform-specific operation;
bits that are not meaningful on the current platform will be ignored.
- The canonical text format is a comma-separated list of flag names. The
+ The canonical text format is a comma-separated list of flag names. The
archive_entry_copy_fflags_text() and archive_entry_copy_fflags_text_w()
functions parse the provided text and set the internal bitmap values.
This is a platform-specific operation; names that are not meaningful on
case it is possible that the ids can not be correctly restored from ar‐
chives and get truncated.
-BSD February 2, 2012 BSD
+BSD February 2, 2012 BSD
General accessor functions
The functions archive_entry_filetype() and archive_entry_set_filetype()
- get respectively set the filetype. The file type is one of the following
+ get respectively set the filetype. The file type is one of the following
constants:
AE_IFREG Regular file
AE_IFLNK Symbolic link
AE_IFBLK Block device
AE_IFDIR Directory
AE_IFIFO Named pipe (fifo)
- Not all file types are supported by all platforms. The constants used by
+ Not all file types are supported by all platforms. The constants used by
stat(2) may have different numeric values from the corresponding con‐
stants above.
Block and character devices are characterised either using a device num‐
ber or a pair of major and minor number. The combined device number can
be obtained with archive_device_rdev() and set with
- archive_device_set_rdev(). The major and minor numbers are accessed by
+ archive_device_set_rdev(). The major and minor numbers are accessed by
archive_device_rdevmajor(), archive_device_rdevminor()
archive_device_set_rdevmajor() and archive_device_set_rdevminor().
stat(2), archive_entry_acl(3), archive_entry_perms(3),
archive_entry_time(3), libarchive(3)
-BSD February 2, 2012 BSD
+BSD February 2, 2012 BSD
truncated automatically depending on the archive format (for archiving)
or the filesystem capabilities (for restoring).
- All timestamp fields are optional. The XXX_unset() functions can be used
+ All timestamp fields are optional. The XXX_unset() functions can be used
to mark the corresponding field as missing. The current state can be
queried using XXX_is_set(). Unset time fields have a second and nanosec‐
ond field of 0.
AUTHORS
The libarchive library was written by Tim Kientzle <kientzle@acm.org>.
-BSD February 2, 2012 BSD
+BSD February 2, 2012 BSD
-ARCHIVE_READ(3) BSD Library Functions Manual ARCHIVE_READ(3)
+ARCHIVE_READ(3) BSD Library Functions Manual ARCHIVE_READ(3)
NAME
archive_read — functions for reading streaming archives
file, then the header will be followed by the file data. You can use
archive_read_data() (which works much like the read(2) system call) to
read this data from the archive, or archive_read_data_block() which pro‐
- vides a slightly more efficient interface. You may prefer to use the
+ vides a slightly more efficient interface. You may prefer to use the
higher-level archive_read_data_skip(), which reads and discards the data
for this entry, archive_read_data_into_fd(), which copies the data to the
provided file descriptor, or archive_read_extract(), which recreates the
format of an empty file by inspecting the contents, so this library
treats empty files as having a special “empty” format.
-BSD February 2, 2012 BSD
+BSD February 2, 2012 BSD
archive_read_format(3), archive_read_header(3), archive_read_open(3),
archive_read_set_options(3), archive_util(3), libarchive(3), tar(5)
-BSD February 2, 2012 BSD
+BSD February 2, 2012 BSD
ARCHIVE_READ_DISK(3) BSD Library Functions Manual ARCHIVE_READ_DISK(3)
NAME
- archive_read_disk_new, archive_read_disk_set_behavior,
- archive_read_disk_set_symlink_logical,
+ archive_read_disk_new, archive_read_disk_open, archive_read_disk_open_w,
+ archive_read_disk_set_behavior, archive_read_disk_set_symlink_logical,
archive_read_disk_set_symlink_physical,
archive_read_disk_set_symlink_hybrid, archive_read_disk_entry_from_file,
archive_read_disk_gname, archive_read_disk_uname,
archive_read_disk_set_uname_lookup, archive_read_disk_set_gname_lookup,
- archive_read_disk_set_standard_lookup — functions for reading objects
- from disk
+ archive_read_disk_set_standard_lookup, archive_read_disk_descend,
+ archive_read_disk_can_descend, archive_read_disk_current_filesystem,
+ archive_read_disk_current_filesystem_is_synthetic,
+ archive_read_disk_current_filesystem_is_remote,
+ archive_read_disk_set_matching,
+ archive_read_disk_set_metadata_filter_callback, — functions for reading
+ objects from disk
LIBRARY
Streaming Archive Library (libarchive, -larchive)
archive_read_disk_new(void);
int
+ archive_read_disk_open(struct archive *, const char *);
+
+ int
+ archive_read_disk_open_w(struct archive *, const wchar_t *);
+
+ int
archive_read_disk_set_behavior(struct archive *, int);
int
archive_read_disk_entry_from_file(struct archive *,
struct archive_entry *, int fd, const struct stat *);
+ int
+ archive_read_disk_descend(struct archive *);
+
+ int
+ archive_read_disk_can_descend(struct archive *);
+
+ int
+ archive_read_disk_current_filesystem(struct archive *);
+
+ int
+ archive_read_disk_current_filesystem_is_synthetic(struct archive *);
+
+ int
+ archive_read_disk_current_filesystem_is_remote(struct archive *);
+
+ int
+ archive_read_disk_set_matching(struct archive *, struct archive *,
+ void (*excluded_func)(struct archive *, void *, struct archive entry *),
+ void *);
+
+ int
+ archive_read_disk_set_metadata_filter_callback(struct archive *,
+ int (*metadata_filter_func)(struct archive *, void*, struct archive_entry *),
+ void *);
+
DESCRIPTION
These functions provide an API for reading information about objects on
disk. In particular, they provide an interface for populating struct
Allocates and initializes a struct archive object suitable for
reading object information from disk.
+ archive_read_disk_open()
+ Opens the file or directory from the given path and prepares the
+ struct archive to read it from disk.
+
+ archive_read_disk_open_w()
+ Opens the file or directory from the given path as a wide charac‐
+ ter string and prepares the struct archive to read it from disk.
+
archive_read_disk_set_behavior()
Configures various behavior options when reading entries from
disk. The flags field consists of a bitwise OR of one or more of
(file flag) set. By default, the nodump file attribute
is ignored.
ARCHIVE_READDISK_MAC_COPYFILE
- Mac OS X specific. Read metadata (ACLs and extended at‐
+ Mac OS X specific. Read metadata (ACLs and extended at‐
tributes) with copyfile(3). By default, metadata is read
using copyfile(3).
ARCHIVE_READDISK_NO_ACL
ARCHIVE_READDISK_RESTORE_ATIME
Restore access time of traversed files. By default, ac‐
cess time of traversed files is not restored.
+ ARCHIVE_READDISK_NO_SPARSE
+ Do not read sparse file information. By default, sparse
+ file information is read from disk.
archive_read_disk_set_symlink_logical(),
archive_read_disk_set_symlink_physical(),
archive_read_disk_set_symlink_hybrid()
This sets the mode used for handling symbolic links. The
- “logical” mode follows all symbolic links. The “physical” mode
+ “logical” mode follows all symbolic links. The “physical” mode
does not follow any symbolic links. The “hybrid” mode currently
behaves identically to the “logical” mode.
This convenience function installs a standard set of user and
group name lookup functions. These functions use getpwuid(3) and
getgrgid(3) to convert ids to names, defaulting to NULL if the
- names cannot be looked up. These functions also implement a sim‐
+ names cannot be looked up. These functions also implement a sim‐
ple memory cache to reduce the number of calls to getpwuid(3) and
getgrgid(3).
If a pointer to a struct stat is provided, information from that
structure will be used instead of reading from the disk where ap‐
- propriate. This can provide performance benefits in scenarios
+ propriate. This can provide performance benefits in scenarios
where struct stat information has already been read from the disk
as a side effect of some other operation. (For example, direc‐
tory traversal libraries often provide this information.)
group names using the currently-registered lookup functions
above. This affects the file ownership fields and ACL values in
the struct archive_entry object.
+
+ archive_read_disk_descend()
+ If the current entry can be descended, this function will mark
+ the directory as the next entry for archive_read_header(3) to
+ visit.
+
+ archive_read_disk_can_descend()
+ Returns 1 if the current entry is an unvisited directory and 0
+ otherwise.
+
+ archive_read_disk_current_filesystem()
+ Returns the index of the most recent filesystem entry that has
+ been visited through archive_read_disk
+
+ archive_read_disk_current_filesystem_is_synthetic()
+ Returns 1 if the current filesystem is a virtual filesystem. Re‐
+ turns 0 if the current filesystem is not a virtual filesystem.
+ Returns -1 if it is unknown.
+
+ archive_read_disk_current_filesystem_is_remote()
+ Returns 1 if the current filesystem is a remote filesystem. Re‐
+ turns 0 if the current filesystem is not a remote filesystem. Re‐
+ turns -1 if it is unknown.
+
+ archive_read_disk_set_matching()
+ Allows the caller to set struct archive *_ma to compare each en‐
+ try during archive_read_header(3) calls. If matched based on
+ calls to archive_match_path_excluded,
+ archive_match_time_excluded, or archive_match_owner_excluded,
+ then the callback function specified by the _excluded_func param‐
+ eter will execute. This function will recieve data provided to
+ the fourth parameter, void *_client_data.
+
+ archive_read_disk_set_metadata_filter_callback()
+ Allows the caller to set a callback function during calls to
+ archive_read_header(3) to filter out metadata for each entry. The
+ callback function recieves the struct archive object, void* cus‐
+ tom filter data, and the struct archive_entry. If the callback
+ function returns an error, ARCHIVE_RETRY will be returned and the
+ entry will not be further processed.
More information about the struct archive object and the overall design
of the library can be found in the libarchive(3) overview.
-ARCHIVE_READ_EXTRACT(3) BSD Library Functions Manual ARCHIVE_READ_EXTRACT(3)
+ARCHIVE_READ_EXTRACT(3) BSD Library Functions Manual ARCHIVE_READ_EXTRACT(3)
NAME
archive_read_extract, archive_read_extract2,
archive_read_format(3), archive_read_open(3),
archive_read_set_options(3), archive_util(3), libarchive(3), tar(5)
-BSD February 2, 2012 BSD
+BSD February 2, 2012 BSD
Using the “raw” handler together with any other handler will often work
but can produce surprising results.
-BSD February 2, 2012 BSD
+BSD February 2, 2012 BSD
archive_read_new(3), archive_read_open(3), archive_read_set_options(3),
archive_util(3), libarchive(3)
-BSD February 2, 2012 BSD
+BSD February 2, 2012 BSD
archive_read_filter(3), archive_read_format(3), archive_read_open(3),
archive_read_set_options(3), archive_util(3), libarchive(3), tar(5)
-BSD February 2, 2012 BSD
+BSD February 2, 2012 BSD
archive_read_format(3), archive_read_set_options(3), archive_util(3),
libarchive(3), tar(5)
-BSD February 2, 2012 BSD
+BSD February 2, 2012 BSD
other devices that require strict I/O blocking.
archive_read_open_fd()
Like archive_read_open(), except that it accepts a file descrip‐
- tor and block size rather than a set of function pointers. Note
+ tor and block size rather than a set of function pointers. Note
that the file descriptor will not be automatically closed at end-
of-archive. This function is safe for use with tape drives or
other blocked devices.
archive_read_format(3), archive_read_set_options(3), archive_util(3),
libarchive(3), tar(5)
-BSD February 2, 2012 BSD
+BSD February 2, 2012 BSD
-ARCHIVE_READ_OPTIONS(3) BSD Library Functions Manual ARCHIVE_READ_OPTIONS(3)
+ARCHIVE_READ_OPTIONS(3) BSD Library Functions Manual ARCHIVE_READ_OPTIONS(3)
NAME
archive_read_set_filter_option, archive_read_set_format_option,
returned.
If module is NULL, option and value will be provided to every
- registered module. If any module returns ARCHIVE_FATAL, this
+ registered module. If any module returns ARCHIVE_FATAL, this
value will be returned immediately. Otherwise, ARCHIVE_OK will
be returned if any module accepts the option, and ARCHIVE_FAILED
in all other cases.
archive_read_set_option()
Calls archive_read_set_format_option(), then
archive_read_set_filter_option(). If either function returns
- ARCHIVE_FATAL, ARCHIVE_FATAL will be returned immediately. Oth‐
+ ARCHIVE_FATAL, ARCHIVE_FATAL will be returned immediately. Oth‐
erwise, greater of the two values will be returned.
archive_read_set_options()
the original PWB cpio format, and handle file mode bits
accordingly. The default is to assume v7 format.
Format iso9660
- joliet Support Joliet extensions. Defaults to enabled, use
+ joliet Support Joliet extensions. Defaults to enabled, use
!joliet to disable.
rockridge
Support RockRidge extensions. Defaults to enabled, use
multiple tar archives have been concatenated together.
Without this option, only the contents of the first con‐
catenated archive would be read.
+ Format zip
+ compat-2x
+ Libarchive 2.x incorrectly encoded Unicode filenames on
+ some platforms. This option mimics the libarchive 2.x
+ filename handling so that such archives can be read cor‐
+ rectly.
+ hdrcharset
+ The value is used as a character set name that will be
+ used when translating file names.
+ ignorecrc32
+ Skip the CRC32 check. Mostly used for testing.
+ mac-ext
+ Support Mac OS metadata extension that records data in
+ special files beginning with a period and underscore.
+ Defaults to enabled on Mac OS, disabled on other plat‐
+ forms. Use !mac-ext to disable.
ERRORS
Detailed error codes and textual descriptions are available from the
SEE ALSO
tar(1), archive_read(3), archive_write_set_options(3), libarchive(3)
-BSD January 31, 2020 BSD
+BSD January 31, 2020 BSD
-ARCHIVE_UTIL(3) BSD Library Functions Manual ARCHIVE_UTIL(3)
+ARCHIVE_UTIL(3) BSD Library Functions Manual ARCHIVE_UTIL(3)
NAME
archive_clear_error, archive_compression, archive_compression_name,
returned by archive_errno() and archive_error_string(). This
function should be used within I/O callbacks to set system-spe‐
cific error codes and error descriptions. This function accepts
- a printf-like format string and arguments. However, you should
+ a printf-like format string and arguments. However, you should
be careful to use only the following printf format specifiers:
“%c”, “%d”, “%jd”, “%jo”, “%ju”, “%jx”, “%ld”, “%lo”, “%lu”,
“%lx”, “%o”, “%u”, “%s”, “%x”, “%%”. Field-width specifiers and
AUTHORS
The libarchive library was written by Tim Kientzle <kientzle@acm.org>.
-BSD February 2, 2012 BSD
+BSD February 2, 2012 BSD
Individual archive entries are written in a three-step process: You first
initialize a struct archive_entry structure with information about the
- new entry. At a minimum, you should set the pathname of the entry and
+ new entry. At a minimum, you should set the pathname of the entry and
provide a struct stat with a valid st_mode field, which specifies the
type of object and st_size field, which specifies the size of the data
portion of the object.
BUGS
There are many peculiar bugs in historic tar implementations that may
- cause certain programs to reject archives written by this library. For
+ cause certain programs to reject archives written by this library. For
example, several historic implementations calculated header checksums in‐
correctly and will thus reject valid archives; GNU tar does not fully
support pax interchange format; some old tar implementations required
restore device nodes with large device numbers from archives created by
this library.
-BSD February 2, 2012 BSD
+BSD February 2, 2012 BSD
Sets the block size used for writing the archive data. Every
call to the write callback function, except possibly the last
one, will use this value for the length. The default is to use a
- block size of 10240 bytes. Note that a block size of zero will
+ block size of 10240 bytes. Note that a block size of zero will
suppress internal blocking and cause writes to be sent directly
to the write callback as they occur.
archive_write_get_bytes_per_block()
Retrieve the block size to be used for writing. A value of -1
- here indicates that the library should use default values. A
+ here indicates that the library should use default values. A
value of zero indicates that internal blocking is suppressed.
archive_write_set_bytes_in_last_block()
tar(1), archive_write_set_options(3), libarchive(3), cpio(5), mtree(5),
tar(5)
-BSD February 2, 2012 BSD
+BSD February 2, 2012 BSD
like archive_write_data() except that it performs a seek on the
file being written to the specified offset before writing the
data. This is useful when restoring sparse files from archive
- formats that support sparse files. Returns number of bytes writ‐
+ formats that support sparse files. Returns number of bytes writ‐
ten or -1 on error. (Note: This is currently not supported for
archive_write handles, only for archive_write_disk handles.
BUGS
In libarchive 3.x, this function sometimes returns zero on success in‐
stead of returning the number of bytes written. Specifically, this oc‐
- curs when writing to an archive_write_disk handle. Clients should treat
+ curs when writing to an archive_write_disk handle. Clients should treat
any value less than zero as an error and consider any non-negative value
as success.
DESCRIPTION
These functions provide a complete API for creating objects on disk from
- struct archive_entry descriptions. They are most naturally used when ex‐
+ struct archive_entry descriptions. They are most naturally used when ex‐
tracting objects from an archive using the archive_read() interface. The
general process is to read struct archive_entry objects from an archive,
then write those objects to a struct archive object created using the
(Linux) or chflags(1) (FreeBSD, Mac OS X) for more infor‐
mation on file attributes.
ARCHIVE_EXTRACT_MAC_METADATA
- Mac OS X specific. Restore metadata using copyfile(3).
+ Mac OS X specific. Restore metadata using copyfile(3).
By default, copyfile(3) metadata is ignored.
ARCHIVE_EXTRACT_NO_OVERWRITE
Existing files on disk will not be overwritten. By de‐
ARCHIVE_EXTRACT_PERM
Full permissions (including SGID, SUID, and sticky bits)
should be restored exactly as specified, without obeying
- the current umask. Note that SUID and SGID bits can only
+ the current umask. Note that SUID and SGID bits can only
be restored if the user and group ID of the object on
disk are correct. If ARCHIVE_EXTRACT_OWNER is not speci‐
fied, then SUID and SGID bits will only be restored if
ARCHIVE_EXTRACT_SAFE_WRITES
Extract files atomically, by first creating a unique tem‐
porary file and then renaming it to its required destina‐
- tion name. This avoids a race where an application might
+ tion name. This avoids a race where an application might
see a partial file (or no file) during extraction.
ARCHIVE_EXTRACT_SECURE_NOABSOLUTEPATHS
Refuse to extract an absolute path. The default is to
help guard against a variety of mischief caused by ar‐
chives that (deliberately or otherwise) extract files
outside of the current directory. The default is not to
- perform this check. If
+ perform this check. If ARCHIVE_EXTRACT_UNLINK is speci‐
+ fied together with this option, the library will remove
+ any intermediate symlinks it finds and return an error
+ only if such symlink could not be removed.
ARCHIVE_EXTRACT_SPARSE
Scan data for blocks of NUL bytes and try to recreate
them with holes. This results in sparse files, indepen‐
dent of whether the archive format supports or uses them.
- ARCHIVE_EXTRACT_UNLINK is specified together with this
- option, the library will remove any intermediate symlinks
- it finds and return an error only if such symlink could
- not be removed.
ARCHIVE_EXTRACT_TIME
The timestamps (mtime, ctime, and atime) should be re‐
stored. By default, they are ignored. Note that restor‐
This convenience function installs a standard set of user and
group lookup functions. These functions use getpwnam(3) and
getgrnam(3) to convert names to ids, defaulting to the ids if the
- names cannot be looked up. These functions also implement a sim‐
+ names cannot be looked up. These functions also implement a sim‐
ple memory cache to reduce the number of calls to getpwnam(3) and
getgrnam(3).
More information about the struct archive object and the overall design
- of the library can be found in the libarchive(3) overview. Many of these
+ of the library can be found in the libarchive(3) overview. Many of these
functions are also documented under archive_write(3).
RETURN VALUES
The libarchive library was written by Tim Kientzle <kientzle@acm.org>.
BUGS
- Directories are actually extracted in two distinct phases. Directories
+ Directories are actually extracted in two distinct phases. Directories
are created during archive_write_header(), but final permissions are not
set until archive_write_close(). This separation is necessary to cor‐
rectly handle borderline cases such as a non-writable directory contain‐
The library attempts to create objects with filenames longer than
PATH_MAX by creating prefixes of the full path and changing the current
- directory. Currently, this logic is limited in scope; the fixup pass
+ directory. Currently, this logic is limited in scope; the fixup pass
does not work correctly for such objects and the symlink security check
option disables the support for very long pathnames.
with a single request. Of course, this does not work if the
ARCHIVE_EXTRACT_NODOTDOT option is specified.
- Implicit directories are always created obeying the current umask. Ex‐
+ Implicit directories are always created obeying the current umask. Ex‐
plicit objects are created obeying the current umask unless
ARCHIVE_EXTRACT_PERM is specified, in which case they current umask is
ignored.
SGID and SUID bits are restored only if the correct user and group could
be set. If ARCHIVE_EXTRACT_OWNER is not specified, then no attempt is
- made to set the ownership. In this case, SGID and SUID bits are restored
+ made to set the ownership. In this case, SGID and SUID bits are restored
only if the user and group of the final object happen to match those
specified in the entry.
There should be a corresponding archive_read_disk interface that walks a
directory hierarchy and returns archive entry objects.
-BSD January 19, 2020 BSD
+BSD January 19, 2020 BSD
-ARCHIVE_WRITE_FILTER(3) BSD Library Functions Manual ARCHIVE_WRITE_FILTER(3)
+ARCHIVE_WRITE_FILTER(3) BSD Library Functions Manual ARCHIVE_WRITE_FILTER(3)
NAME
archive_write_add_filter_b64encode, archive_write_add_filter_by_name,
tar(1), archive_write(3), archive_write_format(3),
archive_write_set_options(3), libarchive(3), cpio(5), mtree(5), tar(5)
-BSD August 14, 2014 BSD
+BSD August 14, 2014 BSD
-ARCHIVE_WRITE_FORMAT(3) BSD Library Functions Manual ARCHIVE_WRITE_FORMAT(3)
+ARCHIVE_WRITE_FORMAT(3) BSD Library Functions Manual ARCHIVE_WRITE_FORMAT(3)
NAME
archive_write_set_format, archive_write_set_format_7zip,
archive_write_set_format_filter_by_ext()
archive_write_set_format_filter_by_ext_def()
- Sets both filters and format based on the output filename. Sup‐
+ Sets both filters and format based on the output filename. Sup‐
ported extensions: .7z, .zip, .jar, .cpio, .iso, .a, .ar, .tar,
.tgz, .tar.gz, .tar.bz2, .tar.xz
tar(1), archive_write_set_options(3), libarchive(3), cpio(5), mtree(5),
tar(5)
-BSD February 2, 2012 BSD
+BSD February 2, 2012 BSD
-ARCHIVE_WRITE_HEADER(3) BSD Library Functions Manual ARCHIVE_WRITE_HEADER(3)
+ARCHIVE_WRITE_HEADER(3) BSD Library Functions Manual ARCHIVE_WRITE_HEADER(3)
NAME
archive_write_header — functions for creating archives
tar(1), archive_write_set_options(3), libarchive(3), cpio(5), mtree(5),
tar(5)
-BSD February 2, 2012 BSD
+BSD February 2, 2012 BSD
tar(1), archive_write(3), archive_write_set_options(3), libarchive(3),
cpio(5), mtree(5), tar(5)
-BSD February 2, 2012 BSD
+BSD February 2, 2012 BSD
A convenience form of archive_write_open() that accepts a file‐
name. A NULL argument indicates that the output should be writ‐
ten to standard output; an argument of “-” will open a file with
- that name. If you have not invoked
+ that name. If you have not invoked
archive_write_set_bytes_in_last_block(), then
archive_write_open_filename() will adjust the last-block padding
depending on the file: it will enable padding when writing to
standard output or to a character or block device node, it will
- disable padding otherwise. You can override this by manually in‐
+ disable padding otherwise. You can override this by manually in‐
voking archive_write_set_bytes_in_last_block() before calling
archive_write_open2(). The archive_write_open_filename() func‐
tion is safe for use with tape drives or other block-oriented de‐
final size_t * argument points to a variable that will be updated
after each write to reflect how much of the buffer is currently
in use. You should be careful to ensure that this variable re‐
- mains allocated until after the archive is closed. This function
+ mains allocated until after the archive is closed. This function
will disable padding unless you have specifically set the block
size.
More information about the struct archive object and the overall design
CLIENT CALLBACKS
To use this library, you will need to define and register callback func‐
- tions that will be invoked to write data to the resulting archive. These
+ tions that will be invoked to write data to the resulting archive. These
functions are registered by calling archive_write_open2():
typedef int archive_open_callback(struct archive *, void
The write callback is invoked whenever the library needs to write raw
bytes to the archive. For correct blocking, each call to the write call‐
- back function should translate into a single write(2) system call. This
+ back function should translate into a single write(2) system call. This
is especially critical when writing archives to tape drives. On success,
the write callback should return the number of bytes actually written.
On error, the callback should invoke archive_set_error() to register an
ing is complete. If the open callback fails, the close callback is not
invoked. The callback should return ARCHIVE_OK on success. On failure,
the callback should invoke archive_set_error() to register an error code
- and message and return
+ and message and return ARCHIVE_FATAL.
typedef int archive_free_callback(struct archive *, void
*client_data)
be returned.
If module is NULL, option and value will be provided to every
- registered module. If any module returns ARCHIVE_FATAL, this
+ registered module. If any module returns ARCHIVE_FATAL, this
value will be returned immediately. Otherwise, ARCHIVE_OK will
be returned if any module accepts the option, and ARCHIVE_FAILED
in all other cases.
archive_write_set_option()
Calls archive_write_set_format_option(), then
- archive_write_set_filter_option(). If either function returns
- ARCHIVE_FATAL, ARCHIVE_FATAL will be returned immediately. Oth‐
+ archive_write_set_filter_option(). If either function returns
+ ARCHIVE_FATAL, ARCHIVE_FATAL will be returned immediately. Oth‐
erwise, the greater of the two values will be returned.
archive_write_set_options()
The value is interpreted as a decimal integer specifying
the compression level. Supported values depend on the li‐
brary version, common values are from 1 to 22.
+ long Enables long distance matching. The value is interpreted
+ as a decimal integer specifying log2 window size in
+ bytes. Values from 10 to 30 for 32 bit, or 31 for 64 bit,
+ are supported.
+ threads
+ The value is interpreted as a decimal integer specifying
+ the number of threads for multi-threaded zstd compres‐
+ sion. If set to 0, zstd will attempt to detect and use
+ the number of physical CPU cores.
Format 7zip
compression
The value is one of “store”, “deflate”, “bzip2”, “lzma1”,
period will have that period replaced by an underscore
character in the standard ISO9660 namespace. This does
not impact names stored in the Rockridge or Joliet exten‐
- sion area. Default: disabled.
+ sion area. Default: disabled.
allow-lowercase
If enabled, allows filenames to contain lowercase charac‐
ters. If disabled, filenames will be forced to upper‐
characters, in violation of the ISO9660 specification.
If disabled, additional periods will be converted to un‐
derscore characters. This does not impact names stored
- in the Rockridge or Joliet extension area. Default: dis‐
+ in the Rockridge or Joliet extension area. Default: dis‐
abled.
allow-period
If enabled, allows filenames to contain trailing period
joliet Microsoft's Joliet extensions store a completely separate
set of directory information about each file. In partic‐
ular, this information includes Unicode filenames of up
- to 255 characters. Default: enabled.
+ to 255 characters. Default: enabled.
limit-depth
If enabled, libarchive will use directory relocation
records to ensure that no pathname exceeds the ISO9660
If enabled, all 7-bit ASCII characters are permitted in
filenames (except lowercase characters unless
allow-lowercase is also specified). This violates
- ISO9660 standards. This does not impact names stored in
+ ISO9660 standards. This does not impact names stored in
the Rockridge or Joliet extension area. Default: dis‐
abled.
rockridge
fault: 6
zisofs Synonym for zisofs=direct.
zisofs=direct
- Compress each file in the archive. Unlike
+ Compress each file in the archive. Unlike
zisofs=indirect, this is handled entirely within
libarchive and does not require a separate utility. For
best results, libarchive tests each file and will store
Michihiro NAKAJIMA.
BUGS
-BSD January 31, 2020 BSD
+BSD January 31, 2020 BSD
DESCRIPTION
archive_write_set_passphrase()
- Set a passphrase for writing an encrypted archive. If passphrase
+ Set a passphrase for writing an encrypted archive. If passphrase
is NULL or empty, this function will do nothing and
ARCHIVE_FAILED will be returned. Otherwise, ARCHIVE_OK will be
returned.
-CPIO(1) BSD General Commands Manual CPIO(1)
+CPIO(1) BSD General Commands Manual CPIO(1)
NAME
cpio — copy files to and from archives
and can create tar, pax, cpio, ar, and shar archives.
The first option to cpio is a mode indicator from the following list:
- -i Input. Read an archive from standard input (unless overridden)
+ -i Input. Read an archive from standard input (unless overridden)
and extract the contents to disk or (if the -t option is speci‐
fied) list the contents to standard output. If one or more file
patterns are specified, only files matching one of the patterns
will be extracted.
- -o Output. Read a list of filenames from standard input and produce
+ -o Output. Read a list of filenames from standard input and produce
a new archive on standard output (unless overridden) containing
the specified items.
- -p Pass-through. Read a list of filenames from standard input and
+ -p Pass-through. Read a list of filenames from standard input and
copy the files to the specified directory.
OPTIONS
(o mode only) When writing a cpio archive, use the (newer, non-
PWB) binary format.
- -A (o mode only) Append to the specified archive. (Not yet imple‐
+ -A (o mode only) Append to the specified archive. (Not yet imple‐
mented.)
- -a (o and p modes) Reset access times on files after they are read.
+ -a (o and p modes) Reset access times on files after they are read.
- -B (o mode only) Block output to records of 5120 bytes.
+ -B (o mode only) Block output to records of 5120 bytes.
-C size
(o mode only) Block output to records of size bytes.
- -c (o mode only) Use the old POSIX portable character format.
+ -c (o mode only) Use the old POSIX portable character format.
Equivalent to --format odc.
-d, --make-directories
mat.
ustar The POSIX.1 tar format.
- The default format is odc. See libarchive-formats(5) for more
+ The default format is odc. See libarchive-formats(5) for more
complete information about the formats currently supported by the
underlying libarchive(3) library.
-J, --xz
(o mode only) Compress the file with xz-compatible compression
- before writing it. In input mode, this option is ignored; xz
+ before writing it. In input mode, this option is ignored; xz
compression is recognized automatically on input.
- -j Synonym for -y.
+ -j Synonym for -y.
- -L (o and p modes) All symbolic links will be followed. Normally,
+ -L (o and p modes) All symbolic links will be followed. Normally,
symbolic links are archived and copied as symbolic links. With
this option, the target of the link will be archived or copied
instead.
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
+ before writing it. In input mode, this option is ignored; lzma
compression is recognized automatically on input.
- --lzop (o mode only) Compress the resulting archive with lzop(1). In
+ --lzop (o mode only) Compress the resulting archive with lzop(1). In
input mode, this option is ignored.
--passphrase passphrase
Output mode. See above for description.
-p, --pass-through
- Pass-through mode. See above for description.
+ Pass-through mode. See above for description.
--preserve-owner
(i mode only) Restore file ownership. This is the default when
Suppress unnecessary messages.
-R [user][:][group], --owner [user][:][group]
- Set the owner and/or group on files in the output. If group is
+ Set the owner and/or group on files in the output. If group is
specified with no user (for example, -R :wheel) then the group
will be set but not the user. If the user is specified with a
trailing colon and no group (for example, -R root:) then the
group will be set to the user's default group. If the user is
specified with no trailing colon, then the user will be set but
not the group. In -i and -p modes, this option can only be used
- by the super-user. (For compatibility, a period can be used in
+ by the super-user. (For compatibility, a period can be used in
place of the colon.)
- -r (All modes.) Rename files interactively. For each file, a
+ -r (All modes.) Rename files interactively. For each file, a
prompt is written to /dev/tty containing the name of the file and
a line is read from /dev/tty. If the line read is blank, the
file is skipped. If the line contains a single period, the file
--version
Print the program version information and exit.
- -y (o mode only) Compress the archive with bzip2-compatible compres‐
+ -y (o mode only) Compress the archive with bzip2-compatible compres‐
sion before writing it. In input mode, this option is ignored;
bzip2 compression is recognized automatically on input.
- -Z (o mode only) Compress the archive with compress-compatible com‐
+ -Z (o mode only) Compress the archive with compress-compatible com‐
pression before writing it. In input mode, this option is ig‐
nored; compression is recognized automatically on input.
- -z (o mode only) Compress the archive with gzip-compatible compres‐
+ -z (o mode only) Compress the archive with gzip-compatible compres‐
sion before writing it. In input mode, this option is ignored;
gzip compression is recognized automatically on input.
LANG The locale to use. See environ(7) for more information.
- TZ The timezone to use when displaying dates. See environ(7) for
+ TZ The timezone to use when displaying dates. See environ(7) for
more information.
EXAMPLES
The cpio command is traditionally used to copy file hierarchies in con‐
- junction with the find(1) command. The first example here simply copies
+ junction with the find(1) command. The first example here simply copies
all files from src to dest:
find src | cpio -pmud dest
The cpio archive format has several basic limitations: It does not store
user and group names, only numbers. As a result, it cannot be reliably
used to transfer files between systems with dissimilar user and group
- numbering. Older cpio formats limit the user and group numbers to 16 or
- 18 bits, which is insufficient for modern systems. The cpio archive for‐
+ numbering. Older cpio formats limit the user and group numbers to 16 or
+ 18 bits, which is insufficient for modern systems. The cpio archive for‐
mats cannot support files over 4 gigabytes, except for the “odc” variant,
which can support files up to 8 gigabytes.
provided for compatibility with historical implementations. See COMPATI‐
BILITY below for details.
- The other synopsis forms show the preferred usage. The first option to
+ The other synopsis forms show the preferred usage. The first option to
tar is a mode indicator from the following list:
- -c Create a new archive containing the specified items. The long
+ -c Create a new archive containing the specified items. The long
option form is --create.
- -r Like -c, but new entries are appended to the archive. Note that
+ -r Like -c, but new entries are appended to the archive. Note that
this only works on uncompressed archives stored in regular files.
- The -f option is required. The long option form is --append.
- -t List archive contents to stdout. The long option form is --list.
- -u Like -r, but new entries are added only if they have a modifica‐
+ The -f option is required. The long option form is --append.
+ -t List archive contents to stdout. The long option form is --list.
+ -u Like -r, but new entries are added only if they have a modifica‐
tion date newer than the corresponding entry in the archive.
Note that this only works on uncompressed archives stored in reg‐
ular files. The -f option is required. The long form is
--update.
- -x Extract to disk from the archive. If a file with the same name
+ -x Extract to disk from the archive. If a file with the same name
appears more than once in the archive, each copy will be ex‐
tracted, with later copies overwriting (replacing) earlier
copies. The long option form is --extract.
group name that will be stored in the archive; the name will not
be verified against the system group database.
- -H (c and r modes only) Symbolic links named on the command line
+ -H (c and r modes only) Symbolic links named on the command line
will be followed; the target of the link will be archived, not
the link itself.
- -h (c and r modes only) Synonym for -L.
+ -h (c and r modes only) Synonym for -L.
- -I Synonym for -T.
+ -I Synonym for -T.
--help Show usage.
be created with --xz instead. Note that this tar implementation
recognizes LZMA compression automatically when reading archives.
- --lzop (c mode only) Compress the resulting archive with lzop(1). In
+ --lzop (c mode only) Compress the resulting archive with lzop(1). In
extract or list modes, this option is ignored. Note that this
tar implementation recognizes LZO compression automatically when
reading archives.
format. This is the reverse of --mac-metadata. and the default
behavior if tar is run as non-root in x mode.
+ --no-read-sparse
+ (c, r, u modes only) Do not read sparse file information from
+ disk. This is the reverse of --read-sparse.
+
--no-safe-writes
(x mode only) Do not create temporary files and use rename(2) to
- replace the original ones. This is the reverse of --safe-writes.
+ replace the original ones. This is the reverse of --safe-writes.
--no-same-owner
(x mode only) Do not extract owner and group IDs. This is the
--numeric-owner
This is equivalent to --uname "" --gname "". On extract, it
causes user and group names in the archive to be ignored in favor
- of the numeric user and group ids. On create, it causes user and
+ of the numeric user and group ids. On create, it causes user and
group names to not be stored in the archive.
-O, --to-stdout
mode, the file listing will be written to stderr rather than the
usual stdout.
- -o (x mode) Use the user and group of the user running the program
+ -o (x mode) Use the user and group of the user running the program
rather than those specified in the archive. Note that this has
no significance unless -p is specified, and the program is being
run by the root user. In this case, the file modes and flags
from the archive will be restored, but ACLs or owner information
in the archive will be discarded.
- -o (c, r, u mode) A synonym for --format ustar
+ -o (c, r, u mode) A synonym for --format ustar
--older date
(c, r, u modes only) Only include files and directories older
Examples of supported options:
iso9660:joliet
- Support Joliet extensions. This is enabled by default,
+ Support Joliet extensions. This is enabled by default,
use !joliet or iso9660:!joliet to disable.
iso9660:rockridge
Support Rock Ridge extensions. This is enabled by de‐
A decimal integer specifying the zstd compression level.
Supported values depend on the library version, common
values are from 1 to 22.
+ zstd:threads
+ Specify the number of worker threads to use. Setting
+ threads to a special value 0 makes zstd(1) use as many
+ threads as there are CPU cores on the system.
+ zstd:frame-per-file
+ Start a new compression frame at the beginning of each
+ file in the archive.
+ zstd:min-frame-size=N
+ In combination with zstd:frame-per-file, do not start a
+ new compression frame unless the current frame is at
+ least N bytes.
+ zstd:max-frame-size=N
+ Start a new compression frame as soon as the current
+ frame exceeds N bytes.
lzop:compression-level
A decimal integer from 1 to 9 specifying the lzop com‐
pression level.
xz:compression-level
A decimal integer from 0 to 9 specifying the xz compres‐
sion level.
+ xz:threads
+ Specify the number of worker threads to use. Setting
+ threads to a special value 0 makes xz(1) use as many
+ threads as there are CPU cores on the system.
mtree:keyword
The mtree writer module allows you to specify which mtree
keywords will be included in the output. Supported key‐
lent to: “device, flags, gid, gname, link, mode, nlink,
size, time, type, uid, uname”.
mtree:all
- Enables all of the above keywords. You can also use
+ Enables all of the above keywords. You can also use
mtree:!all to disable all keywords.
mtree:use-set
Enable generation of /set lines in the output.
tries overwrite earlier entries. This option is provided as a
performance optimization.
- -S (x mode only) Extract files as sparse files. For every block on
+ --read-sparse
+ (c, r, u modes only) Read sparse file information from disk.
+ This is the reverse of --no-read-sparse and the default behavior.
+
+ -S (x mode only) Extract files as sparse files. For every block on
disk, check first if it contains only NULL bytes and seek over it
- otherwise. This works similar to the conv=sparse option of dd.
+ otherwise. This works similar to the conv=sparse option of dd.
-s pattern
Modify file or archive member names according to pattern. The
times.
--same-owner
- (x mode only) Extract owner and group IDs. This is the reverse
+ (x mode only) Extract owner and group IDs. This is the reverse
of --no-same-owner and the default behavior if tar is run as
root.
cause the current directory to be changed to the directory speci‐
fied on the following line. Names are terminated by newlines un‐
less --null is specified. Note that --null also disables the
- special handling of lines containing “-C”. Note: If you are
+ special handling of lines containing “-C”. Note: If you are
generating lists of files using find(1), you probably want to use
-n as well.
-U, --unlink, --unlink-first
(x mode only) Unlink files before creating them. This can be a
minor performance optimization if most files already exist, but
- can make things slower if most files do not already exist. This
+ can make things slower if most files do not already exist. This
flag also causes tar to remove intervening directory symlinks in‐
stead of reporting an error. See the SECURITY section below for
more details.
Ask for confirmation for every action.
-X filename, --exclude-from filename
- Read a list of exclusion patterns from the specified file. See
+ Read a list of exclusion patterns from the specified file. See
--exclude for more information about the handling of exclusions.
--xattrs
tributes. This is the reverse of --no-xattrs and the default be‐
havior in c, r, and u modes or if tar is run in x mode as root.
- -y (c mode only) Compress the resulting archive with bzip2(1). In
+ -y (c mode only) Compress the resulting archive with bzip2(1). In
extract or list modes, this option is ignored. Note that this
tar implementation recognizes bzip2 compression automatically
when reading archives.
when reading archives.
-z, --gunzip, --gzip
- (c mode only) Compress the resulting archive with gzip(1). In
+ (c mode only) Compress the resulting archive with gzip(1). In
extract or list modes, this option is ignored. Note that this
tar implementation recognizes gzip compression automatically when
reading archives.
The following environment variables affect the execution of tar:
TAR_READER_OPTIONS
- The default options for format readers and compression read‐
- ers. The --options option overrides this.
+ The default options for format readers and compression readers.
+ The --options option overrides this.
TAR_WRITER_OPTIONS
- The default options for format writers and compression writ‐
- ers. The --options option overrides this.
+ The default options for format writers and compression writers.
+ The --options option overrides this.
- LANG The locale to use. See environ(7) for more information.
+ LANG The locale to use. See environ(7) for more information.
- TAPE The default device. The -f option overrides this. Please see
- the description of the -f option above for more details.
+ TAPE The default device. The -f option overrides this. Please see
+ the description of the -f option above for more details.
- TZ The timezone to use when displaying dates. See environ(7) for
- more information.
+ TZ The timezone to use when displaying dates. See environ(7) for
+ more information.
EXIT STATUS
The tar utility exits 0 on success, and >0 if an error occurs.
include directory change instructions of the form -Cfoo/baz and archive
inclusions of the form @archive-file. For example, the command line
tar -c -f new.tar foo1 @old.tgz -C/tmp foo2
- will create a new archive new.tar. tar will read the file foo1 from the
+ will create a new archive new.tar. tar will read the file foo1 from the
current directory and add it to the output archive. It will then read
each entry from old.tgz and add those entries to the output archive. Fi‐
nally, it will switch to the /tmp directory and add foo2 to the output
separate words. The order of the arguments must match the order of the
corresponding characters in the bundled command word. For example,
tar tbf 32 file.tar
- specifies three flags t, b, and f. The b and f flags both require argu‐
+ specifies three flags t, b, and f. The b and f flags both require argu‐
ments, so there must be two additional items on the command line. The 32
is the argument to the b flag, and file.tar is the argument to the f
flag.
in their pathname.
• Archive entries can exploit symbolic links to restore files to
- other directories. An archive can restore a symbolic link to an‐
+ other directories. An archive can restore a symbolic link to an‐
other directory, then use that link to restore a file into that
- directory. To guard against this, tar checks each extracted path
+ directory. To guard against this, tar checks each extracted path
for symlinks. If the final path element is a symlink, it will be
removed and replaced with the archive entry. If -U is specified,
any intermediate symlink will also be unconditionally removed.
If neither -U nor -P is specified, tar will refuse to extract the
entry.
To protect yourself, you should be wary of any archives that come from
- untrusted sources. You should examine the contents of an archive with
+ untrusted sources. You should examine the contents of an archive with
tar -tf filename
- before extraction. You should use the -k option to ensure that tar will
+ before extraction. You should use the -k option to ensure that tar will
not overwrite any existing files or the -U option to remove any pre-ex‐
isting files. You should generally not extract archives while running
with super-user privileges. Note that the -P option to tar disables the
is a consequence of the incompatible ways that different archive formats
store hardlink information.)
-BSD January 31, 2020 BSD
+BSD December 1, 2022 BSD
-CPIO(5) BSD File Formats Manual CPIO(5)
+CPIO(5) BSD File Formats Manual CPIO(5)
NAME
cpio — format of cpio archive files
General Format
Each file system object in a cpio archive comprises a header record with
basic numeric metadata followed by the full pathname of the entry and the
- file data. The header record stores a series of integer values that gen‐
+ file data. The header record stores a series of integer values that gen‐
erally follow the fields in struct stat. (See stat(2) for details.) The
variants differ primarily in how they store those integers (binary, oc‐
tal, or hexadecimal). The header is followed by the pathname of the en‐
short h_gid;
short h_nlink;
short h_majmin;
- long h_mtime;
+ long h_mtime;
short h_namesize;
- long h_filesize;
+ long h_filesize;
};
The short fields here are 16-bit integer values, while the long fields
only used an unsigned 24 bit integer for the file size inter‐
nally.
- The pathname immediately follows the fixed header. If h_namesize is odd,
+ The pathname immediately follows the fixed header. If h_namesize is odd,
an additional NUL byte is added after the pathname. The file data is
then appended, again with an additional NUL appended if needed to get the
next header at an even offset.
start of the header. The 32 bit integers are still always stored with
the most significant word first, though, so each of those two, in the
struct shown above, was stored as an array of two 16 bit integers, in the
- traditional order. Those 16 bit integers, like all the others in the
+ traditional order. Those 16 bit integers, like all the others in the
struct, were accessed using a macro that byte swapped them if necessary.
Next, 7th Edition had more file types to store, and the IALLOC and ILARG
6-character or 11-character octal values.
struct cpio_odc_header {
- char c_magic[6];
- char c_dev[6];
- char c_ino[6];
- char c_mode[6];
- char c_uid[6];
- char c_gid[6];
- char c_nlink[6];
- char c_rdev[6];
- char c_mtime[11];
- char c_namesize[6];
- char c_filesize[11];
+ char c_magic[6];
+ char c_dev[6];
+ char c_ino[6];
+ char c_mode[6];
+ char c_uid[6];
+ char c_gid[6];
+ char c_nlink[6];
+ char c_rdev[6];
+ char c_mtime[11];
+ char c_namesize[6];
+ char c_filesize[11];
};
The fields are identical to those in the new binary format. The name and
- file body follow the fixed header. Unlike the binary formats, there is
- no additional padding after the pathname or file contents. If the files
+ file body follow the fixed header. Unlike the binary formats, there is
+ no additional padding after the pathname or file contents. If the files
being archived are themselves entirely ASCII, then the resulting archive
will be entirely ASCII, except for the NUL byte that terminates the name
field.
bers.
struct cpio_newc_header {
- char c_magic[6];
- char c_ino[8];
- char c_mode[8];
- char c_uid[8];
- char c_gid[8];
- char c_nlink[8];
- char c_mtime[8];
- char c_filesize[8];
- char c_devmajor[8];
- char c_devminor[8];
- char c_rdevmajor[8];
- char c_rdevminor[8];
- char c_namesize[8];
- char c_check[8];
+ char c_magic[6];
+ char c_ino[8];
+ char c_mode[8];
+ char c_uid[8];
+ char c_gid[8];
+ char c_nlink[8];
+ char c_mtime[8];
+ char c_filesize[8];
+ char c_devmajor[8];
+ char c_devminor[8];
+ char c_rdevmajor[8];
+ char c_rdevminor[8];
+ char c_namesize[8];
+ char c_check[8];
};
Except as specified below, the fields here match those specified for the
STANDARDS
The cpio utility is no longer a part of POSIX or the Single Unix Stan‐
dard. It last appeared in Version 2 of the Single UNIX Specification
- (“SUSv2”). It has been supplanted in subsequent standards by pax(1).
+ (“SUSv2”). It has been supplanted in subsequent standards by pax(1).
The portable ASCII format is currently part of the specification for the
pax(1) utility.
HISTORY
The original cpio utility was written by Dick Haight while working in
- AT&T's Unix Support Group. It appeared in 1977 as part of PWB/UNIX 1.0,
- the “Programmer's Work Bench” derived from AT&T UNIX 6th Edition UNIX
- that was used internally at AT&T. Both the new binary and old character
- formats were in use by 1980, according to the System III source released
- by SCO under their “Ancient Unix” license. The character format was
- adopted as part of IEEE Std 1003.1-1988 (“POSIX.1”). XXX when did "newc"
- appear? Who invented it? When did HP come out with their variant? When
- did Sun introduce ACLs and extended attributes? XXX
+ AT&T's Unix Support Group. It appeared in 1977 as part of PWB/UNIX 1.0,
+ the “Programmer's Work Bench” derived from Version 6 AT&T UNIX that was
+ used internally at AT&T. Both the new binary and old character formats
+ were in use by 1980, according to the System III source released by SCO
+ under their “Ancient Unix” license. The character format was adopted as
+ part of IEEE Std 1003.1-1988 (“POSIX.1”). XXX when did "newc" appear?
+ Who invented it? When did HP come out with their variant? When did Sun
+ introduce ACLs and extended attributes? XXX
BUGS
The “CRC” format is mis-named, as it uses a simple checksum and not a
cyclic redundancy check.
The binary formats are limited to 16 bits for user id, group id, device,
- and inode numbers. They are limited to 16 megabyte and 2 gigabyte file
+ and inode numbers. They are limited to 16 megabyte and 2 gigabyte file
sizes for the older and newer variants, respectively.
The old ASCII format is limited to 18 bits for the user id, group id, de‐
interchange format archives. Pax interchange format archives are
an extension of the older ustar format that adds a separate entry
with additional attributes stored as key/value pairs immediately
- before each regular entry. The presence of these additional en‐
+ before each regular entry. The presence of these additional en‐
tries is the only difference between pax interchange format and
the older ustar format. The extended attributes are of unlimited
length and are stored as UTF-8 Unicode strings. Keywords defined
in the standard are in all lowercase; vendors are allowed to de‐
fine custom keys by preceding them with the vendor name in all
- uppercase. When writing pax archives, libarchive uses many of
+ uppercase. When writing pax archives, libarchive uses many of
the SCHILY keys defined by Joerg Schilling's “star” archiver and
a few LIBARCHIVE keys. The libarchive library can read most of
the SCHILY keys and most of the GNU keys introduced by GNU tar.
ustar The libarchive library can both read and write this format. This
format has the following limitations:
- • Device major and minor numbers are limited to 21 bits. Nodes
+ • Device major and minor numbers are limited to 21 bits. Nodes
with larger numbers will not be added to the archive.
• Path names in the archive are limited to 255 bytes. (Shorter
if there is no / character in exactly the right place.)
tions. The ustar format is old and widely supported. It is rec‐
ommended when compatibility is the primary concern.
- v7 The libarchive library can read and write the legacy v7 tar for‐
+ v7 The libarchive library can read and write the legacy v7 tar for‐
mat. This format has the following limitations:
• Only regular files, directories, and symbolic links can be
archived. Block and character device nodes, FIFOs, and sock‐
archive format” and sometimes unofficially referred to as the
“old character format”. This format stores the header contents
as octal values in ASCII. It is standard, portable, and immune
- from byte-order confusion. File sizes and mtime are limited to
+ from byte-order confusion. File sizes and mtime are limited to
33 bits (8GB file size), other fields are limited to 18 bits.
SVR4/newc
of AT&T in 1981. This makes cpio older than tar, although cpio was not
included in Version 7 AT&T Unix. As a result, the tar command became
much better known in universities and research groups that used Version
- 7. The combination of the find and cpio utilities provided very precise
+ 7. The combination of the find and cpio utilities provided very precise
control over file selection. Unfortunately, the format has many limita‐
tions that make it unsuitable for widespread use. Only the POSIX format
permits files over 4GB, and its 18-bit limit for most other fields makes
shardump
This format is similar to shar but encodes files using
uuencode(1) so that the result will be a plain text file regard‐
- less of the file contents. It also includes additional shell
+ less of the file contents. It also includes additional shell
commands that attempt to reproduce as many file attributes as
possible, including owner, mode, and flags. The additional com‐
mands used to restore file attributes make shardump archives less
Libarchive reads ISO9660 images using a streaming strategy. This allows
it to read compressed images directly (decompressing on the fly) and al‐
lows it to read images directly from network sockets, pipes, and other
- non-seekable data sources. This strategy works well for optimized
+ non-seekable data sources. This strategy works well for optimized
ISO9660 images created by many popular programs. Such programs collect
all directory information at the beginning of the ISO9660 image so it can
be read from a physical disk with a minimum of seeking. However, not all
The streaming reader processes Zip archives as they are read. It can
read archives of arbitrary size from tape or network sockets, and can de‐
- code Zip archives that have been separately compressed or encoded. How‐
+ code Zip archives that have been separately compressed or encoded. How‐
ever, self-extracting Zip archives and archives with certain types of
- modifications cannot be correctly handled. Such archives require that
+ modifications cannot be correctly handled. Such archives require that
the reader first process the Central Directory, which is ordinarily lo‐
cated at the end of a Zip archive and is thus inaccessible to the stream‐
ing reader. If the program using libarchive has enabled seek support,
primarily in their handling of filenames longer than 15 characters: the
GNU/SVR4 variant writes a filename table at the beginning of the archive;
the BSD format stores each long filename in an extension area adjacent to
- the entry. Libarchive can read both extensions, including archives that
+ the entry. Libarchive can read both extensions, including archives that
may include both types of long filenames. Programs using libarchive can
write GNU/SVR4 format if they provide an entry called // containing a
filename table to be written into the archive before any of the entries.
many of the keywords cannot currently be stored in an archive_entry ob‐
ject. When writing, libarchive supports use of the
archive_write_set_options(3) interface to specify which keywords should
- be included in the output. If libarchive was compiled with access to
+ be included in the output. If libarchive was compiled with access to
suitable cryptographic libraries (such as the OpenSSL libraries), it can
compute hash entries such as sha512 or md5 from file data being written
to the mtree writer.
• the POSIX “pax interchange” format,
• GNU-format tar archives,
• most common cpio archive formats,
- • ISO9660 CD images (including RockRidge and Joliet extensions),
- • Zip archives,
+ • 7-Zip archives,
• ar archives (including GNU/SysV and BSD extensions),
• Microsoft CAB archives,
+ • ISO9660 CD images (including RockRidge and Joliet extensions),
• LHA archives,
• mtree file tree descriptions,
- • RAR archives,
- • XAR archives.
- The library automatically detects archives compressed with gzip(1),
- bzip2(1), xz(1), lzip(1), or compress(1) and decompresses them transpar‐
- ently. It can similarly detect and decode archives processed with
- uuencode(1) or which have an rpm(1) header.
+ • RAR and most RAR5 archives,
+ • WARC archives,
+ • XAR archives,
+ • Zip archives.
+ The library automatically detects archives compressed with compress(1),
+ bzip2(1), grzip(1), gzip(1), lrzip(1), lz4(1), lzip(1), lzop(1), xz(1),
+ or zstd(1) and decompresses them transparently. Decompression of some
+ formats requires external decompressor utilities. It can similarly de‐
+ tect and decode archives processed with uuencode(1) or which have an
+ rpm(1) header.
When writing an archive, you can specify the compression to be used and
- the format to use. The library can write
+ the format to use. The library can write
• POSIX-standard “ustar” archives,
• POSIX “pax interchange format” archives,
• cpio archives,
- • Zip archive,
- • two different variants of shar archives,
- • ISO9660 CD images,
• 7-Zip archives,
• ar archives,
+ • two different variants of shar archives,
+ • ISO9660 CD images,
• mtree file tree descriptions,
- • XAR archives.
+ • XAR archives,
+ • Zip archive.
Pax interchange format is an extension of the tar archive format that
eliminates essentially all of the limitations of historic tar formats in
a standard fashion that is supported by POSIX-compliant pax(1) implemen‐
WRITING ENTRIES TO DISK
The archive_write_disk(3) API allows you to write archive_entry(3) ob‐
- jects to disk using the same API used by archive_write(3). The
+ jects to disk using the same API used by archive_write(3). The
archive_write_disk(3) API is used internally by archive_read_extract();
using it directly can provide greater control over how entries get writ‐
ten to disk. This API also makes it possible to share code between ar‐
Users familiar with historic formats should be aware that the newer vari‐
ants have eliminated most restrictions on the length of textual fields.
Clients should not assume that filenames, link names, user names, or
- group names are limited in length. In particular, pax interchange format
+ group names are limited in length. In particular, pax interchange format
can easily accommodate pathnames in arbitrary character sets that exceed
PATH_MAX.
cated and initialized struct archive object.
archive_read_data() and archive_write_data() return a count of the number
- of bytes actually read or written. A value of zero indicates the end of
+ of bytes actually read or written. A value of zero indicates the end of
the data for this entry. A negative value indicates an error, in which
case the archive_errno() and archive_error_string() functions can be used
to obtain more information.
-LIBARCHIVE_INTERNALS(3) BSD Library Functions Manual LIBARCHIVE_INTERNALS(3)
+LIBARCHIVE_INTERNALS(3) BSD Library Functions Manual LIBARCHIVE_INTERNALS(3)
NAME
libarchive_internals — description of libarchive internal interfaces
archive object to read entries and bodies from an archive stream. Inter‐
nally, the archive object is cast to an archive_read object, which holds
all read-specific data. The API has four layers: The lowest layer is the
- I/O layer. This layer can be overridden by clients, but most clients use
+ I/O layer. This layer can be overridden by clients, but most clients use
the packaged I/O callbacks provided, for example, by
archive_read_open_memory(3), and archive_read_open_fd(3). The compres‐
sion layer calls the I/O layer to read bytes and decompresses them for
The client read callback is expected to provide a block of data on each
call. A zero-length return does indicate end of file, but otherwise
- blocks may be as small as one byte or as large as the entire file. In
+ blocks may be as small as one byte or as large as the entire file. In
particular, blocks may be of different sizes.
The client skip callback returns the number of bytes actually skipped,
- which may be much smaller than the skip requested. The only requirement
+ which may be much smaller than the skip requested. The only requirement
is that the skip not be larger. In particular, clients are allowed to
return zero for any skip that they don't want to handle. The skip call‐
back must never be invoked with a negative value.
pression handler invokes the internal
__archive_read_register_compression() function to provide bid and
initialization functions. This function returns NULL on error or
- else a pointer to a struct decompressor_t. This structure con‐
+ else a pointer to a struct decompressor_t. This structure con‐
tains a void * config slot that can be used for storing any cus‐
tomization information.
Bid The bid function is invoked with a pointer and size of a block of
The header read is usually the most complex part of any format.
There are a few strategies worth mentioning: For formats such as
tar or cpio, reading and parsing the header is straightforward
- since headers alternate with data. For formats that store all
+ since headers alternate with data. For formats that store all
header data at the beginning of the file, the first header read
request may have to read all headers into memory and store that
data, sorted by the location of the file data. Subsequent header
ber that the decompressor will return as much data as it has.
Generally, you will want to request one byte, examine the return
value to see how much data is available, and possibly trim that
- to the amount you can use. You should invoke consume for each
+ to the amount you can use. You should invoke consume for each
block just before you return it.
Skip All Data
The skip data call should skip over all file data and trailing
GENERAL SERVICES
The archive_read, archive_write, and archive_write_disk objects all con‐
tain an initial archive object which provides common support for a set of
- standard services. (Recall that ANSI/ISO C90 guarantees that you can
+ standard services. (Recall that ANSI/ISO C90 guarantees that you can
cast freely between a pointer to a structure and a pointer to the first
element of that structure.) The archive object has a magic value that
indicates which API this object is associated with, slots for storing er‐
Connecting existing archiving libraries into libarchive is generally
quite difficult. In particular, many existing libraries strongly assume
that you are reading from a file; they seek forwards and backwards as
- necessary to locate various pieces of information. In contrast,
+ necessary to locate various pieces of information. In contrast,
libarchive never seeks backwards in its input, which sometimes requires
very different approaches.
AUTHORS
The libarchive library was written by Tim Kientzle <kientzle@acm.org>.
-BSD January 26, 2011 BSD
+BSD January 26, 2011 BSD
rectory.
dot-dot As a special case, a relative entry with the filename ..
- changes the current directory to the parent directory. Op‐
+ changes the current directory to the parent directory. Op‐
tions on dot-dot entries are always ignored.
Full If the first whitespace-delimited word has a / character af‐
/set This command defines default values for one or more keywords.
It is followed on the same line by one or more whitespace-
- separated keyword definitions. These definitions apply to
+ separated keyword definitions. These definitions apply to
all following files that do not specify a value for that key‐
word.
file.
flags The file flags as a symbolic name. See chflags(1) for infor‐
- mation on these names. If no flags are to be set the string
+ mation on these names. If no flags are to be set the string
“none” may be used to override the current default.
gid The file group as a numeric value.
not in the file hierarchy.
resdevice The “resident” device number of the file, e.g. the ID of the
- device that contains the file. Its format is the same as the
+ device that contains the file. Its format is the same as the
one for device.
ripemd160digest
sha1 The FIPS 160-1 (“SHA-1”) message digest of the file.
- sha1digest A synonym for sha1.
+ sha1digest A synonym for sha1.
sha256 The FIPS 180-2 (“SHA-256”) message digest of the file.
fifo fifo
file regular file
link symbolic link
- socket socket
+ socket socket
uid The file owner as a numeric value.
cksum(1), find(1), mtree(8)
HISTORY
- The mtree utility appeared in 4.3BSD-Reno. The MD5 digest capability was
+ The mtree utility appeared in 4.3BSD-Reno. The MD5 digest capability was
added in FreeBSD 2.1, in response to the widespread use of programs which
can spoof cksum(1). The SHA-1 and RIPEMD160 digests were added in
FreeBSD 4.0, as new attacks have demonstrated weaknesses in MD5. The
User id and group id of owner, as octal numbers in ASCII.
size Size of file, as octal number in ASCII. For regular files only,
- this indicates the amount of data that follows the header. In
+ this indicates the amount of data that follows the header. In
particular, this field was ignored by early tar implementations
- when extracting hardlinks. Modern writers should always store a
+ when extracting hardlinks. Modern writers should always store a
zero length for hardlink entries.
mtime Modification time of file, as an octal number in ASCII. This in‐
the checksum, set the checksum field to all spaces, then sum all
bytes in the header using unsigned arithmetic. This field should
be stored as six octal digits followed by a null and a space
- character. Note that many early implementations of tar used
+ character. Note that many early implementations of tar used
signed arithmetic for the checksum field, which can cause inter‐
operability problems when transferring archives between systems.
Modern robust readers compute the checksum both ways and accept
IEEE Std 1003.1-1988 (“POSIX.1”) defined a standard tar file format to be
read and written by compliant implementations of tar(1). This format is
often called the “ustar” format, after the magic value used in the
- header. (The name is an acronym for “Unix Standard TAR”.) It extends
+ header. (The name is an acronym for “Unix Standard TAR”.) It extends
the historic format with new fields:
struct header_posix_ustar {
name, prefix
If the pathname is too long to fit in the 100 bytes provided by
the standard format, it can be split at any / character with the
- first portion going into the prefix field. If the prefix field
+ first portion going into the prefix field. If the prefix field
is not empty, the reader will prepend the prefix value and a /
character to the regular name field to obtain the full pathname.
The standard does not require a trailing / character on directory
allows file sizes up to 64 GB.
Another extension, utilized by GNU tar, star, and other newer tar imple‐
- mentations, permits binary numbers in the standard numeric fields. This
+ mentations, permits binary numbers in the standard numeric fields. This
is flagged by setting the high bit of the first byte. The remainder of
the field is treated as a signed twos-complement value. This permits
95-bit values for the length and time fields and 63-bit values for the
mal, not octal. A description of some common keys follows:
atime, ctime, mtime
- File access, inode change, and modification times. These fields
+ File access, inode change, and modification times. These fields
can be negative or include a decimal point and a fractional
value.
character ASCII string “BINARY”, then all textual values are as‐
sumed to be in a platform-dependent multi-byte encoding. Note
that there are only two valid values for this key: “BINARY” or
- “ISO-IR 10646 2000 UTF-8”. No other values are permitted by the
+ “ISO-IR 10646 2000 UTF-8”. No other values are permitted by the
standard, and the latter value should generally not be used as it
is the default when this key is not specified. In particular,
this flag should not be used as a general mechanism to allow
The file flags.
SCHILY.realsize
- The full size of the file on disk. XXX explain? XXX
+ The full size of the file on disk. XXX explain? XXX
SCHILY.dev, SCHILY.ino, SCHILY.nlinks
The device number, inode number, and link count for the entry.
char offset[12];
char numbytes[12];
} sparse[21];
- char isextended[1];
- char padding[7];
+ char isextended[1];
+ char padding[7];
};
realsize
GNU tar pax archives
GNU tar 1.14 (XXX check this XXX) and later will write pax interchange
- format archives when you specify the --posix flag. This format follows
+ format archives when you specify the --posix flag. This format follows
the pax interchange format closely, using some SCHILY tags and introduc‐
- ing new keywords to store sparse file information. There have been three
+ ing new keywords to store sparse file information. There have been three
iterations of the sparse file support, referred to as “0.0”, “0.1”, and
“1.0”.
to indicate the number of blocks in the file, a pair of
GNU.sparse.offset and GNU.sparse.numbytes to indicate the offset
and size of each block, and a single GNU.sparse.size to indicate
- the full size of the file. This is not the same as the size in
+ the full size of the file. This is not the same as the size in
the tar header because the latter value does not include the size
of any holes. This format required that the order of attributes
be preserved and relied on readers accepting multiple appearances
Summary of tar type codes
The following list is a condensed summary of the type codes used in tar
- header records generated by different tar implementations. More details
+ header records generated by different tar implementations. More details
about specific implementations can be found above:
NUL Early tar programs stored a zero byte for regular files.
0 POSIX standard type code for a regular file.
The tar utility is no longer a part of POSIX or the Single Unix Standard.
It last appeared in Version 2 of the Single UNIX Specification (“SUSv2”).
It has been supplanted in subsequent standards by pax(1). The ustar for‐
- mat is currently part of the specification for the pax(1) utility. The
+ mat is currently part of the specification for the pax(1) utility. The
pax interchange file format is new with IEEE Std 1003.1-2001 (“POSIX.1”).
HISTORY
ARCHIVE_READ_DISK(3) manual page
== NAME ==
'''archive_read_disk_new''',
+'''archive_read_disk_open''',
+'''archive_read_disk_open_w''',
'''archive_read_disk_set_behavior''',
'''archive_read_disk_set_symlink_logical''',
'''archive_read_disk_set_symlink_physical''',
'''archive_read_disk_uname''',
'''archive_read_disk_set_uname_lookup''',
'''archive_read_disk_set_gname_lookup''',
-'''archive_read_disk_set_standard_lookup'''
+'''archive_read_disk_set_standard_lookup''',
+'''archive_read_disk_descend''',
+'''archive_read_disk_can_descend''',
+'''archive_read_disk_current_filesystem''',
+'''archive_read_disk_current_filesystem_is_synthetic''',
+'''archive_read_disk_current_filesystem_is_remote''',
+'''archive_read_disk_set_matching''',
+'''archive_read_disk_set_metadata_filter_callback''',
- functions for reading objects from disk
== LIBRARY ==
Streaming Archive Library (libarchive, -larchive)
<br>
''int''
<br>
+'''archive_read_disk_open'''(''struct archive *'', ''const char *'');
+<br>
+''int''
+<br>
+'''archive_read_disk_open_w'''(''struct archive *'', ''const wchar_t *'', '''');
+<br>
+''int''
+<br>
'''archive_read_disk_set_behavior'''(''struct archive *'', ''int'');
<br>
''int''
''int''
<br>
'''archive_read_disk_entry_from_file'''(''struct archive *'', ''struct archive_entry *'', ''int fd'', ''const struct stat *'');
+<br>
+''int''
+<br>
+'''archive_read_disk_descend'''(''struct archive *'');
+<br>
+''int''
+<br>
+'''archive_read_disk_can_descend'''(''struct archive *'');
+<br>
+''int''
+<br>
+'''archive_read_disk_current_filesystem'''(''struct archive *'');
+<br>
+''int''
+<br>
+'''archive_read_disk_current_filesystem_is_synthetic'''(''struct archive *'');
+<br>
+''int''
+<br>
+'''archive_read_disk_current_filesystem_is_remote'''(''struct archive *'');
+<br>
+''int''
+<br>
+'''archive_read_disk_set_matching'''(''struct archive *'', ''struct archive *'', ''void (*excluded_func)(struct archive *, void *, struct archive entry *)'', ''void *'');
+<br>
+''int''
+<br>
+'''archive_read_disk_set_metadata_filter_callback'''(''struct archive *'', ''int (*metadata_filter_func)(struct archive *, void*, struct archive_entry *)'', ''void *'');
== DESCRIPTION ==
These functions provide an API for reading information about
objects on disk.
Allocates and initializes a
'''struct archive'''
object suitable for reading object information from disk.
+</dd><dt>'''archive_read_disk_open'''()</dt><dd>
+Opens the file or directory from the given path and prepares the
+'''struct archive'''
+to read it from disk.
+</dd><dt>'''archive_read_disk_open_w'''()</dt><dd>
+Opens the file or directory from the given path as a wide character string and prepares the
+'''struct archive'''
+to read it from disk.
</dd><dt>'''archive_read_disk_set_behavior'''()</dt><dd>
Configures various behavior options when reading entries from disk.
The flags field consists of a bitwise OR of one or more of the
</dd><dt>'''ARCHIVE_READDISK_RESTORE_ATIME'''</dt><dd>
Restore access time of traversed files.
By default, access time of traversed files is not restored.
+</dd><dt>'''ARCHIVE_READDISK_NO_SPARSE'''</dt><dd>
+Do not read sparse file information.
+By default, sparse file information is read from disk.
</dd></dl>
</dd><dt>
'''archive_read_disk_set_symlink_logical'''(),
This affects the file ownership fields and ACL values in the
'''struct archive_entry'''
object.
+</dd><dt>'''archive_read_disk_descend'''()</dt><dd>
+If the current entry can be descended, this function will mark the directory as the next entry for
+[[ManPageArchiveReadHeader3]]
+to visit.
+</dd><dt>'''archive_read_disk_can_descend'''()</dt><dd>
+Returns 1 if the current entry is an unvisited directory and 0 otherwise.
+</dd><dt>'''archive_read_disk_current_filesystem'''()</dt><dd>
+Returns the index of the most recent filesystem entry that has been visited through archive_read_disk
+</dd><dt>'''archive_read_disk_current_filesystem_is_synthetic'''()</dt><dd>
+Returns 1 if the current filesystem is a virtual filesystem. Returns 0 if the current filesystem is not a virtual filesystem. Returns -1 if it is unknown.
+</dd><dt>'''archive_read_disk_current_filesystem_is_remote'''()</dt><dd>
+Returns 1 if the current filesystem is a remote filesystem. Returns 0 if the current filesystem is not a remote filesystem. Returns -1 if it is unknown.
+</dd><dt>'''archive_read_disk_set_matching'''()</dt><dd>
+Allows the caller to set
+'''struct archive'''
+*_ma to compare each entry during
+[[ManPageArchiveReadHeader3]]
+calls. If matched based on calls to
+'''archive_match_path_excluded ,'''
+'''archive_match_time_excluded ,'''
+or
+'''archive_match_owner_excluded ,'''
+then the callback function specified by the _excluded_func parameter will execute. This function will recieve data provided to the fourth parameter, void *_client_data.
+</dd><dt>'''archive_read_disk_set_metadata_filter_callback'''()</dt><dd>
+Allows the caller to set a callback function during calls to
+[[ManPageArchiveReadHeader3]]
+to filter out metadata for each entry. The callback function recieves the
+'''struct archive'''
+object, void* custom filter data, and the
+'''struct archive_entry .'''
+If the callback function returns an error, ARCHIVE_RETRY will be returned and the entry will not be further processed.
</dd></dl>
More information about the
''struct'' archive
Without this option, only the contents of
the first concatenated archive would be read.
</dd></dl>
+</dd><dt>Format zip</dt><dd>
+<dl>
+<dt>'''compat-2x'''</dt><dd>
+Libarchive 2.x incorrectly encoded Unicode filenames on
+some platforms.
+This option mimics the libarchive 2.x filename handling
+so that such archives can be read correctly.
+</dd><dt>'''hdrcharset'''</dt><dd>
+The value is used as a character set name that will be
+used when translating file names.
+</dd><dt>'''ignorecrc32'''</dt><dd>
+Skip the CRC32 check.
+Mostly used for testing.
+</dd><dt>'''mac-ext'''</dt><dd>
+Support Mac OS metadata extension that records data in special
+files beginning with a period and underscore.
+Defaults to enabled on Mac OS, disabled on other platforms.
+Use
+'''!mac-ext'''
+to disable.
+</dd></dl>
</dd></dl>
== ERRORS ==
Detailed error codes and textual descriptions are available from the
files outside of the current directory.
The default is not to perform this check.
If
-</dd><dt>'''ARCHIVE_EXTRACT_SPARSE'''</dt><dd>
-Scan data for blocks of NUL bytes and try to recreate them with holes.
-This results in sparse files, independent of whether the archive format
-supports or uses them.
'''ARCHIVE_EXTRACT_UNLINK'''
is specified together with this option, the library will
remove any intermediate symlinks it finds and return an
error only if such symlink could not be removed.
+</dd><dt>'''ARCHIVE_EXTRACT_SPARSE'''</dt><dd>
+Scan data for blocks of NUL bytes and try to recreate them with holes.
+This results in sparse files, independent of whether the archive format
+supports or uses them.
</dd><dt>'''ARCHIVE_EXTRACT_TIME'''</dt><dd>
The timestamps (mtime, ctime, and atime) should be restored.
By default, they are ignored.
'''archive_set_error'''()
to register an error code and message and
return
+'''ARCHIVE_FATAL'''.
<ul>
<li>
''typedef int''
The value is interpreted as a decimal integer specifying the
compression level. Supported values depend on the library version,
common values are from 1 to 22.
+</dd><dt>'''long'''</dt><dd>
+Enables long distance matching. The value is interpreted as a
+decimal integer specifying log2 window size in bytes. Values from
+10 to 30 for 32 bit, or 31 for 64 bit, are supported.
+</dd><dt>'''threads'''</dt><dd>
+The value is interpreted as a decimal integer specifying the
+number of threads for multi-threaded zstd compression.
+If set to 0, zstd will attempt to detect and use the number
+of physical CPU cores.
</dd></dl>
</dd><dt>Format 7zip</dt><dd>
<dl>
and the default behavior if
'''tar'''
is run as non-root in x mode.
+</dd><dt>--no-read-sparse</dt><dd>
+(c, r, u modes only)
+Do not read sparse file information from disk.
+This is the reverse of
+--read-sparse.
</dd><dt>--no-safe-writes</dt><dd>
(x mode only)
Do not create temporary files and use
</dd><dt>'''zstd:compression-level'''</dt><dd>
A decimal integer specifying the zstd compression level. Supported values depend
on the library version, common values are from 1 to 22.
+</dd><dt>'''zstd:threads'''</dt><dd>
+Specify the number of worker threads to use.
+Setting threads to a special value 0 makes
+[[zstd(1)|http://www.freebsd.org/cgi/man.cgi?query=zstd&sektion=1]]
+use as many threads as there are CPU cores on the system.
+</dd><dt>'''zstd:frame-per-file'''</dt><dd>
+Start a new compression frame at the beginning of each file in the
+archive.
+</dd><dt>'''zstd:min-frame-size'''=''N''</dt><dd>
+In combination with
+'''zstd:frame-per-file''',
+do not start a new compression frame unless the current frame is at least
+''N''
+bytes.
+</dd><dt>'''zstd:max-frame-size'''=''N''</dt><dd>
+Start a new compression frame as soon as the current frame exceeds
+''N''
+bytes.
</dd><dt>'''lzop:compression-level'''</dt><dd>
A decimal integer from 1 to 9 specifying the lzop compression level.
</dd><dt>'''xz:compression-level'''</dt><dd>
A decimal integer from 0 to 9 specifying the xz compression level.
+</dd><dt>'''xz:threads'''</dt><dd>
+Specify the number of worker threads to use.
+Setting threads to a special value 0 makes
+[[xz(1)|http://www.freebsd.org/cgi/man.cgi?query=xz&sektion=1]]
+use as many threads as there are CPU cores on the system.
</dd><dt>'''mtree:'''''keyword''</dt><dd>
The mtree writer module allows you to specify which mtree keywords
will be included in the output.
there can be multiple entries with the same name and, by convention,
later entries overwrite earlier entries.
This option is provided as a performance optimization.
+</dd><dt>--read-sparse</dt><dd>
+(c, r, u modes only)
+Read sparse file information from disk.
+This is the reverse of
+--no-read-sparse
+and the default behavior.
</dd><dt>-S</dt><dd>
(x mode only)
Extract files as sparse files.
It appeared in 1977 as part of PWB/UNIX 1.0, the
"Programmer's Work Bench"
derived from
-At 6th Edition UNIX
+At v6
that was used internally at AT&T.
Both the new binary and old character formats were in use
by 1980, according to the System III source released
</li><li>
most common cpio archive formats,
</li><li>
-ISO9660 CD images (including RockRidge and Joliet extensions),
-</li><li>
-Zip archives,
+7-Zip archives,
</li><li>
ar archives (including GNU/SysV and BSD extensions),
</li><li>
Microsoft CAB archives,
</li><li>
+ISO9660 CD images (including RockRidge and Joliet extensions),
+</li><li>
LHA archives,
</li><li>
mtree file tree descriptions,
</li><li>
-RAR archives,
+RAR and most RAR5 archives,
</li><li>
-XAR archives.
+WARC archives,
+</li><li>
+XAR archives,
+</li><li>
+Zip archives.
</li></ul>
The library automatically detects archives compressed with
-[[gzip(1)|http://www.freebsd.org/cgi/man.cgi?query=gzip&sektion=1]],
+[[compress(1)|http://www.freebsd.org/cgi/man.cgi?query=compress&sektion=1]],
[[bzip2(1)|http://www.freebsd.org/cgi/man.cgi?query=bzip2&sektion=1]],
-[[xz(1)|http://www.freebsd.org/cgi/man.cgi?query=xz&sektion=1]],
+[[grzip(1)|http://www.freebsd.org/cgi/man.cgi?query=grzip&sektion=1]],
+[[gzip(1)|http://www.freebsd.org/cgi/man.cgi?query=gzip&sektion=1]],
+[[lrzip(1)|http://www.freebsd.org/cgi/man.cgi?query=lrzip&sektion=1]],
+[[lz4(1)|http://www.freebsd.org/cgi/man.cgi?query=lz4&sektion=1]],
[[lzip(1)|http://www.freebsd.org/cgi/man.cgi?query=lzip&sektion=1]],
+[[lzop(1)|http://www.freebsd.org/cgi/man.cgi?query=lzop&sektion=1]],
+[[xz(1)|http://www.freebsd.org/cgi/man.cgi?query=xz&sektion=1]],
or
-[[compress(1)|http://www.freebsd.org/cgi/man.cgi?query=compress&sektion=1]]
-and decompresses them transparently.
+[[zstd(1)|http://www.freebsd.org/cgi/man.cgi?query=zstd&sektion=1]]
+and decompresses them transparently. Decompression of some formats
+requires external decompressor utilities.
It can similarly detect and decode archives processed with
[[uuencode(1)|http://www.freebsd.org/cgi/man.cgi?query=uuencode&sektion=1]]
or which have an
</li><li>
cpio archives,
</li><li>
-Zip archive,
+7-Zip archives,
+</li><li>
+ar archives,
</li><li>
two different variants of shar archives,
</li><li>
ISO9660 CD images,
</li><li>
-7-Zip archives,
-</li><li>
-ar archives,
-</li><li>
mtree file tree descriptions,
</li><li>
-XAR archives.
+XAR archives,
+</li><li>
+Zip archive.
</li></ul>
Pax interchange format is an extension of the tar archive format that
eliminates essentially all of the limitations of historic tar formats
#
############################################
+if (ANDROID)
+ include_directories(${PROJECT_SOURCE_DIR}/contrib/android/include)
+endif()
+
# Public headers
SET(include_HEADERS
archive.h
archive_read_set_format.c
archive_read_set_options.c
archive_read_support_filter_all.c
+ archive_read_support_filter_by_code.c
archive_read_support_filter_bzip2.c
archive_read_support_filter_compress.c
archive_read_support_filter_gzip.c
ENDIF()
# Libarchive is a shared library
-ADD_LIBRARY(archive SHARED ${libarchive_SOURCES} ${include_HEADERS})
-TARGET_INCLUDE_DIRECTORIES(archive PUBLIC .)
-TARGET_LINK_LIBRARIES(archive ${ADDITIONAL_LIBS})
-SET_TARGET_PROPERTIES(archive PROPERTIES SOVERSION ${SOVERSION})
+IF(BUILD_SHARED_LIBS)
+ ADD_LIBRARY(archive SHARED ${libarchive_SOURCES} ${include_HEADERS})
+ TARGET_INCLUDE_DIRECTORIES(archive PUBLIC .)
+ TARGET_LINK_LIBRARIES(archive ${ADDITIONAL_LIBS})
+ SET_TARGET_PROPERTIES(archive PROPERTIES SOVERSION ${SOVERSION})
+ENDIF(BUILD_SHARED_LIBS)
# archive_static is a static library
ADD_LIBRARY(archive_static STATIC ${libarchive_SOURCES} ${include_HEADERS})
SET_TARGET_PROPERTIES(archive_static PROPERTIES COMPILE_DEFINITIONS
LIBARCHIVE_STATIC)
# On Posix systems, libarchive.so and libarchive.a can co-exist.
-IF(NOT WIN32 OR CYGWIN)
+IF(NOT WIN32 OR CYGWIN OR NOT BUILD_SHARED_LIBS)
SET_TARGET_PROPERTIES(archive_static PROPERTIES OUTPUT_NAME archive)
-ENDIF(NOT WIN32 OR CYGWIN)
+ENDIF(NOT WIN32 OR CYGWIN OR NOT BUILD_SHARED_LIBS)
IF(ENABLE_INSTALL)
# How to install the libraries
- INSTALL(TARGETS archive archive_static
+ IF(BUILD_SHARED_LIBS)
+ INSTALL(TARGETS archive
+ RUNTIME DESTINATION bin
+ LIBRARY DESTINATION lib
+ ARCHIVE DESTINATION lib)
+ ENDIF(BUILD_SHARED_LIBS)
+ INSTALL(TARGETS archive_static
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib)
* assert that ARCHIVE_VERSION_NUMBER >= 2012108.
*/
/* Note: Compiler will complain if this does not match archive_entry.h! */
-#define ARCHIVE_VERSION_NUMBER 3005002
+#define ARCHIVE_VERSION_NUMBER 3007002
#include <sys/stat.h>
#include <stddef.h> /* for wchar_t */
#endif
/* Large file support for Android */
-#ifdef __ANDROID__
+#if defined(__LIBARCHIVE_BUILD) && defined(__ANDROID__)
#include "android_lf.h"
#endif
# define __LA_DECL __declspec(dllimport)
# endif
# endif
+#elif defined __LIBARCHIVE_ENABLE_VISIBILITY
+# define __LA_DECL __attribute__((visibility("default")))
#else
/* Static libraries or non-Windows needs no special declaration. */
# define __LA_DECL
/*
* Textual name/version of the library, useful for version displays.
*/
-#define ARCHIVE_VERSION_ONLY_STRING "3.5.2"
+#define ARCHIVE_VERSION_ONLY_STRING "3.7.2"
#define ARCHIVE_VERSION_STRING "libarchive " ARCHIVE_VERSION_ONLY_STRING
__LA_DECL const char * archive_version_string(void);
#define ARCHIVE_READDISK_NO_ACL (0x0020)
/* Default: File flags are read from disk. */
#define ARCHIVE_READDISK_NO_FFLAGS (0x0040)
+/* Default: Sparse file information is read from disk. */
+#define ARCHIVE_READDISK_NO_SPARSE (0x0080)
__LA_DECL int archive_read_disk_set_behavior(struct archive *,
int flags);
#if defined(_MSC_VER)
#define BLAKE2_PACKED(x) __pragma(pack(push, 1)) x __pragma(pack(pop))
-#else
+#elif defined(__GNUC__)
#define BLAKE2_PACKED(x) x __attribute__((packed))
+#else
+#define BLAKE2_PACKED(x) _Pragma("pack 1") x _Pragma("pack 0")
#endif
#if defined(__cplusplus)
/* prevents compiler optimizing out memset() */
static BLAKE2_INLINE void secure_zero_memory(void *v, size_t n)
{
- static void *(*const volatile memset_v)(void *, int, size_t) = &memset;
+ static void *(__LA_LIBC_CC *const volatile memset_v)(void *, int, size_t) = &memset;
memset_v(v, 0, n);
}
https://blake2.net.
*/
+#include "archive_platform.h"
+
#include <stdint.h>
#include <string.h>
#include <stdio.h>
https://blake2.net.
*/
+#include "archive_platform.h"
+
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
memcpy(ctx->key, key, key_len);
memset(ctx->nonce, 0, sizeof(ctx->nonce));
ctx->encr_pos = AES_BLOCK_SIZE;
-#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER)
- if (!EVP_CIPHER_CTX_reset(ctx->ctx)) {
- EVP_CIPHER_CTX_free(ctx->ctx);
- ctx->ctx = NULL;
- }
-#else
- EVP_CIPHER_CTX_init(ctx->ctx);
-#endif
return 0;
}
#error Cannot use both OpenSSL and libmd.
#endif
+/* Common in other bcrypt implementations, but missing from VS2008. */
+#ifndef BCRYPT_SUCCESS
+#define BCRYPT_SUCCESS(r) ((NTSTATUS)(r) == STATUS_SUCCESS)
+#endif
+
/*
* Message digest functions for Windows platform.
*/
/*
* Initialize a Message digest.
*/
+#if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA
+static int
+win_crypto_init(Digest_CTX *ctx, const WCHAR *algo)
+{
+ NTSTATUS status;
+ ctx->valid = 0;
+
+ status = BCryptOpenAlgorithmProvider(&ctx->hAlg, algo, NULL, 0);
+ if (!BCRYPT_SUCCESS(status))
+ return (ARCHIVE_FAILED);
+ status = BCryptCreateHash(ctx->hAlg, &ctx->hHash, NULL, 0, NULL, 0, 0);
+ if (!BCRYPT_SUCCESS(status)) {
+ BCryptCloseAlgorithmProvider(ctx->hAlg, 0);
+ return (ARCHIVE_FAILED);
+ }
+
+ ctx->valid = 1;
+ return (ARCHIVE_OK);
+}
+#else
static int
-win_crypto_init(Digest_CTX *ctx, ALG_ID algId)
+win_crypto_init(Digest_CTX *ctx, DWORD prov, ALG_ID algId)
{
ctx->valid = 0;
if (!CryptAcquireContext(&ctx->cryptProv, NULL, NULL,
- PROV_RSA_FULL, CRYPT_VERIFYCONTEXT)) {
+ prov, CRYPT_VERIFYCONTEXT)) {
if (GetLastError() != (DWORD)NTE_BAD_KEYSET)
return (ARCHIVE_FAILED);
if (!CryptAcquireContext(&ctx->cryptProv, NULL, NULL,
- PROV_RSA_FULL, CRYPT_NEWKEYSET))
+ prov, CRYPT_NEWKEYSET))
return (ARCHIVE_FAILED);
}
ctx->valid = 1;
return (ARCHIVE_OK);
}
+#endif
/*
* Update a Message digest.
if (!ctx->valid)
return (ARCHIVE_FAILED);
+#if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA
+ BCryptHashData(ctx->hHash,
+ (PUCHAR)(uintptr_t)buf,
+ (ULONG)len, 0);
+#else
CryptHashData(ctx->hash,
(unsigned char *)(uintptr_t)buf,
(DWORD)len, 0);
+#endif
return (ARCHIVE_OK);
}
static int
win_crypto_Final(unsigned char *buf, size_t bufsize, Digest_CTX *ctx)
{
+#if !(defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA)
DWORD siglen = (DWORD)bufsize;
+#endif
if (!ctx->valid)
return (ARCHIVE_FAILED);
+#if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA
+ BCryptFinishHash(ctx->hHash, buf, (ULONG)bufsize, 0);
+ BCryptDestroyHash(ctx->hHash);
+ BCryptCloseAlgorithmProvider(ctx->hAlg, 0);
+#else
CryptGetHashParam(ctx->hash, HP_HASHVAL, buf, &siglen, 0);
CryptDestroyHash(ctx->hash);
CryptReleaseContext(ctx->cryptProv, 0);
+#endif
ctx->valid = 0;
return (ARCHIVE_OK);
}
{
if ((*ctx = EVP_MD_CTX_new()) == NULL)
return (ARCHIVE_FAILED);
- EVP_DigestInit(*ctx, EVP_md5());
+ if (!EVP_DigestInit(*ctx, EVP_md5()))
+ return (ARCHIVE_FAILED);
return (ARCHIVE_OK);
}
static int
__archive_md5init(archive_md5_ctx *ctx)
{
- return (win_crypto_init(ctx, CALG_MD5));
+#if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA
+ return (win_crypto_init(ctx, BCRYPT_MD5_ALGORITHM));
+#else
+ return (win_crypto_init(ctx, PROV_RSA_FULL, CALG_MD5));
+#endif
}
static int
{
if ((*ctx = EVP_MD_CTX_new()) == NULL)
return (ARCHIVE_FAILED);
- EVP_DigestInit(*ctx, EVP_ripemd160());
+ if (!EVP_DigestInit(*ctx, EVP_ripemd160()))
+ return (ARCHIVE_FAILED);
return (ARCHIVE_OK);
}
{
if ((*ctx = EVP_MD_CTX_new()) == NULL)
return (ARCHIVE_FAILED);
- EVP_DigestInit(*ctx, EVP_sha1());
+ if (!EVP_DigestInit(*ctx, EVP_sha1()))
+ return (ARCHIVE_FAILED);
return (ARCHIVE_OK);
}
static int
__archive_sha1init(archive_sha1_ctx *ctx)
{
- return (win_crypto_init(ctx, CALG_SHA1));
+#if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA
+ return (win_crypto_init(ctx, BCRYPT_SHA1_ALGORITHM));
+#else
+ return (win_crypto_init(ctx, PROV_RSA_FULL, CALG_SHA1));
+#endif
}
static int
{
if ((*ctx = EVP_MD_CTX_new()) == NULL)
return (ARCHIVE_FAILED);
- EVP_DigestInit(*ctx, EVP_sha256());
+ if (!EVP_DigestInit(*ctx, EVP_sha256()))
+ return (ARCHIVE_FAILED);
return (ARCHIVE_OK);
}
static int
__archive_sha256init(archive_sha256_ctx *ctx)
{
- return (win_crypto_init(ctx, CALG_SHA_256));
+#if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA
+ return (win_crypto_init(ctx, BCRYPT_SHA256_ALGORITHM));
+#else
+ return (win_crypto_init(ctx, PROV_RSA_AES, CALG_SHA_256));
+#endif
}
static int
{
if ((*ctx = EVP_MD_CTX_new()) == NULL)
return (ARCHIVE_FAILED);
- EVP_DigestInit(*ctx, EVP_sha384());
+ if (!EVP_DigestInit(*ctx, EVP_sha384()))
+ return (ARCHIVE_FAILED);
return (ARCHIVE_OK);
}
static int
__archive_sha384init(archive_sha384_ctx *ctx)
{
- return (win_crypto_init(ctx, CALG_SHA_384));
+#if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA
+ return (win_crypto_init(ctx, BCRYPT_SHA384_ALGORITHM));
+#else
+ return (win_crypto_init(ctx, PROV_RSA_AES, CALG_SHA_384));
+#endif
}
static int
{
if ((*ctx = EVP_MD_CTX_new()) == NULL)
return (ARCHIVE_FAILED);
- EVP_DigestInit(*ctx, EVP_sha512());
+ if (!EVP_DigestInit(*ctx, EVP_sha512()))
+ return (ARCHIVE_FAILED);
return (ARCHIVE_OK);
}
static int
__archive_sha512init(archive_sha512_ctx *ctx)
{
- return (win_crypto_init(ctx, CALG_SHA_512));
+#if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA
+ return (win_crypto_init(ctx, BCRYPT_SHA512_ALGORITHM));
+#else
+ return (win_crypto_init(ctx, PROV_RSA_AES, CALG_SHA_512));
+#endif
}
static int
defined(ARCHIVE_CRYPTO_SHA256_WIN) ||\
defined(ARCHIVE_CRYPTO_SHA384_WIN) ||\
defined(ARCHIVE_CRYPTO_SHA512_WIN)
+#if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA
+/* don't use bcrypt when XP needs to be supported */
+#include <bcrypt.h>
+typedef struct {
+ int valid;
+ BCRYPT_ALG_HANDLE hAlg;
+ BCRYPT_HASH_HANDLE hHash;
+} Digest_CTX;
+#else
#include <windows.h>
#include <wincrypt.h>
typedef struct {
HCRYPTHASH hash;
} Digest_CTX;
#endif
+#endif
/* typedefs */
#if defined(ARCHIVE_CRYPTO_MD5_LIBC)
return (entry->ae_stat.aest_nlink);
}
+/* Instead, our caller could have chosen a specific encoding
+ * (archive_mstring_get_mbs, archive_mstring_get_utf8,
+ * archive_mstring_get_wcs). So we should try multiple
+ * encodings. Try mbs first because of history, even though
+ * utf8 might be better for pathname portability.
+ * Also omit wcs because of type mismatch (char * versus wchar *)
+ */
const char *
archive_entry_pathname(struct archive_entry *entry)
{
if (archive_mstring_get_mbs(
entry->archive, &entry->ae_pathname, &p) == 0)
return (p);
+#if HAVE_EILSEQ /*{*/
+ if (errno == EILSEQ) {
+ if (archive_mstring_get_utf8(
+ entry->archive, &entry->ae_pathname, &p) == 0)
+ return (p);
+ }
+#endif /*}*/
if (errno == ENOMEM)
__archive_errx(1, "No memory");
return (NULL);
#define ARCHIVE_ENTRY_H_INCLUDED
/* Note: Compiler will complain if this does not match archive.h! */
-#define ARCHIVE_VERSION_NUMBER 3005002
+#define ARCHIVE_VERSION_NUMBER 3007002
/*
* Note: archive_entry.h is for use outside of libarchive; the
#endif
/* Large file support for Android */
-#ifdef __ANDROID__
+#if defined(__LIBARCHIVE_BUILD) && defined(__ANDROID__)
#include "android_lf.h"
#endif
# define __LA_DECL __declspec(dllimport)
# endif
# endif
+#elif defined __LIBARCHIVE_ENABLE_VISIBILITY
+# define __LA_DECL __attribute__((visibility("default")))
#else
/* Static libraries on all platforms and shared libraries on non-Windows. */
# define __LA_DECL
time_t Julian;
int i;
struct tm *ltime;
-#if defined(HAVE_LOCALTIME_R) || defined(HAVE__LOCALTIME64_S)
+#if defined(HAVE_LOCALTIME_R) || defined(HAVE_LOCALTIME_S)
struct tm tmbuf;
#endif
-#if defined(HAVE__LOCALTIME64_S)
- errno_t terr;
- __time64_t tmptime;
-#endif
if (Year < 69)
Year += 2000;
? 29 : 28;
/* Checking for 2038 bogusly assumes that time_t is 32 bits. But
I'm too lazy to try to check for time_t overflow in another way. */
- if (Year < EPOCH || Year > 2038
+ if (Year < EPOCH || Year >= 2038
|| Month < 1 || Month > 12
/* Lint fluff: "conversion from long may lose accuracy" */
|| Day < 1 || Day > DaysInMonth[(int)--Month]
Julian *= DAY;
Julian += Timezone;
Julian += Hours * HOUR + Minutes * MINUTE + Seconds;
-#if defined(HAVE_LOCALTIME_R)
+#if defined(HAVE_LOCALTIME_S)
+ ltime = localtime_s(&tmbuf, &Julian) ? NULL : &tmbuf;
+#elif defined(HAVE_LOCALTIME_R)
ltime = localtime_r(&Julian, &tmbuf);
-#elif defined(HAVE__LOCALTIME64_S)
- tmptime = Julian;
- terr = _localtime64_s(&tmbuf, &tmptime);
- if (terr)
- ltime = NULL;
- else
- ltime = &tmbuf;
#else
ltime = localtime(&Julian);
#endif
time_t StartDay;
time_t FutureDay;
struct tm *ltime;
-#if defined(HAVE_LOCALTIME_R) || defined(HAVE__LOCALTIME64_S)
+#if defined(HAVE_LOCALTIME_R) || defined(HAVE_LOCALTIME_S)
struct tm tmbuf;
#endif
-#if defined(HAVE__LOCALTIME64_S)
- errno_t terr;
- __time64_t tmptime;
-#endif
-
-#if defined(HAVE_LOCALTIME_R)
+#if defined(HAVE_LOCALTIME_S)
+ ltime = localtime_s(&tmbuf, &Start) ? NULL : &tmbuf;
+#elif defined(HAVE_LOCALTIME_R)
ltime = localtime_r(&Start, &tmbuf);
-#elif defined(HAVE__LOCALTIME64_S)
- tmptime = Start;
- terr = _localtime64_s(&tmbuf, &tmptime);
- if (terr)
- ltime = NULL;
- else
- ltime = &tmbuf;
#else
ltime = localtime(&Start);
#endif
StartDay = (ltime->tm_hour + 1) % 24;
-#if defined(HAVE_LOCALTIME_R)
+#if defined(HAVE_LOCALTIME_S)
+ ltime = localtime_s(&tmbuf, &Future) ? NULL : &tmbuf;
+#elif defined(HAVE_LOCALTIME_R)
ltime = localtime_r(&Future, &tmbuf);
-#elif defined(HAVE__LOCALTIME64_S)
- tmptime = Future;
- terr = _localtime64_s(&tmbuf, &tmptime);
- if (terr)
- ltime = NULL;
- else
- ltime = &tmbuf;
#else
ltime = localtime(&Future);
#endif
{
struct tm *tm;
time_t t, now;
-#if defined(HAVE_GMTIME_R) || defined(HAVE__GMTIME64_S)
+#if defined(HAVE_GMTIME_R) || defined(HAVE_GMTIME_S)
struct tm tmbuf;
#endif
-#if defined(HAVE__GMTIME64_S)
- errno_t terr;
- __time64_t tmptime;
-#endif
t = Start - zone;
-#if defined(HAVE_GMTIME_R)
+#if defined(HAVE_GMTIME_S)
+ tm = gmtime_s(&tmbuf, &t) ? NULL : &tmbuf;
+#elif defined(HAVE_GMTIME_R)
tm = gmtime_r(&t, &tmbuf);
-#elif defined(HAVE__GMTIME64_S)
- tmptime = t;
- terr = _gmtime64_s(&tmbuf, &tmptime);
- if (terr)
- tm = NULL;
- else
- tm = &tmbuf;
#else
tm = gmtime(&t);
#endif
struct tm *tm;
time_t Month;
time_t Year;
-#if defined(HAVE_LOCALTIME_R) || defined(HAVE__LOCALTIME64_S)
+#if defined(HAVE_LOCALTIME_R) || defined(HAVE_LOCALTIME_S)
struct tm tmbuf;
#endif
-#if defined(HAVE__LOCALTIME64_S)
- errno_t terr;
- __time64_t tmptime;
-#endif
if (RelMonth == 0)
return 0;
-#if defined(HAVE_LOCALTIME_R)
+#if defined(HAVE_LOCALTIME_S)
+ tm = localtime_s(&tmbuf, &Start) ? NULL : &tmbuf;
+#elif defined(HAVE_LOCALTIME_R)
tm = localtime_r(&Start, &tmbuf);
-#elif defined(HAVE__LOCALTIME64_S)
- tmptime = Start;
- terr = _localtime64_s(&tmbuf, &tmptime);
- if (terr)
- tm = NULL;
- else
- tm = &tmbuf;
#else
tm = localtime(&Start);
#endif
time_t Start;
time_t tod;
long tzone;
-#if defined(HAVE__LOCALTIME64_S) || defined(HAVE__GMTIME64_S)
- errno_t terr;
- __time64_t tmptime;
-#endif
/* Clear out the parsed token array. */
memset(tokens, 0, sizeof(tokens));
gds = &_gds;
/* Look up the current time. */
-#if defined(HAVE_LOCALTIME_R)
+#if defined(HAVE_LOCALTIME_S)
+ tm = localtime_s(&local, &now) ? NULL : &local;
+#elif defined(HAVE_LOCALTIME_R)
tm = localtime_r(&now, &local);
-#elif defined(HAVE__LOCALTIME64_S)
- tmptime = now;
- terr = _localtime64_s(&local, &tmptime);
- if (terr)
- tm = NULL;
- else
- tm = &local;
#else
memset(&local, 0, sizeof(local));
tm = localtime(&now);
#endif
if (tm == NULL)
return -1;
-#if !defined(HAVE_LOCALTIME_R) && !defined(HAVE__LOCALTIME64_S)
+#if !defined(HAVE_LOCALTIME_R) && !defined(HAVE_LOCALTIME_S)
local = *tm;
#endif
/* Look up UTC if we can and use that to determine the current
* timezone offset. */
-#if defined(HAVE_GMTIME_R)
+#if defined(HAVE_GMTIME_S)
+ gmt_ptr = gmtime_s(&gmt, &now) ? NULL : &gmt;
+#elif defined(HAVE_GMTIME_R)
gmt_ptr = gmtime_r(&now, &gmt);
-#elif defined(HAVE__GMTIME64_S)
- tmptime = now;
- terr = _gmtime64_s(&gmt, &tmptime);
- if (terr)
- gmt_ptr = NULL;
- else
- gmt_ptr = &gmt;
#else
memset(&gmt, 0, sizeof(gmt));
gmt_ptr = gmtime(&now);
* time components instead of the local timezone. */
if (gds->HaveZone && gmt_ptr != NULL) {
now -= gds->Timezone;
-#if defined(HAVE_GMTIME_R)
+#if defined(HAVE_GMTIME_S)
+ gmt_ptr = gmtime_s(&gmt, &now) ? NULL : &gmt;
+#elif defined(HAVE_GMTIME_R)
gmt_ptr = gmtime_r(&now, &gmt);
-#elif defined(HAVE__GMTIME64_S)
- tmptime = now;
- terr = _gmtime64_s(&gmt, &tmptime);
- if (terr)
- gmt_ptr = NULL;
- else
- gmt_ptr = &gmt;
#else
gmt_ptr = gmtime(&now);
#endif
static int
__hmac_sha1_init(archive_hmac_sha1_ctx *ctx, const uint8_t *key, size_t key_len)
{
+#if OPENSSL_VERSION_NUMBER >= 0x30000000L
+ EVP_MAC *mac;
+
+ char sha1[] = "SHA1";
+ OSSL_PARAM params[] = {
+ OSSL_PARAM_utf8_string("digest", sha1, sizeof(sha1) - 1),
+ OSSL_PARAM_END
+ };
+
+ mac = EVP_MAC_fetch(NULL, "HMAC", NULL);
+ *ctx = EVP_MAC_CTX_new(mac);
+ EVP_MAC_free(mac);
+ if (*ctx == NULL)
+ return -1;
+
+ EVP_MAC_init(*ctx, key, key_len, params);
+#else
*ctx = HMAC_CTX_new();
if (*ctx == NULL)
return -1;
HMAC_Init_ex(*ctx, key, key_len, EVP_sha1(), NULL);
+#endif
return 0;
}
__hmac_sha1_update(archive_hmac_sha1_ctx *ctx, const uint8_t *data,
size_t data_len)
{
+#if OPENSSL_VERSION_NUMBER >= 0x30000000L
+ EVP_MAC_update(*ctx, data, data_len);
+#else
HMAC_Update(*ctx, data, data_len);
+#endif
}
static void
__hmac_sha1_final(archive_hmac_sha1_ctx *ctx, uint8_t *out, size_t *out_len)
{
+#if OPENSSL_VERSION_NUMBER >= 0x30000000L
+ size_t len = *out_len;
+#else
unsigned int len = (unsigned int)*out_len;
+#endif
+#if OPENSSL_VERSION_NUMBER >= 0x30000000L
+ EVP_MAC_final(*ctx, out, &len, *out_len);
+#else
HMAC_Final(*ctx, out, &len);
+#endif
*out_len = len;
}
static void
__hmac_sha1_cleanup(archive_hmac_sha1_ctx *ctx)
{
+#if OPENSSL_VERSION_NUMBER >= 0x30000000L
+ EVP_MAC_CTX_free(*ctx);
+#else
HMAC_CTX_free(*ctx);
+#endif
*ctx = NULL;
}
typedef struct hmac_sha1_ctx archive_hmac_sha1_ctx;
#elif defined(HAVE_LIBCRYPTO)
+#include <openssl/opensslv.h>
+#include <openssl/hmac.h>
+#if OPENSSL_VERSION_NUMBER >= 0x30000000L
+#include <openssl/params.h>
+
+typedef EVP_MAC_CTX *archive_hmac_sha1_ctx;
+
+#else
#include "archive_openssl_hmac_private.h"
typedef HMAC_CTX* archive_hmac_sha1_ctx;
+#endif
#else
#include <openssl/evp.h>
#include <openssl/opensslv.h>
-#if OPENSSL_VERSION_NUMBER < 0x10100000L
+#if OPENSSL_VERSION_NUMBER < 0x10100000L || \
+ (defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER < 0x2070000fL)
#include <stdlib.h> /* malloc, free */
#include <string.h> /* memset */
static inline EVP_MD_CTX *EVP_MD_CTX_new(void)
static pack_t pack_14_18;
static pack_t pack_8_24;
static pack_t pack_bsdos;
-static int compare_format(const void *, const void *);
+static int __LA_LIBC_CC compare_format(const void *, const void *);
static const char iMajorError[] = "invalid major number";
static const char iMinorError[] = "invalid minor number";
};
static int
+__LA_LIBC_CC
compare_format(const void *key, const void *element)
{
const char *name;
* either Windows or Posix APIs. */
#if (defined(__WIN32__) || defined(_WIN32) || defined(__WIN32)) && !defined(__CYGWIN__)
#include "archive_windows.h"
+/* The C library on Windows specifies a calling convention for callback
+ * functions and exports; when we interact with them (capture pointers,
+ * call and pass function pointers) we need to match their calling
+ * convention.
+ * This only matters when libarchive is built with /Gr, /Gz or /Gv
+ * (which change the default calling convention.) */
+#define __LA_LIBC_CC __cdecl
#else
#define la_stat(path,stref) stat(path,stref)
+#define __LA_LIBC_CC
#endif
/*
#define INTMAX_MIN ((intmax_t)(~INTMAX_MAX))
#endif
+/* Some platforms lack the standard PRIxN/PRIdN definitions. */
+#if !HAVE_INTTYPES_H || !defined(PRIx32) || !defined(PRId32)
+#ifndef PRIx32
+#if SIZEOF_INT == 4
+#define PRIx32 "x"
+#elif SIZEOF_LONG == 4
+#define PRIx32 "lx"
+#else
+#error No suitable 32-bit unsigned integer type found for this platform
+#endif
+#endif // PRIx32
+#ifndef PRId32
+#if SIZEOF_INT == 4
+#define PRId32 "d"
+#elif SIZEOF_LONG == 4
+#define PRId32 "ld"
+#else
+#error No suitable 32-bit signed integer type found for this platform
+#endif
+#endif // PRId32
+#endif // !HAVE_INTTYPES_H || !defined(PRIx32) || !defined(PRId32)
+
/*
* If we can't restore metadata using a file descriptor, then
* for compatibility's sake, close files before trying to restore metadata.
/*
* glibc 2.24 deprecates readdir_r
+ * bionic c deprecates readdir_r too
*/
-#if defined(HAVE_READDIR_R) && (!defined(__GLIBC__) || !defined(__GLIBC_MINOR__) || __GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 24))
+#if defined(HAVE_READDIR_R) && (!defined(__GLIBC__) || !defined(__GLIBC_MINOR__) || __GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 24)) && (!defined(__ANDROID__))
#define USE_READDIR_R 1
#else
#undef USE_READDIR_R
* Some public API functions depend on the "real" type of the
* archive object.
*/
- struct archive_vtable *vtable;
+ const struct archive_vtable *vtable;
int archive_format;
const char *archive_format_name;
- int compression_code; /* Currently active compression. */
- const char *compression_name;
-
/* Number of file entries processed. */
int file_count;
#include <pthread.h>
#endif
-static void arc4random_buf(void *, size_t);
+static void la_arc4random_buf(void *, size_t);
#endif /* HAVE_ARC4RANDOM_BUF */
#include "archive.h"
#include "archive_random_private.h"
-#if defined(HAVE_WINCRYPT_H) && !defined(__CYGWIN__)
+#if defined(_WIN32) && !defined(__CYGWIN__)
+#if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA
+/* don't use bcrypt when XP needs to be supported */
+#include <bcrypt.h>
+
+/* Common in other bcrypt implementations, but missing from VS2008. */
+#ifndef BCRYPT_SUCCESS
+#define BCRYPT_SUCCESS(r) ((NTSTATUS)(r) == STATUS_SUCCESS)
+#endif
+
+#elif defined(HAVE_WINCRYPT_H)
#include <wincrypt.h>
#endif
+#endif
#ifndef O_CLOEXEC
#define O_CLOEXEC 0
archive_random(void *buf, size_t nbytes)
{
#if defined(_WIN32) && !defined(__CYGWIN__)
+# if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA
+ NTSTATUS status;
+ BCRYPT_ALG_HANDLE hAlg;
+
+ status = BCryptOpenAlgorithmProvider(&hAlg, BCRYPT_RNG_ALGORITHM, NULL, 0);
+ if (!BCRYPT_SUCCESS(status))
+ return ARCHIVE_FAILED;
+ status = BCryptGenRandom(hAlg, buf, (ULONG)nbytes, 0);
+ BCryptCloseAlgorithmProvider(hAlg, 0);
+ if (!BCRYPT_SUCCESS(status))
+ return ARCHIVE_FAILED;
+
+ return ARCHIVE_OK;
+# else
HCRYPTPROV hProv;
BOOL success;
}
/* TODO: Does this case really happen? */
return ARCHIVE_FAILED;
+# endif
+#elif !defined(HAVE_ARC4RANDOM_BUF) && (!defined(_WIN32) || defined(__CYGWIN__))
+ la_arc4random_buf(buf, nbytes);
+ return ARCHIVE_OK;
#else
arc4random_buf(buf, nbytes);
return ARCHIVE_OK;
}
static void
-arc4random_buf(void *_buf, size_t n)
+la_arc4random_buf(void *_buf, size_t n)
{
uint8_t *buf = (uint8_t *)_buf;
_ARC4_LOCK();
static int choose_filters(struct archive_read *);
static int choose_format(struct archive_read *);
static int close_filters(struct archive_read *);
-static struct archive_vtable *archive_read_vtable(void);
static int64_t _archive_filter_bytes(struct archive *, int);
static int _archive_filter_code(struct archive *, int);
static const char *_archive_filter_name(struct archive *, int);
struct archive_entry *);
static int64_t advance_file_pointer(struct archive_read_filter *, int64_t);
-static struct archive_vtable *
-archive_read_vtable(void)
-{
- static struct archive_vtable av;
- static int inited = 0;
-
- if (!inited) {
- av.archive_filter_bytes = _archive_filter_bytes;
- av.archive_filter_code = _archive_filter_code;
- av.archive_filter_name = _archive_filter_name;
- av.archive_filter_count = _archive_filter_count;
- av.archive_read_data_block = _archive_read_data_block;
- av.archive_read_next_header = _archive_read_next_header;
- av.archive_read_next_header2 = _archive_read_next_header2;
- av.archive_free = _archive_read_free;
- av.archive_close = _archive_read_close;
- inited = 1;
- }
- return (&av);
-}
+static const struct archive_vtable
+archive_read_vtable = {
+ .archive_filter_bytes = _archive_filter_bytes,
+ .archive_filter_code = _archive_filter_code,
+ .archive_filter_name = _archive_filter_name,
+ .archive_filter_count = _archive_filter_count,
+ .archive_read_data_block = _archive_read_data_block,
+ .archive_read_next_header = _archive_read_next_header,
+ .archive_read_next_header2 = _archive_read_next_header2,
+ .archive_free = _archive_read_free,
+ .archive_close = _archive_read_close,
+};
/*
* Allocate, initialize and return a struct archive object.
a->archive.state = ARCHIVE_STATE_NEW;
a->entry = archive_entry_new2(&a->archive);
- a->archive.vtable = archive_read_vtable();
+ a->archive.vtable = &archive_read_vtable;
a->passphrases.last = &a->passphrases.first;
}
static int
-client_close_proxy(struct archive_read_filter *self)
+read_client_close_proxy(struct archive_read *a)
{
int r = ARCHIVE_OK, r2;
unsigned int i;
- if (self->archive->client.closer == NULL)
+ if (a->client.closer == NULL)
return (r);
- for (i = 0; i < self->archive->client.nodes; i++)
+ for (i = 0; i < a->client.nodes; i++)
{
- r2 = (self->archive->client.closer)
- ((struct archive *)self->archive,
- self->archive->client.dataset[i].data);
+ r2 = (a->client.closer)
+ ((struct archive *)a, a->client.dataset[i].data);
if (r > r2)
r = r2;
}
}
static int
+client_close_proxy(struct archive_read_filter *self)
+{
+ return read_client_close_proxy(self->archive);
+}
+
+static int
client_open_proxy(struct archive_read_filter *self)
{
int r = ARCHIVE_OK;
r1 = (self->archive->client.closer)
((struct archive *)self->archive, self->data);
self->data = data2;
- if (self->archive->client.opener != NULL)
- r2 = (self->archive->client.opener)
- ((struct archive *)self->archive, self->data);
+ r2 = client_open_proxy(self);
}
return (r1 < r2) ? r1 : r2;
}
return archive_read_add_callback_data(_a, client_data, 0);
}
+static const struct archive_read_filter_vtable
+none_reader_vtable = {
+ .read = client_read_proxy,
+ .close = client_close_proxy,
+};
+
int
archive_read_open1(struct archive *_a)
{
struct archive_read *a = (struct archive_read *)_a;
struct archive_read_filter *filter, *tmp;
int slot, e = ARCHIVE_OK;
- unsigned int i;
archive_check_magic(_a, ARCHIVE_READ_MAGIC, ARCHIVE_STATE_NEW,
"archive_read_open");
e = (a->client.opener)(&a->archive, a->client.dataset[0].data);
if (e != 0) {
/* If the open failed, call the closer to clean up. */
- if (a->client.closer) {
- for (i = 0; i < a->client.nodes; i++)
- (a->client.closer)(&a->archive,
- a->client.dataset[i].data);
- }
+ read_client_close_proxy(a);
return (e);
}
}
filter->upstream = NULL;
filter->archive = a;
filter->data = a->client.dataset[0].data;
- filter->open = client_open_proxy;
- filter->read = client_read_proxy;
- filter->skip = client_skip_proxy;
- filter->seek = client_seek_proxy;
- filter->close = client_close_proxy;
- filter->sswitch = client_switch_proxy;
+ filter->vtable = &none_reader_vtable;
filter->name = "none";
filter->code = ARCHIVE_FILTER_NONE;
+ filter->can_skip = 1;
+ filter->can_seek = 1;
a->client.dataset[0].begin_position = 0;
if (!a->filter || !a->bypass_filter_bidding)
bidder = a->bidders;
for (i = 0; i < number_bidders; i++, bidder++) {
- if (bidder->bid != NULL) {
- bid = (bidder->bid)(bidder, a->filter);
- if (bid > best_bid) {
- best_bid = bid;
- best_bidder = bidder;
- }
+ if (bidder->vtable == NULL)
+ continue;
+ bid = (bidder->vtable->bid)(bidder, a->filter);
+ if (bid > best_bid) {
+ best_bid = bid;
+ best_bidder = bidder;
}
}
__archive_read_free_filters(a);
return (ARCHIVE_FATAL);
}
- a->archive.compression_name = a->filter->name;
- a->archive.compression_code = a->filter->code;
return (ARCHIVE_OK);
}
filter->archive = a;
filter->upstream = a->filter;
a->filter = filter;
- r = (best_bidder->init)(a->filter);
+ r = (best_bidder->vtable->init)(a->filter);
if (r != ARCHIVE_OK) {
__archive_read_free_filters(a);
return (ARCHIVE_FATAL);
int
__archive_read_header(struct archive_read *a, struct archive_entry *entry)
{
- if (a->filter->read_header)
- return a->filter->read_header(a->filter, entry);
- else
+ if (!a->filter->vtable->read_header)
return (ARCHIVE_OK);
+ return a->filter->vtable->read_header(a->filter, entry);
}
/*
/* Close each filter in the pipeline. */
while (f != NULL) {
struct archive_read_filter *t = f->upstream;
- if (!f->closed && f->close != NULL) {
- int r1 = (f->close)(f);
+ if (!f->closed && f->vtable != NULL) {
+ int r1 = (f->vtable->close)(f);
f->closed = 1;
if (r1 < r)
r = r1;
/* Release the bidder objects. */
n = sizeof(a->bidders)/sizeof(a->bidders[0]);
for (i = 0; i < n; i++) {
- if (a->bidders[i].free != NULL) {
- int r1 = (a->bidders[i].free)(&a->bidders[i]);
- if (r1 < r)
- r = r1;
- }
+ if (a->bidders[i].vtable == NULL ||
+ a->bidders[i].vtable->free == NULL)
+ continue;
+ (a->bidders[i].vtable->free)(&a->bidders[i]);
}
/* Release passphrase list. */
* initialization functions.
*/
int
-__archive_read_get_bidder(struct archive_read *a,
- struct archive_read_filter_bidder **bidder)
+__archive_read_register_bidder(struct archive_read *a,
+ void *bidder_data,
+ const char *name,
+ const struct archive_read_filter_bidder_vtable *vtable)
{
+ struct archive_read_filter_bidder *bidder;
int i, number_slots;
+ archive_check_magic(&a->archive, ARCHIVE_READ_MAGIC,
+ ARCHIVE_STATE_NEW, "__archive_read_register_bidder");
+
number_slots = sizeof(a->bidders) / sizeof(a->bidders[0]);
for (i = 0; i < number_slots; i++) {
- if (a->bidders[i].bid == NULL) {
- memset(a->bidders + i, 0, sizeof(a->bidders[0]));
- *bidder = (a->bidders + i);
- return (ARCHIVE_OK);
+ if (a->bidders[i].vtable != NULL)
+ continue;
+ memset(a->bidders + i, 0, sizeof(a->bidders[0]));
+ bidder = (a->bidders + i);
+ bidder->data = bidder_data;
+ bidder->name = name;
+ bidder->vtable = vtable;
+ if (bidder->vtable->bid == NULL || bidder->vtable->init == NULL) {
+ archive_set_error(&a->archive, ARCHIVE_ERRNO_PROGRAMMER,
+ "Internal error: "
+ "no bid/init for filter bidder");
+ return (ARCHIVE_FATAL);
}
+
+ return (ARCHIVE_OK);
}
archive_set_error(&a->archive, ENOMEM,
*avail = 0;
return (NULL);
}
- bytes_read = (filter->read)(filter,
+ bytes_read = (filter->vtable->read)(filter,
&filter->client_buff);
if (bytes_read < 0) { /* Read error. */
filter->client_total = filter->client_avail = 0;
return (total_bytes_skipped);
/* If there's an optimized skip function, use it. */
- if (filter->skip != NULL) {
- bytes_skipped = (filter->skip)(filter, request);
+ if (filter->can_skip != 0) {
+ bytes_skipped = client_skip_proxy(filter, request);
if (bytes_skipped < 0) { /* error */
filter->fatal = 1;
return (bytes_skipped);
/* Use ordinary reads as necessary to complete the request. */
for (;;) {
- bytes_read = (filter->read)(filter, &filter->client_buff);
+ bytes_read = (filter->vtable->read)(filter, &filter->client_buff);
if (bytes_read < 0) {
filter->client_buff = NULL;
filter->fatal = 1;
if (filter->closed || filter->fatal)
return (ARCHIVE_FATAL);
- if (filter->seek == NULL)
+ if (filter->can_seek == 0)
return (ARCHIVE_FAILED);
client = &(filter->archive->client);
filter->archive = a;
filter->upstream = a->filter;
a->filter = filter;
- r2 = (bidder->init)(a->filter);
+ r2 = (bidder->vtable->init)(a->filter);
if (r2 != ARCHIVE_OK) {
__archive_read_free_filters(a);
return (ARCHIVE_FATAL);
filter->archive = a;
filter->upstream = a->filter;
a->filter = filter;
- r = (bidder->init)(a->filter);
+ r = (bidder->vtable->init)(a->filter);
if (r != ARCHIVE_OK) {
__archive_read_free_filters(a);
return (ARCHIVE_FATAL);
"archive_read_data_into_fd");
can_lseek = (fstat(fd, &st) == 0) && S_ISREG(st.st_mode);
- if (!can_lseek)
+ if (!can_lseek) {
nulls = calloc(1, nulls_size);
+ if (!nulls) {
+ r = ARCHIVE_FATAL;
+ goto cleanup;
+ }
+ }
while ((r = archive_read_data_block(a, &buff, &size, &target_offset)) ==
ARCHIVE_OK) {
.Os
.Sh NAME
.Nm archive_read_disk_new ,
+.Nm archive_read_disk_open ,
+.Nm archive_read_disk_open_w ,
.Nm archive_read_disk_set_behavior ,
.Nm archive_read_disk_set_symlink_logical ,
.Nm archive_read_disk_set_symlink_physical ,
.Nm archive_read_disk_uname ,
.Nm archive_read_disk_set_uname_lookup ,
.Nm archive_read_disk_set_gname_lookup ,
-.Nm archive_read_disk_set_standard_lookup
+.Nm archive_read_disk_set_standard_lookup ,
+.Nm archive_read_disk_descend ,
+.Nm archive_read_disk_can_descend ,
+.Nm archive_read_disk_current_filesystem ,
+.Nm archive_read_disk_current_filesystem_is_synthetic ,
+.Nm archive_read_disk_current_filesystem_is_remote ,
+.Nm archive_read_disk_set_matching ,
+.Nm archive_read_disk_set_metadata_filter_callback ,
.Nd functions for reading objects from disk
.Sh LIBRARY
Streaming Archive Library (libarchive, -larchive)
.Ft struct archive *
.Fn archive_read_disk_new "void"
.Ft int
+.Fn archive_read_disk_open "struct archive *" "const char *"
+.Ft int
+.Fn archive_read_disk_open_w "struct archive *" "const wchar_t *"
+.Ft int
.Fn archive_read_disk_set_behavior "struct archive *" "int"
.Ft int
.Fn archive_read_disk_set_symlink_logical "struct archive *"
.Fa "int fd"
.Fa "const struct stat *"
.Fc
+.Ft int
+.Fn archive_read_disk_descend "struct archive *"
+.Ft int
+.Fn archive_read_disk_can_descend "struct archive *"
+.Ft int
+.Fn archive_read_disk_current_filesystem "struct archive *"
+.Ft int
+.Fn archive_read_disk_current_filesystem_is_synthetic "struct archive *"
+.Ft int
+.Fn archive_read_disk_current_filesystem_is_remote "struct archive *"
+.Ft int
+.Fo archive_read_disk_set_matching
+.Fa "struct archive *"
+.Fa "struct archive *"
+.Fa "void (*excluded_func)(struct archive *, void *, struct archive entry *)"
+.Fa "void *"
+.Fc
+.Ft int
+.Fo archive_read_disk_set_metadata_filter_callback
+.Fa "struct archive *"
+.Fa "int (*metadata_filter_func)(struct archive *, void*, struct archive_entry *)"
+.Fa "void *"
+.Fc
.Sh DESCRIPTION
These functions provide an API for reading information about
objects on disk.
Allocates and initializes a
.Tn struct archive
object suitable for reading object information from disk.
+.It Fn archive_read_disk_open
+Opens the file or directory from the given path and prepares the
+.Tn struct archive
+to read it from disk.
+.It Fn archive_read_disk_open_w
+Opens the file or directory from the given path as a wide character string and prepares the
+.Tn struct archive
+to read it from disk.
.It Fn archive_read_disk_set_behavior
Configures various behavior options when reading entries from disk.
The flags field consists of a bitwise OR of one or more of the
.It Cm ARCHIVE_READDISK_RESTORE_ATIME
Restore access time of traversed files.
By default, access time of traversed files is not restored.
+.It Cm ARCHIVE_READDISK_NO_SPARSE
+Do not read sparse file information.
+By default, sparse file information is read from disk.
.El
.It Xo
.Fn archive_read_disk_set_symlink_logical ,
This affects the file ownership fields and ACL values in the
.Tn struct archive_entry
object.
+.It Fn archive_read_disk_descend
+If the current entry can be descended, this function will mark the directory as the next entry for
+.Xr archive_read_header 3
+to visit.
+.It Fn archive_read_disk_can_descend
+Returns 1 if the current entry is an unvisited directory and 0 otherwise.
+.It Fn archive_read_disk_current_filesystem
+Returns the index of the most recent filesystem entry that has been visited through archive_read_disk
+.It Fn archive_read_disk_current_filesystem_is_synthetic
+Returns 1 if the current filesystem is a virtual filesystem. Returns 0 if the current filesystem is not a virtual filesystem. Returns -1 if it is unknown.
+.It Fn archive_read_disk_current_filesystem_is_remote
+Returns 1 if the current filesystem is a remote filesystem. Returns 0 if the current filesystem is not a remote filesystem. Returns -1 if it is unknown.
+.It Fn archive_read_disk_set_matching
+Allows the caller to set
+.Tn struct archive
+*_ma to compare each entry during
+.Xr archive_read_header 3
+calls. If matched based on calls to
+.Tn archive_match_path_excluded ,
+.Tn archive_match_time_excluded ,
+or
+.Tn archive_match_owner_excluded ,
+then the callback function specified by the _excluded_func parameter will execute. This function will recieve data provided to the fourth parameter, void *_client_data.
+.It Fn archive_read_disk_set_metadata_filter_callback
+Allows the caller to set a callback function during calls to
+.Xr archive_read_header 3
+to filter out metadata for each entry. The callback function recieves the
+.Tn struct archive
+object, void* custom filter data, and the
+.Tn struct archive_entry .
+If the callback function returns an error, ARCHIVE_RETRY will be returned and the entry will not be further processed.
.El
More information about the
.Va struct archive
if (r1 < r)
r = r1;
}
- r1 = setup_sparse(a, entry, &fd);
- if (r1 < r)
- r = r1;
+ if ((a->flags & ARCHIVE_READDISK_NO_SPARSE) == 0) {
+ r1 = setup_sparse(a, entry, &fd);
+ if (r1 < r)
+ r = r1;
+ }
/* If we opened the file earlier in this function, close it. */
if (initial_fd != fd)
#ifdef HAVE_SYS_PARAM_H
#include <sys/param.h>
#endif
-#ifdef HAVE_SYS_MOUNT_H
-#include <sys/mount.h>
-#endif
#ifdef HAVE_SYS_STAT_H
#include <sys/stat.h>
#endif
#endif
#ifdef HAVE_LINUX_FS_H
#include <linux/fs.h>
+#elif HAVE_SYS_MOUNT_H
+#include <sys/mount.h>
#endif
/*
* Some Linux distributions have both linux/ext2_fs.h and ext2fs/ext2_fs.h.
#define O_CLOEXEC 0
#endif
+#if defined(__hpux) && !defined(HAVE_DIRFD)
+#define dirfd(x) ((x)->__dd_fd)
+#define HAVE_DIRFD
+#endif
+
/*-
* This is a new directory-walking system that addresses a number
* of problems I've had with fts(3). In particular, it has no
static int tree_dup(int);
-static struct archive_vtable *
-archive_read_disk_vtable(void)
-{
- static struct archive_vtable av;
- static int inited = 0;
-
- if (!inited) {
- av.archive_free = _archive_read_free;
- av.archive_close = _archive_read_close;
- av.archive_read_data_block = _archive_read_data_block;
- av.archive_read_next_header = _archive_read_next_header;
- av.archive_read_next_header2 = _archive_read_next_header2;
- inited = 1;
- }
- return (&av);
-}
+static const struct archive_vtable
+archive_read_disk_vtable = {
+ .archive_free = _archive_read_free,
+ .archive_close = _archive_read_close,
+ .archive_read_data_block = _archive_read_data_block,
+ .archive_read_next_header = _archive_read_next_header,
+ .archive_read_next_header2 = _archive_read_next_header2,
+};
const char *
archive_read_disk_gname(struct archive *_a, la_int64_t gid)
return (NULL);
a->archive.magic = ARCHIVE_READ_DISK_MAGIC;
a->archive.state = ARCHIVE_STATE_NEW;
- a->archive.vtable = archive_read_disk_vtable();
+ a->archive.vtable = &archive_read_disk_vtable;
a->entry = archive_entry_new2(&a->archive);
a->lookup_uname = trivial_lookup_uname;
a->lookup_gname = trivial_lookup_gname;
ARCHIVE_STATE_HEADER | ARCHIVE_STATE_DATA,
"archive_read_disk_descend");
- if (t->visit_type != TREE_REGULAR || !t->descend)
+ if (!archive_read_disk_can_descend(_a))
return (ARCHIVE_OK);
/*
else
t->current_filesystem->name_max = nm;
#endif
+ if (t->current_filesystem->name_max == 0) {
+ archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
+ "Cannot determine name_max");
+ return (ARCHIVE_FAILED);
+ }
#endif /* USE_READDIR_R */
return (ARCHIVE_OK);
}
#if defined(USE_READDIR_R)
/* Set maximum filename length. */
+#if defined(HAVE_STATVFS)
+ t->current_filesystem->name_max = svfs.f_namemax;
+#else
t->current_filesystem->name_max = sfs.f_namelen;
#endif
+ if (t->current_filesystem->name_max == 0) {
+ archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
+ "Cannot determine name_max");
+ return (ARCHIVE_FAILED);
+ }
+#endif
return (ARCHIVE_OK);
}
#if defined(USE_READDIR_R)
/* Set maximum filename length. */
t->current_filesystem->name_max = svfs.f_namemax;
+ if (t->current_filesystem->name_max == 0) {
+ archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
+ "Cannot determine name_max");
+ return (ARCHIVE_FAILED);
+ }
#endif
return (ARCHIVE_OK);
}
else
t->current_filesystem->name_max = nm;
# endif /* _PC_NAME_MAX */
+ if (t->current_filesystem->name_max == 0) {
+ archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
+ "Cannot determine name_max");
+ return (ARCHIVE_FAILED);
+ }
#endif /* USE_READDIR_R */
return (ARCHIVE_OK);
}
struct tree_entry *te;
te = calloc(1, sizeof(*te));
+ if (te == NULL)
+ __archive_errx(1, "Out of memory");
te->next = t->stack;
te->parent = t->current;
if (te->parent)
#else /* HAVE_FDOPENDIR */
if (tree_enter_working_dir(t) == 0) {
t->d = opendir(".");
-#if HAVE_DIRFD || defined(dirfd)
+#ifdef HAVE_DIRFD
__archive_ensure_cloexec_flag(dirfd(t->d));
#endif
}
#else
if (tree_enter_working_dir(t) != 0)
return NULL;
+#ifdef HAVE_LSTAT
if (lstat(tree_current_access_path(t), &t->lst) != 0)
+#else
+ if (la_stat(tree_current_access_path(t), &t->lst) != 0)
+#endif
#endif
return NULL;
t->flags |= hasLstat;
FILE_FLAG_OPEN_REPARSE_POINT;
int ret;
- h = CreateFileW(path, 0, FILE_SHARE_READ, NULL, OPEN_EXISTING, flag,
- NULL);
+# if _WIN32_WINNT >= 0x0602 /* _WIN32_WINNT_WIN8 */
+ CREATEFILE2_EXTENDED_PARAMETERS createExParams;
+ ZeroMemory(&createExParams, sizeof(createExParams));
+ createExParams.dwSize = sizeof(createExParams);
+ createExParams.dwFileFlags = flag;
+ h = CreateFile2(path, 0,
+ FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
+ OPEN_EXISTING, &createExParams);
+#else
+ h = CreateFileW(path, 0,
+ FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, NULL,
+ OPEN_EXISTING, flag, NULL);
+#endif
if (h == INVALID_HANDLE_VALUE) {
la_dosmaperr(GetLastError());
return (-1);
return;
}
-static struct archive_vtable *
-archive_read_disk_vtable(void)
-{
- static struct archive_vtable av;
- static int inited = 0;
-
- if (!inited) {
- av.archive_free = _archive_read_free;
- av.archive_close = _archive_read_close;
- av.archive_read_data_block = _archive_read_data_block;
- av.archive_read_next_header = _archive_read_next_header;
- av.archive_read_next_header2 = _archive_read_next_header2;
- inited = 1;
- }
- return (&av);
-}
+static const struct archive_vtable
+archive_read_disk_vtable = {
+ .archive_free = _archive_read_free,
+ .archive_close = _archive_read_close,
+ .archive_read_data_block = _archive_read_data_block,
+ .archive_read_next_header = _archive_read_next_header,
+ .archive_read_next_header2 = _archive_read_next_header2,
+};
const char *
archive_read_disk_gname(struct archive *_a, la_int64_t gid)
return (NULL);
a->archive.magic = ARCHIVE_READ_DISK_MAGIC;
a->archive.state = ARCHIVE_STATE_NEW;
- a->archive.vtable = archive_read_disk_vtable();
+ a->archive.vtable = &archive_read_disk_vtable;
a->entry = archive_entry_new2(&a->archive);
a->lookup_uname = trivial_lookup_uname;
a->lookup_gname = trivial_lookup_gname;
if (archive_entry_filetype(entry) == AE_IFREG &&
archive_entry_size(entry) > 0) {
DWORD flags = FILE_FLAG_BACKUP_SEMANTICS;
+#if _WIN32_WINNT >= 0x0602 /* _WIN32_WINNT_WIN8 */
+ CREATEFILE2_EXTENDED_PARAMETERS createExParams;
+#endif
if (t->async_io)
flags |= FILE_FLAG_OVERLAPPED;
if (t->direct_io)
flags |= FILE_FLAG_NO_BUFFERING;
else
flags |= FILE_FLAG_SEQUENTIAL_SCAN;
+#if _WIN32_WINNT >= 0x0602 /* _WIN32_WINNT_WIN8 */
+ ZeroMemory(&createExParams, sizeof(createExParams));
+ createExParams.dwSize = sizeof(createExParams);
+ createExParams.dwFileFlags = flags;
+ t->entry_fh = CreateFile2(tree_current_access_path(t),
+ GENERIC_READ,
+ FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
+ OPEN_EXISTING, &createExParams);
+#else
t->entry_fh = CreateFileW(tree_current_access_path(t),
- GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, flags, NULL);
+ GENERIC_READ,
+ FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
+ NULL, OPEN_EXISTING, flags, NULL);
+#endif
if (t->entry_fh == INVALID_HANDLE_VALUE) {
la_dosmaperr(GetLastError());
archive_set_error(&a->archive, errno,
}
/* Find sparse data from the disk. */
- if (archive_entry_hardlink(entry) == NULL &&
- (st->dwFileAttributes & FILE_ATTRIBUTE_SPARSE_FILE) != 0)
- r = setup_sparse_from_disk(a, entry, t->entry_fh);
+ if ((a->flags & ARCHIVE_READDISK_NO_SPARSE) == 0) {
+ if (archive_entry_hardlink(entry) == NULL &&
+ (st->dwFileAttributes & FILE_ATTRIBUTE_SPARSE_FILE) != 0)
+ r = setup_sparse_from_disk(a, entry, t->entry_fh);
+ }
}
return (r);
}
ARCHIVE_STATE_HEADER | ARCHIVE_STATE_DATA,
"archive_read_disk_descend");
- if (t->visit_type != TREE_REGULAR || !t->descend)
+ if (!archive_read_disk_can_descend(_a))
return (ARCHIVE_OK);
if (tree_current_is_physical_dir(t)) {
{
HANDLE handle;
int r = 0;
+#if _WIN32_WINNT >= 0x0602 /* _WIN32_WINNT_WIN8 */
+ CREATEFILE2_EXTENDED_PARAMETERS createExParams;
+#endif
if (h == INVALID_HANDLE_VALUE && AE_IFLNK == rt->filetype)
return (0);
if ((t->flags & needsRestoreTimes) == 0)
return (r);
+#if _WIN32_WINNT >= 0x0602 /* _WIN32_WINNT_WIN8 */
+ ZeroMemory(&createExParams, sizeof(createExParams));
+ createExParams.dwSize = sizeof(createExParams);
+ createExParams.dwFileFlags = FILE_FLAG_BACKUP_SEMANTICS;
+ handle = CreateFile2(rt->full_path, FILE_WRITE_ATTRIBUTES,
+ 0, OPEN_EXISTING, &createExParams);
+#else
handle = CreateFileW(rt->full_path, FILE_WRITE_ATTRIBUTES,
0, NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, NULL);
+#endif
if (handle == INVALID_HANDLE_VALUE) {
errno = EINVAL;
return (-1);
HANDLE h;
int r;
DWORD flag = FILE_FLAG_BACKUP_SEMANTICS;
-
+# if _WIN32_WINNT >= 0x0602 /* _WIN32_WINNT_WIN8 */
+ CREATEFILE2_EXTENDED_PARAMETERS createExParams;
+#endif
+
if (sim_lstat && tree_current_is_physical_link(t))
flag |= FILE_FLAG_OPEN_REPARSE_POINT;
- h = CreateFileW(tree_current_access_path(t), 0, FILE_SHARE_READ, NULL,
+# if _WIN32_WINNT >= 0x0602 /* _WIN32_WINNT_WIN8 */
+ ZeroMemory(&createExParams, sizeof(createExParams));
+ createExParams.dwSize = sizeof(createExParams);
+ createExParams.dwFileFlags = flag;
+ h = CreateFile2(tree_current_access_path(t), 0,
+ FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
+ OPEN_EXISTING, &createExParams);
+#else
+ h = CreateFileW(tree_current_access_path(t), 0,
+ FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, NULL,
OPEN_EXISTING, flag, NULL);
+#endif
if (h == INVALID_HANDLE_VALUE) {
la_dosmaperr(GetLastError());
t->tree_errno = errno;
} else {
WIN32_FIND_DATAW findData;
DWORD flag, desiredAccess;
-
+# if _WIN32_WINNT >= 0x0602 /* _WIN32_WINNT_WIN8 */
+ CREATEFILE2_EXTENDED_PARAMETERS createExParams;
+#endif
+
h = FindFirstFileW(path, &findData);
if (h == INVALID_HANDLE_VALUE) {
la_dosmaperr(GetLastError());
} else
desiredAccess = GENERIC_READ;
- h = CreateFileW(path, desiredAccess, FILE_SHARE_READ, NULL,
+# if _WIN32_WINNT >= 0x0602 /* _WIN32_WINNT_WIN8 */
+ ZeroMemory(&createExParams, sizeof(createExParams));
+ createExParams.dwSize = sizeof(createExParams);
+ createExParams.dwFileFlags = flag;
+ h = CreateFile2(path, desiredAccess,
+ FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
+ OPEN_EXISTING, &createExParams);
+#else
+ h = CreateFileW(path, desiredAccess,
+ FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, NULL,
OPEN_EXISTING, flag, NULL);
+#endif
if (h == INVALID_HANDLE_VALUE) {
la_dosmaperr(GetLastError());
archive_set_error(&a->archive, errno,
if (fd >= 0) {
h = (HANDLE)_get_osfhandle(fd);
} else {
- h = CreateFileW(path, GENERIC_READ, FILE_SHARE_READ, NULL,
+# if _WIN32_WINNT >= 0x0602 /* _WIN32_WINNT_WIN8 */
+ CREATEFILE2_EXTENDED_PARAMETERS createExParams;
+ ZeroMemory(&createExParams, sizeof(createExParams));
+ createExParams.dwSize = sizeof(createExParams);
+ createExParams.dwFileFlags = FILE_FLAG_BACKUP_SEMANTICS;
+ h = CreateFile2(path, GENERIC_READ,
+ FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
+ OPEN_EXISTING, &createExParams);
+#else
+ h = CreateFileW(path, GENERIC_READ,
+ FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, NULL,
OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, NULL);
+#endif
if (h == INVALID_HANDLE_VALUE) {
la_dosmaperr(GetLastError());
archive_set_error(&a->archive, errno,
return (ARCHIVE_OK);
}
- r = setup_sparse_from_disk(a, entry, h);
- if (fd < 0)
- CloseHandle(h);
+ if ((a->flags & ARCHIVE_READDISK_NO_SPARSE) == 0) {
+ r = setup_sparse_from_disk(a, entry, h);
+ if (fd < 0)
+ CloseHandle(h);
+ }
return (r);
}
#ifdef __ANDROID__
/* fileno() isn't safe on all platforms ... see above. */
if (lseek(fileno(mine->f), skip, SEEK_CUR) < 0)
-#elif HAVE_FSEEKO
- if (fseeko(mine->f, skip, SEEK_CUR) != 0)
#elif HAVE__FSEEKI64
if (_fseeki64(mine->f, skip, SEEK_CUR) != 0)
+#elif HAVE_FSEEKO
+ if (fseeko(mine->f, skip, SEEK_CUR) != 0)
#else
if (fseek(mine->f, skip, SEEK_CUR) != 0)
#endif
struct archive_read_filter_bidder;
struct archive_read_filter;
+struct archive_read_filter_bidder_vtable {
+ /* Taste the upstream filter to see if we handle this. */
+ int (*bid)(struct archive_read_filter_bidder *,
+ struct archive_read_filter *);
+ /* Initialize a newly-created filter. */
+ int (*init)(struct archive_read_filter *);
+ /* Release the bidder's configuration data. */
+ void (*free)(struct archive_read_filter_bidder *);
+};
+
/*
* How bidding works for filters:
* * The bid manager initializes the client-provided reader as the
void *data;
/* Name of the filter */
const char *name;
- /* Taste the upstream filter to see if we handle this. */
- int (*bid)(struct archive_read_filter_bidder *,
- struct archive_read_filter *);
- /* Initialize a newly-created filter. */
- int (*init)(struct archive_read_filter *);
- /* Set an option for the filter bidder. */
- int (*options)(struct archive_read_filter_bidder *,
- const char *key, const char *value);
- /* Release the bidder's configuration data. */
- int (*free)(struct archive_read_filter_bidder *);
+ const struct archive_read_filter_bidder_vtable *vtable;
+};
+
+struct archive_read_filter_vtable {
+ /* Return next block. */
+ ssize_t (*read)(struct archive_read_filter *, const void **);
+ /* Close (just this filter) and free(self). */
+ int (*close)(struct archive_read_filter *self);
+ /* Read any header metadata if available. */
+ int (*read_header)(struct archive_read_filter *self, struct archive_entry *entry);
};
/*
struct archive_read_filter_bidder *bidder; /* My bidder. */
struct archive_read_filter *upstream; /* Who I read from. */
struct archive_read *archive; /* Associated archive. */
- /* Open a block for reading */
- int (*open)(struct archive_read_filter *self);
- /* Return next block. */
- ssize_t (*read)(struct archive_read_filter *, const void **);
- /* Skip forward this many bytes. */
- int64_t (*skip)(struct archive_read_filter *self, int64_t request);
- /* Seek to an absolute location. */
- int64_t (*seek)(struct archive_read_filter *self, int64_t offset, int whence);
- /* Close (just this filter) and free(self). */
- int (*close)(struct archive_read_filter *self);
- /* Function that handles switching from reading one block to the next/prev */
- int (*sswitch)(struct archive_read_filter *self, unsigned int iindex);
- /* Read any header metadata if available. */
- int (*read_header)(struct archive_read_filter *self, struct archive_entry *entry);
+ const struct archive_read_filter_vtable *vtable;
/* My private data. */
void *data;
const char *name;
int code;
+ int can_skip;
+ int can_seek;
/* Used by reblocking logic. */
char *buffer;
int (*format_capabilities)(struct archive_read *),
int (*has_encrypted_entries)(struct archive_read *));
-int __archive_read_get_bidder(struct archive_read *a,
- struct archive_read_filter_bidder **bidder);
+int __archive_read_register_bidder(struct archive_read *a,
+ void *bidder_data,
+ const char *name,
+ const struct archive_read_filter_bidder_vtable *vtable);
const void *__archive_read_ahead(struct archive_read *, size_t, ssize_t *);
const void *__archive_read_filter_ahead(struct archive_read_filter *,
Without this option, only the contents of
the first concatenated archive would be read.
.El
+.It Format zip
+.Bl -tag -compact -width indent
+.It Cm compat-2x
+Libarchive 2.x incorrectly encoded Unicode filenames on
+some platforms.
+This option mimics the libarchive 2.x filename handling
+so that such archives can be read correctly.
+.It Cm hdrcharset
+The value is used as a character set name that will be
+used when translating file names.
+.It Cm ignorecrc32
+Skip the CRC32 check.
+Mostly used for testing.
+.It Cm mac-ext
+Support Mac OS metadata extension that records data in special
+files beginning with a period and underscore.
+Defaults to enabled on Mac OS, disabled on other platforms.
+Use
+.Cm !mac-ext
+to disable.
+.El
.El
.\"
.Sh ERRORS
archive_set_filter_option(struct archive *_a, const char *m, const char *o,
const char *v)
{
- struct archive_read *a = (struct archive_read *)_a;
- struct archive_read_filter *filter;
- struct archive_read_filter_bidder *bidder;
- int r, rv = ARCHIVE_WARN, matched_modules = 0;
-
- for (filter = a->filter; filter != NULL; filter = filter->upstream) {
- bidder = filter->bidder;
- if (bidder == NULL)
- continue;
- if (bidder->options == NULL)
- /* This bidder does not support option */
- continue;
- if (m != NULL) {
- if (strcmp(filter->name, m) != 0)
- continue;
- ++matched_modules;
- }
+ (void)_a; /* UNUSED */
+ (void)o; /* UNUSED */
+ (void)v; /* UNUSED */
- r = bidder->options(bidder, o, v);
-
- if (r == ARCHIVE_FATAL)
- return (ARCHIVE_FATAL);
-
- if (r == ARCHIVE_OK)
- rv = ARCHIVE_OK;
- }
/* If the filter name didn't match, return a special code for
* _archive_set_option[s]. */
- if (m != NULL && matched_modules == 0)
+ if (m != NULL)
return ARCHIVE_WARN - 1;
- return (rv);
+ return ARCHIVE_WARN;
}
static int
*/
static int bzip2_reader_bid(struct archive_read_filter_bidder *, struct archive_read_filter *);
static int bzip2_reader_init(struct archive_read_filter *);
-static int bzip2_reader_free(struct archive_read_filter_bidder *);
#if ARCHIVE_VERSION_NUMBER < 4000000
/* Deprecated; remove in libarchive 4.0 */
}
#endif
+static const struct archive_read_filter_bidder_vtable
+bzip2_bidder_vtable = {
+ .bid = bzip2_reader_bid,
+ .init = bzip2_reader_init,
+};
+
int
archive_read_support_filter_bzip2(struct archive *_a)
{
struct archive_read *a = (struct archive_read *)_a;
- struct archive_read_filter_bidder *reader;
-
- archive_check_magic(_a, ARCHIVE_READ_MAGIC,
- ARCHIVE_STATE_NEW, "archive_read_support_filter_bzip2");
- if (__archive_read_get_bidder(a, &reader) != ARCHIVE_OK)
+ if (__archive_read_register_bidder(a, NULL, "bzip2",
+ &bzip2_bidder_vtable) != ARCHIVE_OK)
return (ARCHIVE_FATAL);
- reader->data = NULL;
- reader->name = "bzip2";
- reader->bid = bzip2_reader_bid;
- reader->init = bzip2_reader_init;
- reader->options = NULL;
- reader->free = bzip2_reader_free;
#if defined(HAVE_BZLIB_H) && defined(BZ_CONFIG_ERROR)
return (ARCHIVE_OK);
#else
#endif
}
-static int
-bzip2_reader_free(struct archive_read_filter_bidder *self){
- (void)self; /* UNUSED */
- return (ARCHIVE_OK);
-}
-
/*
* Test whether we can handle this data.
*
#else
+static const struct archive_read_filter_vtable
+bzip2_reader_vtable = {
+ .read = bzip2_filter_read,
+ .close = bzip2_filter_close,
+};
+
/*
* Setup the callbacks.
*/
self->data = state;
state->out_block_size = out_block_size;
state->out_block = out_block;
- self->read = bzip2_filter_read;
- self->skip = NULL; /* not supported */
- self->close = bzip2_filter_close;
+ self->vtable = &bzip2_reader_vtable;
return (ARCHIVE_OK);
}
/* Empty our output buffer. */
state->stream.next_out = state->out_block;
- state->stream.avail_out = state->out_block_size;
+ state->stream.avail_out = (uint32_t)state->out_block_size;
/* Try to fill the output buffer. */
for (;;) {
return (ARCHIVE_FATAL);
}
state->stream.next_in = (char *)(uintptr_t)read_buf;
- state->stream.avail_in = ret;
+ state->stream.avail_in = (uint32_t)ret;
/* There is no more data, return whatever we have. */
if (ret == 0) {
state->eof = 1;
static int compress_bidder_bid(struct archive_read_filter_bidder *, struct archive_read_filter *);
static int compress_bidder_init(struct archive_read_filter *);
-static int compress_bidder_free(struct archive_read_filter_bidder *);
static ssize_t compress_filter_read(struct archive_read_filter *, const void **);
static int compress_filter_close(struct archive_read_filter *);
}
#endif
+static const struct archive_read_filter_bidder_vtable
+compress_bidder_vtable = {
+ .bid = compress_bidder_bid,
+ .init = compress_bidder_init,
+};
+
int
archive_read_support_filter_compress(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_compress");
-
- if (__archive_read_get_bidder(a, &bidder) != ARCHIVE_OK)
- return (ARCHIVE_FATAL);
- bidder->data = NULL;
- bidder->name = "compress (.Z)";
- bidder->bid = compress_bidder_bid;
- bidder->init = compress_bidder_init;
- bidder->options = NULL;
- bidder->free = compress_bidder_free;
- return (ARCHIVE_OK);
+ return __archive_read_register_bidder(a, NULL, "compress (.Z)",
+ &compress_bidder_vtable);
}
/*
return (bits_checked);
}
+static const struct archive_read_filter_vtable
+compress_reader_vtable = {
+ .read = compress_filter_read,
+ .close = compress_filter_close,
+};
+
/*
* Setup the callbacks.
*/
self->data = state;
state->out_block_size = out_block_size;
state->out_block = out_block;
- self->read = compress_filter_read;
- self->skip = NULL; /* not supported */
- self->close = compress_filter_close;
+ self->vtable = &compress_reader_vtable;
/* XXX MOVE THE FOLLOWING OUT OF INIT() XXX */
}
/*
- * Clean up the reader.
- */
-static int
-compress_bidder_free(struct archive_read_filter_bidder *self)
-{
- self->data = NULL;
- return (ARCHIVE_OK);
-}
-
-/*
* Close and release the filter.
*/
static int
static int grzip_bidder_init(struct archive_read_filter *);
-static int
-grzip_reader_free(struct archive_read_filter_bidder *self)
-{
- (void)self; /* UNUSED */
- return (ARCHIVE_OK);
-}
+static const struct archive_read_filter_bidder_vtable
+grzip_bidder_vtable = {
+ .bid = grzip_bidder_bid,
+ .init = grzip_bidder_init,
+};
int
archive_read_support_filter_grzip(struct archive *_a)
{
struct archive_read *a = (struct archive_read *)_a;
- struct archive_read_filter_bidder *reader;
-
- archive_check_magic(_a, ARCHIVE_READ_MAGIC,
- ARCHIVE_STATE_NEW, "archive_read_support_filter_grzip");
- if (__archive_read_get_bidder(a, &reader) != ARCHIVE_OK)
+ if (__archive_read_register_bidder(a, NULL, NULL,
+ &grzip_bidder_vtable) != ARCHIVE_OK)
return (ARCHIVE_FATAL);
- reader->data = NULL;
- reader->bid = grzip_bidder_bid;
- reader->init = grzip_bidder_init;
- reader->options = NULL;
- reader->free = grzip_reader_free;
/* This filter always uses an external program. */
archive_set_error(_a, ARCHIVE_ERRNO_MISC,
"Using external grzip program for grzip decompression");
}
#endif
+static const struct archive_read_filter_bidder_vtable
+gzip_bidder_vtable = {
+ .bid = gzip_bidder_bid,
+ .init = gzip_bidder_init,
+};
+
int
archive_read_support_filter_gzip(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_gzip");
- if (__archive_read_get_bidder(a, &bidder) != ARCHIVE_OK)
+ if (__archive_read_register_bidder(a, NULL, "gzip",
+ &gzip_bidder_vtable) != ARCHIVE_OK)
return (ARCHIVE_FATAL);
- bidder->data = NULL;
- bidder->name = "gzip";
- bidder->bid = gzip_bidder_bid;
- bidder->init = gzip_bidder_init;
- bidder->options = NULL;
- bidder->free = NULL; /* No data, so no cleanup necessary. */
/* Signal the extent of gzip support with the return value here. */
#if HAVE_ZLIB_H
return (ARCHIVE_OK);
return (ARCHIVE_OK);
}
+static const struct archive_read_filter_vtable
+gzip_reader_vtable = {
+ .read = gzip_filter_read,
+ .close = gzip_filter_close,
+#ifdef HAVE_ZLIB_H
+ .read_header = gzip_read_header,
+#endif
+};
+
/*
* Initialize the filter object.
*/
self->data = state;
state->out_block_size = out_block_size;
state->out_block = out_block;
- self->read = gzip_filter_read;
- self->skip = NULL; /* not supported */
- self->close = gzip_filter_close;
-#ifdef HAVE_ZLIB_H
- self->read_header = gzip_read_header;
-#endif
+ self->vtable = &gzip_reader_vtable;
state->in_stream = 0; /* We're not actually within a stream yet. */
static int lrzip_bidder_init(struct archive_read_filter *);
-static int
-lrzip_reader_free(struct archive_read_filter_bidder *self)
-{
- (void)self; /* UNUSED */
- return (ARCHIVE_OK);
-}
+static const struct archive_read_filter_bidder_vtable
+lrzip_bidder_vtable = {
+ .bid = lrzip_bidder_bid,
+ .init = lrzip_bidder_init,
+};
int
archive_read_support_filter_lrzip(struct archive *_a)
{
struct archive_read *a = (struct archive_read *)_a;
- struct archive_read_filter_bidder *reader;
-
- archive_check_magic(_a, ARCHIVE_READ_MAGIC,
- ARCHIVE_STATE_NEW, "archive_read_support_filter_lrzip");
- if (__archive_read_get_bidder(a, &reader) != ARCHIVE_OK)
+ if (__archive_read_register_bidder(a, NULL, "lrzip",
+ &lrzip_bidder_vtable) != ARCHIVE_OK)
return (ARCHIVE_FATAL);
- reader->data = NULL;
- reader->name = "lrzip";
- reader->bid = lrzip_bidder_bid;
- reader->init = lrzip_bidder_init;
- reader->options = NULL;
- reader->free = lrzip_reader_free;
/* This filter always uses an external program. */
archive_set_error(_a, ARCHIVE_ERRNO_MISC,
"Using external lrzip program for lrzip decompression");
*/
static int lz4_reader_bid(struct archive_read_filter_bidder *, struct archive_read_filter *);
static int lz4_reader_init(struct archive_read_filter *);
-static int lz4_reader_free(struct archive_read_filter_bidder *);
#if defined(HAVE_LIBLZ4)
static ssize_t lz4_filter_read_default_stream(struct archive_read_filter *,
const void **);
const void **);
#endif
+static const struct archive_read_filter_bidder_vtable
+lz4_bidder_vtable = {
+ .bid = lz4_reader_bid,
+ .init = lz4_reader_init,
+};
+
int
archive_read_support_filter_lz4(struct archive *_a)
{
struct archive_read *a = (struct archive_read *)_a;
- struct archive_read_filter_bidder *reader;
- archive_check_magic(_a, ARCHIVE_READ_MAGIC,
- ARCHIVE_STATE_NEW, "archive_read_support_filter_lz4");
-
- if (__archive_read_get_bidder(a, &reader) != ARCHIVE_OK)
+ if (__archive_read_register_bidder(a, NULL, "lz4",
+ &lz4_bidder_vtable) != ARCHIVE_OK)
return (ARCHIVE_FATAL);
- reader->data = NULL;
- reader->name = "lz4";
- reader->bid = lz4_reader_bid;
- reader->init = lz4_reader_init;
- reader->options = NULL;
- reader->free = lz4_reader_free;
#if defined(HAVE_LIBLZ4)
return (ARCHIVE_OK);
#else
#endif
}
-static int
-lz4_reader_free(struct archive_read_filter_bidder *self){
- (void)self; /* UNUSED */
- return (ARCHIVE_OK);
-}
-
/*
* Test whether we can handle this data.
*
#else
+static const struct archive_read_filter_vtable
+lz4_reader_vtable = {
+ .read = lz4_filter_read,
+ .close = lz4_filter_close,
+};
+
/*
* Setup the callbacks.
*/
self->data = state;
state->stage = SELECT_STREAM;
- self->read = lz4_filter_read;
- self->skip = NULL; /* not supported */
- self->close = lz4_filter_close;
+ self->vtable = &lz4_reader_vtable;
return (ARCHIVE_OK);
}
chsum = (chsum >> 8) & 0xff;
chsum_verifier = read_buf[descriptor_bytes-1] & 0xff;
if (chsum != chsum_verifier)
+#ifndef DONT_FAIL_ON_CRC_ERROR
goto malformed_error;
+#endif
__archive_read_filter_consume(self->upstream, descriptor_bytes);
unsigned int chsum_block =
archive_le32dec(read_buf + 4 + compressed_size);
if (chsum != chsum_block)
+#ifndef DONT_FAIL_ON_CRC_ERROR
goto malformed_error;
+#endif
}
state->out_block + prefix64k, (int)compressed_size,
state->flags.block_maximum_size,
state->out_block,
- prefix64k);
+ (int)prefix64k);
#else
uncompressed_size = LZ4_decompress_safe_withPrefix64k(
read_buf + 4,
state->xxh32_state);
state->xxh32_state = NULL;
if (checksum != checksum_stream) {
+#ifndef DONT_FAIL_ON_CRC_ERROR
archive_set_error(&self->archive->archive,
ARCHIVE_ERRNO_MISC,
"lz4 stream checksum error");
return (ARCHIVE_FATAL);
+#endif
}
} else if (ret > 0)
__archive_xxhash.XXH32_update(state->xxh32_state,
struct archive_read_filter *);
static int lzop_bidder_init(struct archive_read_filter *);
+static const struct archive_read_filter_bidder_vtable
+lzop_bidder_vtable = {
+ .bid = lzop_bidder_bid,
+ .init = lzop_bidder_init,
+};
+
int
archive_read_support_filter_lzop(struct archive *_a)
{
struct archive_read *a = (struct archive_read *)_a;
- struct archive_read_filter_bidder *reader;
- archive_check_magic(_a, ARCHIVE_READ_MAGIC,
- ARCHIVE_STATE_NEW, "archive_read_support_filter_lzop");
-
- if (__archive_read_get_bidder(a, &reader) != ARCHIVE_OK)
+ if (__archive_read_register_bidder(a, NULL, NULL,
+ &lzop_bidder_vtable) != ARCHIVE_OK)
return (ARCHIVE_FATAL);
- reader->data = NULL;
- reader->bid = lzop_bidder_bid;
- reader->init = lzop_bidder_init;
- reader->options = NULL;
- reader->free = NULL;
/* Signal the extent of lzop support with the return value here. */
#if defined(HAVE_LZO_LZOCONF_H) && defined(HAVE_LZO_LZO1X_H)
return (ARCHIVE_OK);
return (r);
}
#else
+
+static const struct archive_read_filter_vtable
+lzop_reader_vtable = {
+ .read = lzop_filter_read,
+ .close = lzop_filter_close
+};
+
/*
* Initialize the filter object.
*/
}
self->data = state;
- self->read = lzop_filter_read;
- self->skip = NULL; /* not supported */
- self->close = lzop_filter_close;
+ self->vtable = &lzop_reader_vtable;
return (ARCHIVE_OK);
}
else
checksum = adler32(adler32(0, NULL, 0), p, len);
if (archive_be32dec(p + len) != checksum)
+#ifndef DONT_FAIL_ON_CRC_ERROR
goto corrupted;
+#endif
__archive_read_filter_consume(self->upstream, len + 4);
if (flags & EXTRA_FIELD) {
/* Skip extra field */
static int program_bidder_bid(struct archive_read_filter_bidder *,
struct archive_read_filter *upstream);
static int program_bidder_init(struct archive_read_filter *);
-static int program_bidder_free(struct archive_read_filter_bidder *);
+static void program_bidder_free(struct archive_read_filter_bidder *);
/*
* The actual filter needs to track input and output data.
static int program_filter_close(struct archive_read_filter *);
static void free_state(struct program_bidder *);
-static int
-set_bidder_signature(struct archive_read_filter_bidder *bidder,
- struct program_bidder *state, const void *signature, size_t signature_len)
-{
-
- if (signature != NULL && signature_len > 0) {
- state->signature_len = signature_len;
- state->signature = malloc(signature_len);
- memcpy(state->signature, signature, signature_len);
- }
-
- /*
- * Fill in the bidder object.
- */
- bidder->data = state;
- bidder->bid = program_bidder_bid;
- bidder->init = program_bidder_init;
- bidder->options = NULL;
- bidder->free = program_bidder_free;
- return (ARCHIVE_OK);
-}
+static const struct archive_read_filter_bidder_vtable
+program_bidder_vtable = {
+ .bid = program_bidder_bid,
+ .init = program_bidder_init,
+ .free = program_bidder_free,
+};
int
archive_read_support_filter_program_signature(struct archive *_a,
const char *cmd, const void *signature, size_t signature_len)
{
struct archive_read *a = (struct archive_read *)_a;
- struct archive_read_filter_bidder *bidder;
struct program_bidder *state;
/*
- * Get a bidder object from the read core.
- */
- if (__archive_read_get_bidder(a, &bidder) != ARCHIVE_OK)
- return (ARCHIVE_FATAL);
-
- /*
* Allocate our private state.
*/
state = (struct program_bidder *)calloc(1, sizeof (*state));
if (state->cmd == NULL)
goto memerr;
- return set_bidder_signature(bidder, state, signature, signature_len);
+ if (signature != NULL && signature_len > 0) {
+ state->signature_len = signature_len;
+ state->signature = malloc(signature_len);
+ memcpy(state->signature, signature, signature_len);
+ }
+
+ if (__archive_read_register_bidder(a, state, NULL,
+ &program_bidder_vtable) != ARCHIVE_OK) {
+ free_state(state);
+ return (ARCHIVE_FATAL);
+ }
+ return (ARCHIVE_OK);
+
memerr:
free_state(state);
archive_set_error(_a, ENOMEM, "Can't allocate memory");
return (ARCHIVE_FATAL);
}
-static int
+static void
program_bidder_free(struct archive_read_filter_bidder *self)
{
struct program_bidder *state = (struct program_bidder *)self->data;
free_state(state);
- return (ARCHIVE_OK);
}
static void
}
}
+static const struct archive_read_filter_vtable
+program_reader_vtable = {
+ .read = program_filter_read,
+ .close = program_filter_close,
+};
+
int
__archive_read_program(struct archive_read_filter *self, const char *cmd)
{
}
self->data = state;
- self->read = program_filter_read;
- self->skip = NULL;
- self->close = program_filter_close;
+ self->vtable = &program_reader_vtable;
/* XXX Check that we can read at least one byte? */
return (ARCHIVE_OK);
}
#endif
+static const struct archive_read_filter_bidder_vtable
+rpm_bidder_vtable = {
+ .bid = rpm_bidder_bid,
+ .init = rpm_bidder_init,
+};
+
int
archive_read_support_filter_rpm(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_rpm");
-
- if (__archive_read_get_bidder(a, &bidder) != ARCHIVE_OK)
- return (ARCHIVE_FATAL);
- bidder->data = NULL;
- bidder->name = "rpm";
- bidder->bid = rpm_bidder_bid;
- bidder->init = rpm_bidder_init;
- bidder->options = NULL;
- bidder->free = NULL;
- return (ARCHIVE_OK);
+ return __archive_read_register_bidder(a, NULL, "rpm",
+ &rpm_bidder_vtable);
}
static int
return (bits_checked);
}
+static const struct archive_read_filter_vtable
+rpm_reader_vtable = {
+ .read = rpm_filter_read,
+ .close = rpm_filter_close,
+};
+
static int
rpm_bidder_init(struct archive_read_filter *self)
{
self->code = ARCHIVE_FILTER_RPM;
self->name = "rpm";
- self->read = rpm_filter_read;
- self->skip = NULL; /* not supported */
- self->close = rpm_filter_close;
rpm = (struct rpm *)calloc(sizeof(*rpm), 1);
if (rpm == NULL) {
self->data = rpm;
rpm->state = ST_LEAD;
+ self->vtable = &rpm_reader_vtable;
return (ARCHIVE_OK);
}
#endif
#include "archive.h"
+#include "archive_entry.h"
#include "archive_private.h"
#include "archive_read_private.h"
#define ST_UUEND 2
#define ST_READ_BASE64 3
#define ST_IGNORE 4
+ mode_t mode;
+ int mode_set;
+ char *name;
};
static int uudecode_bidder_bid(struct archive_read_filter_bidder *,
struct archive_read_filter *filter);
static int uudecode_bidder_init(struct archive_read_filter *);
+static int uudecode_read_header(struct archive_read_filter *,
+ struct archive_entry *entry);
static ssize_t uudecode_filter_read(struct archive_read_filter *,
const void **);
static int uudecode_filter_close(struct archive_read_filter *);
}
#endif
+static const struct archive_read_filter_bidder_vtable
+uudecode_bidder_vtable = {
+ .bid = uudecode_bidder_bid,
+ .init = uudecode_bidder_init,
+};
+
int
archive_read_support_filter_uu(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_uu");
-
- if (__archive_read_get_bidder(a, &bidder) != ARCHIVE_OK)
- return (ARCHIVE_FATAL);
- bidder->data = NULL;
- bidder->name = "uu";
- bidder->bid = uudecode_bidder_bid;
- bidder->init = uudecode_bidder_init;
- bidder->options = NULL;
- bidder->free = NULL;
- return (ARCHIVE_OK);
+ return __archive_read_register_bidder(a, NULL, "uu",
+ &uudecode_bidder_vtable);
}
static const unsigned char ascii[256] = {
return (0);
}
+static const struct archive_read_filter_vtable
+uudecode_reader_vtable = {
+ .read = uudecode_filter_read,
+ .close = uudecode_filter_close,
+ .read_header = uudecode_read_header
+};
+
static int
uudecode_bidder_init(struct archive_read_filter *self)
{
self->code = ARCHIVE_FILTER_UU;
self->name = "uu";
- self->read = uudecode_filter_read;
- self->skip = NULL; /* not supported */
- self->close = uudecode_filter_close;
uudecode = (struct uudecode *)calloc(sizeof(*uudecode), 1);
out_buff = malloc(OUT_BUFF_SIZE);
uudecode->in_allocated = IN_BUFF_SIZE;
uudecode->out_buff = out_buff;
uudecode->state = ST_FIND_HEAD;
+ uudecode->mode_set = 0;
+ uudecode->name = NULL;
+ self->vtable = &uudecode_reader_vtable;
return (ARCHIVE_OK);
}
return (ARCHIVE_OK);
}
+static int
+uudecode_read_header(struct archive_read_filter *self, struct archive_entry *entry)
+{
+
+ struct uudecode *uudecode;
+ uudecode = (struct uudecode *)self->data;
+
+ if (uudecode->mode_set != 0)
+ archive_entry_set_mode(entry, S_IFREG | uudecode->mode);
+
+ if (uudecode->name != NULL)
+ archive_entry_set_pathname(entry, uudecode->name);
+
+ return (ARCHIVE_OK);
+}
+
static ssize_t
uudecode_filter_read(struct archive_read_filter *self, const void **buff)
{
ssize_t avail_in, ravail;
ssize_t used;
ssize_t total;
- ssize_t len, llen, nl;
+ ssize_t len, llen, nl, namelen;
uudecode = (struct uudecode *)self->data;
uudecode->state = ST_READ_UU;
else
uudecode->state = ST_READ_BASE64;
+ uudecode->mode = (mode_t)(
+ ((int)(b[l] - '0') * 64) +
+ ((int)(b[l+1] - '0') * 8) +
+ (int)(b[l+2] - '0'));
+ uudecode->mode_set = 1;
+ namelen = len - nl - 4 - l;
+ if (namelen > 1) {
+ if (uudecode->name != NULL)
+ free(uudecode->name);
+ uudecode->name = malloc(namelen + 1);
+ if (uudecode->name == NULL) {
+ archive_set_error(
+ &self->archive->archive,
+ ENOMEM,
+ "Can't allocate data for uudecode");
+ return (ARCHIVE_FATAL);
+ }
+ strncpy(uudecode->name,
+ (const char *)(b + l + 4),
+ namelen);
+ uudecode->name[namelen] = '\0';
+ }
}
break;
case ST_READ_UU:
uudecode = (struct uudecode *)self->data;
free(uudecode->in_buff);
free(uudecode->out_buff);
+ free(uudecode->name);
free(uudecode);
return (ARCHIVE_OK);
}
#endif
+static const struct archive_read_filter_bidder_vtable
+xz_bidder_vtable = {
+ .bid = xz_bidder_bid,
+ .init = xz_bidder_init,
+};
+
int
archive_read_support_filter_xz(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_xz");
- if (__archive_read_get_bidder(a, &bidder) != ARCHIVE_OK)
+ if (__archive_read_register_bidder(a, NULL, "xz",
+ &xz_bidder_vtable) != ARCHIVE_OK)
return (ARCHIVE_FATAL);
- bidder->data = NULL;
- bidder->name = "xz";
- bidder->bid = xz_bidder_bid;
- bidder->init = xz_bidder_init;
- bidder->options = NULL;
- bidder->free = NULL;
#if HAVE_LZMA_H && HAVE_LIBLZMA
return (ARCHIVE_OK);
#else
}
#endif
+static const struct archive_read_filter_bidder_vtable
+lzma_bidder_vtable = {
+ .bid = lzma_bidder_bid,
+ .init = lzma_bidder_init,
+};
+
int
archive_read_support_filter_lzma(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_lzma");
- if (__archive_read_get_bidder(a, &bidder) != ARCHIVE_OK)
+ if (__archive_read_register_bidder(a, NULL, "lzma",
+ &lzma_bidder_vtable) != ARCHIVE_OK)
return (ARCHIVE_FATAL);
- bidder->data = NULL;
- bidder->name = "lzma";
- bidder->bid = lzma_bidder_bid;
- bidder->init = lzma_bidder_init;
- bidder->options = NULL;
- bidder->free = NULL;
#if HAVE_LZMA_H && HAVE_LIBLZMA
return (ARCHIVE_OK);
#else
}
#endif
+static const struct archive_read_filter_bidder_vtable
+lzip_bidder_vtable = {
+ .bid = lzip_bidder_bid,
+ .init = lzip_bidder_init,
+};
+
int
archive_read_support_filter_lzip(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_lzip");
- if (__archive_read_get_bidder(a, &bidder) != ARCHIVE_OK)
+ if (__archive_read_register_bidder(a, NULL, "lzip",
+ &lzip_bidder_vtable) != ARCHIVE_OK)
return (ARCHIVE_FATAL);
- bidder->data = NULL;
- bidder->name = "lzip";
- bidder->bid = lzip_bidder_bid;
- bidder->init = lzip_bidder_init;
- bidder->options = NULL;
- bidder->free = NULL;
#if HAVE_LZMA_H && HAVE_LIBLZMA
return (ARCHIVE_OK);
#else
/* Second through fifth bytes are dictionary size, stored in
* little-endian order. The minimum dictionary size is
* 1 << 12(4KiB) which the lzma of LZMA SDK uses with option
- * -d12 and the maximum dictionary size is 1 << 27(128MiB)
- * which the one uses with option -d27.
+ * -d12 and the maximum dictionary size is 1 << 29(512MiB)
+ * which the one uses with option -d29.
* NOTE: A comment of LZMA SDK source code says this dictionary
* range is from 1 << 12 to 1 << 30. */
dicsize = archive_le32dec(buffer+1);
/* Dictionary size. */
log2dic = buffer[5] & 0x1f;
- if (log2dic < 12 || log2dic > 27)
+ if (log2dic < 12 || log2dic > 29)
return (0);
bits_checked += 8;
}
}
+static const struct archive_read_filter_vtable
+xz_lzma_reader_vtable = {
+ .read = xz_filter_read,
+ .close = xz_filter_close,
+};
+
/*
* Setup the callbacks.
*/
self->data = state;
state->out_block_size = out_block_size;
state->out_block = out_block;
- self->read = xz_filter_read;
- self->skip = NULL; /* not supported */
- self->close = xz_filter_close;
+ self->vtable = &xz_lzma_reader_vtable;
state->stream.avail_in = 0;
/* Get dictionary size. */
log2dic = h[5] & 0x1f;
- if (log2dic < 12 || log2dic > 27)
+ if (log2dic < 12 || log2dic > 29)
return (ARCHIVE_FATAL);
dicsize = 1U << log2dic;
if (log2dic > 12)
/* Check the crc32 value of the uncompressed data of the current
* member */
if (state->crc32 != archive_le32dec(f)) {
+#ifndef DONT_FAIL_ON_CRC_ERROR
archive_set_error(&self->archive->archive, ARCHIVE_ERRNO_MISC,
"Lzip: CRC32 error");
return (ARCHIVE_FAILED);
+#endif
}
/* Check the uncompressed size of the current member */
struct archive_read_filter *);
static int zstd_bidder_init(struct archive_read_filter *);
+static const struct archive_read_filter_bidder_vtable
+zstd_bidder_vtable = {
+ .bid = zstd_bidder_bid,
+ .init = zstd_bidder_init,
+};
+
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)
+ if (__archive_read_register_bidder(a, NULL, "zstd",
+ &zstd_bidder_vtable) != 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
unsigned prefix;
/* Zstd frame magic values */
- const unsigned zstd_magic = 0xFD2FB528U;
- const unsigned zstd_magic_skippable_start = 0x184D2A50U;
- const unsigned zstd_magic_skippable_mask = 0xFFFFFFF0;
+ unsigned zstd_magic = 0xFD2FB528U;
+ unsigned zstd_magic_skippable_start = 0x184D2A50U;
+ unsigned zstd_magic_skippable_mask = 0xFFFFFFF0;
(void) self; /* UNUSED */
#else
+static const struct archive_read_filter_vtable
+zstd_reader_vtable = {
+ .read = zstd_filter_read,
+ .close = zstd_filter_close,
+};
+
/*
* Initialize the filter object
*/
zstd_bidder_init(struct archive_read_filter *self)
{
struct private_data *state;
- const size_t out_block_size = ZSTD_DStreamOutSize();
+ size_t out_block_size = ZSTD_DStreamOutSize();
void *out_block;
ZSTD_DStream *dstream;
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;
+ self->vtable = &zstd_reader_vtable;
state->eof = 0;
state->in_frame = 0;
ssize_t avail_in;
ZSTD_outBuffer out;
ZSTD_inBuffer in;
+ size_t ret;
state = (struct private_data *)self->data;
/* 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);
+ ret = ZSTD_initDStream(state->dstream);
if (ZSTD_isError(ret)) {
archive_set_error(&self->archive->archive,
ARCHIVE_ERRNO_MISC,
in.pos = 0;
{
- const size_t ret =
- ZSTD_decompressStream(state->dstream, &out, &in);
+ ret = ZSTD_decompressStream(state->dstream, &out, &in);
if (ZSTD_isError(ret)) {
archive_set_error(&self->archive->archive,
#ifdef HAVE_ZLIB_H
#include <zlib.h>
#endif
+#ifdef HAVE_ZSTD_H
+#include <zstd.h>
+#endif
#include "archive.h"
#include "archive_entry.h"
#define _7Z_IA64 0x03030401
#define _7Z_ARM 0x03030501
#define _7Z_ARMTHUMB 0x03030701
+#define _7Z_ARM64 0xa
#define _7Z_SPARC 0x03030805
+#define _7Z_ZSTD 0x4F71101 /* Copied from https://github.com/mcmilk/7-Zip-zstd.git */
+
/*
* 7-Zip header property IDs.
*/
#define kEncodedHeader 0x17
#define kDummy 0x19
+// Check that some windows file attribute constants are defined.
+// Reference: https://learn.microsoft.com/en-us/windows/win32/fileio/file-attribute-constants
+#ifndef FILE_ATTRIBUTE_READONLY
+#define FILE_ATTRIBUTE_READONLY 0x00000001
+#endif
+
+#ifndef FILE_ATTRIBUTE_HIDDEN
+#define FILE_ATTRIBUTE_HIDDEN 0x00000002
+#endif
+
+#ifndef FILE_ATTRIBUTE_SYSTEM
+#define FILE_ATTRIBUTE_SYSTEM 0x00000004
+#endif
+
+#ifndef FILE_ATTRIBUTE_DIRECTORY
+#define FILE_ATTRIBUTE_DIRECTORY 0x00000010
+#endif
+
+// This value is defined in 7zip with the comment "trick for Unix".
+//
+// 7z archives created on unix have this bit set in the high 16 bits of
+// the attr field along with the unix permissions.
+#define FILE_ATTRIBUTE_UNIX_EXTENSION 0x8000
+
struct _7z_digests {
unsigned char *defineds;
uint32_t *digests;
z_stream stream;
int stream_valid;
#endif
+ /* Decoding Zstandard data. */
+#if HAVE_ZSTD_H
+ ZSTD_DStream *zstd_dstream;
+ int zstdstream_valid;
+#endif
/* Decoding PPMd data. */
int ppmd7_stat;
CPpmd7 ppmd7_context;
const unsigned char *next_in;
int64_t avail_in;
int64_t total_in;
+ int64_t stream_in;
unsigned char *next_out;
int64_t avail_out;
int64_t total_out;
int);
static void x86_Init(struct _7zip *);
static size_t x86_Convert(struct _7zip *, uint8_t *, size_t);
+static void arm_Init(struct _7zip *);
+static size_t arm_Convert(struct _7zip *, uint8_t *, size_t);
+static size_t arm64_Convert(struct _7zip *, uint8_t *, size_t);
static ssize_t Bcj2_Decode(struct _7zip *, uint8_t *, size_t);
archive_entry_set_size(entry, 0);
}
+ // These attributes are supported by the windows implementation of archive_write_disk.
+ const int supported_attrs = FILE_ATTRIBUTE_READONLY | FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_SYSTEM;
+
+ if (zip_entry->attr & supported_attrs) {
+ char *fflags_text, *ptr;
+ /* allocate for "rdonly,hidden,system," */
+ fflags_text = malloc(22 * sizeof(char));
+ if (fflags_text != NULL) {
+ ptr = fflags_text;
+ if (zip_entry->attr & FILE_ATTRIBUTE_READONLY) {
+ strcpy(ptr, "rdonly,");
+ ptr = ptr + 7;
+ }
+ if (zip_entry->attr & FILE_ATTRIBUTE_HIDDEN) {
+ strcpy(ptr, "hidden,");
+ ptr = ptr + 7;
+ }
+ if (zip_entry->attr & FILE_ATTRIBUTE_SYSTEM) {
+ strcpy(ptr, "system,");
+ ptr = ptr + 7;
+ }
+ if (ptr > fflags_text) {
+ /* Delete trailing comma */
+ *(ptr - 1) = '\0';
+ archive_entry_copy_fflags_text(entry,
+ fflags_text);
+ }
+ free(fflags_text);
+ }
+ }
+
/* If there's no body, force read_data() to return EOF immediately. */
if (zip->entry_bytes_remaining < 1)
zip->end_of_entry = 1;
}
/* Set up a more descriptive format name. */
- sprintf(zip->format_name, "7-Zip");
+ snprintf(zip->format_name, sizeof(zip->format_name), "7-Zip");
a->archive.archive_format_name = zip->format_name;
return (ret);
struct _7zip *zip = (struct _7zip *)(a->format->data);
Byte b;
- if (zip->ppstream.avail_in == 0) {
- archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT,
- "Truncated RAR file data");
- zip->ppstream.overconsumed = 1;
- return (0);
+ if (zip->ppstream.avail_in <= 0) {
+ /*
+ * Ppmd7_DecodeSymbol might require reading multiple bytes
+ * and we are on boundary;
+ * last resort to read using __archive_read_ahead.
+ */
+ ssize_t bytes_avail = 0;
+ const uint8_t* data = __archive_read_ahead(a,
+ zip->ppstream.stream_in+1, &bytes_avail);
+ if(bytes_avail < zip->ppstream.stream_in+1) {
+ archive_set_error(&a->archive,
+ ARCHIVE_ERRNO_FILE_FORMAT,
+ "Truncated 7z file data");
+ zip->ppstream.overconsumed = 1;
+ return (0);
+ }
+ zip->ppstream.next_in++;
+ b = data[zip->ppstream.stream_in];
+ } else {
+ b = *zip->ppstream.next_in++;
}
- b = *zip->ppstream.next_in++;
zip->ppstream.avail_in--;
zip->ppstream.total_in++;
+ zip->ppstream.stream_in++;
return (b);
}
case _7Z_COPY:
case _7Z_BZ2:
case _7Z_DEFLATE:
+ case _7Z_ZSTD:
case _7Z_PPMD:
if (coder2 != NULL) {
if (coder2->codec != _7Z_X86 &&
- coder2->codec != _7Z_X86_BCJ2) {
+ coder2->codec != _7Z_X86_BCJ2 &&
+ coder2->codec != _7Z_ARM &&
+ coder2->codec != _7Z_ARM64) {
archive_set_error(&a->archive,
ARCHIVE_ERRNO_MISC,
"Unsupported filter %lx for %lx",
zip->bcj_state = 0;
if (coder2->codec == _7Z_X86)
x86_Init(zip);
+ else if (coder2->codec == _7Z_ARM)
+ arm_Init(zip);
}
break;
default:
filters[fi].id = LZMA_FILTER_ARMTHUMB;
fi++;
break;
+#ifdef LZMA_FILTER_ARM64
+ case _7Z_ARM64:
+ filters[fi].id = LZMA_FILTER_ARM64;
+ fi++;
+ break;
+#endif
case _7Z_SPARC:
filters[fi].id = LZMA_FILTER_SPARC;
fi++;
"BZ2 codec is unsupported");
return (ARCHIVE_FAILED);
#endif
+ case _7Z_ZSTD:
+ {
+#if defined(HAVE_ZSTD_H)
+ if (zip->zstdstream_valid) {
+ ZSTD_freeDStream(zip->zstd_dstream);
+ zip->zstdstream_valid = 0;
+ }
+ zip->zstd_dstream = ZSTD_createDStream();
+ zip->zstdstream_valid = 1;
+ break;
+#else
+ archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
+ "ZSTD codec is unsupported");
+ return (ARCHIVE_FAILED);
+#endif
+ }
case _7Z_DEFLATE:
#ifdef HAVE_ZLIB_H
if (zip->stream_valid)
case _7Z_IA64:
case _7Z_ARM:
case _7Z_ARMTHUMB:
+ case _7Z_ARM64:
case _7Z_SPARC:
case _7Z_DELTA:
archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
#if defined(HAVE_BZLIB_H) && defined(BZ_CONFIG_ERROR)
case _7Z_BZ2:
zip->bzstream.next_in = (char *)(uintptr_t)t_next_in;
- zip->bzstream.avail_in = t_avail_in;
+ zip->bzstream.avail_in = (uint32_t)t_avail_in;
zip->bzstream.next_out = (char *)(uintptr_t)t_next_out;
- zip->bzstream.avail_out = t_avail_out;
+ zip->bzstream.avail_out = (uint32_t)t_avail_out;
r = BZ2_bzDecompress(&(zip->bzstream));
switch (r) {
case BZ_STREAM_END: /* Found end of stream. */
t_avail_out = zip->stream.avail_out;
break;
#endif
+#ifdef HAVE_ZSTD_H
+ case _7Z_ZSTD:
+ {
+ ZSTD_inBuffer input = { t_next_in, t_avail_in, 0 }; // src, size, pos
+ ZSTD_outBuffer output = { t_next_out, t_avail_out, 0 }; // dst, size, pos
+
+ size_t const zret = ZSTD_decompressStream(zip->zstd_dstream, &output, &input);
+ if (ZSTD_isError(zret)) {
+ archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC, "Zstd decompression failed: %s", ZSTD_getErrorName(zret));
+ return ARCHIVE_FAILED;
+ }
+ t_avail_in -= input.pos;
+ t_avail_out -= output.pos;
+ break;
+ }
+#endif
case _7Z_PPMD:
{
uint64_t flush_bytes;
}
zip->ppstream.next_in = t_next_in;
zip->ppstream.avail_in = t_avail_in;
+ zip->ppstream.stream_in = 0;
zip->ppstream.next_out = t_next_out;
zip->ppstream.avail_out = t_avail_out;
if (zip->ppmd7_stat == 0) {
/*
* Decord BCJ.
*/
- if (zip->codec != _7Z_LZMA2 && zip->codec2 == _7Z_X86) {
- size_t l = x86_Convert(zip, buff, *outbytes);
- zip->odd_bcj_size = *outbytes - l;
- if (zip->odd_bcj_size > 0 && zip->odd_bcj_size <= 4 &&
- o_avail_in && ret != ARCHIVE_EOF) {
- memcpy(zip->odd_bcj, ((unsigned char *)buff) + l,
- zip->odd_bcj_size);
- *outbytes = l;
- } else
- zip->odd_bcj_size = 0;
+ if (zip->codec != _7Z_LZMA2) {
+ if (zip->codec2 == _7Z_X86) {
+ size_t l = x86_Convert(zip, buff, *outbytes);
+
+ zip->odd_bcj_size = *outbytes - l;
+ if (zip->odd_bcj_size > 0 && zip->odd_bcj_size <= 4 &&
+ o_avail_in && ret != ARCHIVE_EOF) {
+ memcpy(zip->odd_bcj, ((unsigned char *)buff) + l,
+ zip->odd_bcj_size);
+ *outbytes = l;
+ } else
+ zip->odd_bcj_size = 0;
+ } else if (zip->codec2 == _7Z_ARM) {
+ *outbytes = arm_Convert(zip, buff, *outbytes);
+ } else if (zip->codec2 == _7Z_ARM64) {
+ *outbytes = arm64_Convert(zip, buff, *outbytes);
+ }
}
/*
entries[i].flg |= HAS_STREAM;
/* The high 16 bits of attributes is a posix file mode. */
entries[i].mode = entries[i].attr >> 16;
+
+ if (!(entries[i].attr & FILE_ATTRIBUTE_UNIX_EXTENSION)) {
+ // Only windows permissions specified for this entry. Translate to
+ // reasonable corresponding unix permissions.
+
+ if (entries[i].attr & FILE_ATTRIBUTE_DIRECTORY) {
+ if (entries[i].attr & FILE_ATTRIBUTE_READONLY) {
+ // Read-only directory.
+ entries[i].mode = AE_IFDIR | 0555;
+ } else {
+ // Read-write directory.
+ entries[i].mode = AE_IFDIR | 0755;
+ }
+ } else if (entries[i].attr & FILE_ATTRIBUTE_READONLY) {
+ // Readonly file.
+ entries[i].mode = AE_IFREG | 0444;
+ } else {
+ // Assume read-write file.
+ entries[i].mode = AE_IFREG | 0644;
+ }
+ }
+
if (entries[i].flg & HAS_STREAM) {
if ((size_t)sindex >= si->ss.unpack_streams)
return (-1);
}
entries[i].ssIndex = -1;
}
- if (entries[i].attr & 0x01)
+ if (entries[i].attr & FILE_ATTRIBUTE_READONLY)
entries[i].mode &= ~0222;/* Read only. */
if ((entries[i].flg & HAS_STREAM) == 0 && indexInFolder == 0) {
/* CRC check. */
if (crc32(0, (const unsigned char *)p + 12, 20)
!= archive_le32dec(p + 8)) {
+#ifdef DONT_FAIL_ON_CRC_ERROR
archive_set_error(&a->archive, -1, "Header CRC error");
return (ARCHIVE_FATAL);
+#endif
}
next_header_offset = archive_le64dec(p + 12);
/* Check the EncodedHeader CRC.*/
if (r == 0 && zip->header_crc32 != next_header_crc) {
archive_set_error(&a->archive, -1,
+#ifndef DONT_FAIL_ON_CRC_ERROR
"Damaged 7-Zip archive");
r = -1;
+#endif
}
if (r == 0) {
if (zip->si.ci.folders[0].digest_defined)
/* Check the Header CRC.*/
if (check_header_crc && zip->header_crc32 != next_header_crc) {
+#ifndef DONT_FAIL_ON_CRC_ERROR
archive_set_error(&a->archive, -1,
"Malformed 7-Zip archive");
return (ARCHIVE_FATAL);
+#endif
}
break;
default:
return (bufferPos);
}
+static void
+arm_Init(struct _7zip *zip)
+{
+ zip->bcj_ip = 8;
+}
+
+static size_t
+arm_Convert(struct _7zip *zip, uint8_t *buf, size_t size)
+{
+ // This function was adapted from
+ // static size_t bcj_arm(struct xz_dec_bcj *s, uint8_t *buf, size_t size)
+ // in https://git.tukaani.org/xz-embedded.git
+
+ /*
+ * Branch/Call/Jump (BCJ) filter decoders
+ *
+ * Authors: Lasse Collin <lasse.collin@tukaani.org>
+ * Igor Pavlov <https://7-zip.org/>
+ *
+ * This file has been put into the public domain.
+ * You can do whatever you want with this file.
+ */
+
+ size_t i;
+ uint32_t addr;
+
+ for (i = 0; i + 4 <= size; i += 4) {
+ if (buf[i + 3] == 0xEB) {
+ // Calculate the transformed addr.
+ addr = (uint32_t)buf[i] | ((uint32_t)buf[i + 1] << 8)
+ | ((uint32_t)buf[i + 2] << 16);
+ addr <<= 2;
+ addr -= zip->bcj_ip + (uint32_t)i;
+ addr >>= 2;
+
+ // Store the transformed addr in buf.
+ buf[i] = (uint8_t)addr;
+ buf[i + 1] = (uint8_t)(addr >> 8);
+ buf[i + 2] = (uint8_t)(addr >> 16);
+ }
+ }
+
+ zip->bcj_ip += (uint32_t)i;
+
+ return i;
+}
+
+static size_t
+arm64_Convert(struct _7zip *zip, uint8_t *buf, size_t size)
+{
+ // This function was adapted from
+ // static size_t bcj_arm64(struct xz_dec_bcj *s, uint8_t *buf, size_t size)
+ // in https://git.tukaani.org/xz-embedded.git
+
+ /*
+ * Branch/Call/Jump (BCJ) filter decoders
+ *
+ * Authors: Lasse Collin <lasse.collin@tukaani.org>
+ * Igor Pavlov <https://7-zip.org/>
+ *
+ * This file has been put into the public domain.
+ * You can do whatever you want with this file.
+ */
+
+ size_t i;
+ uint32_t instr;
+ uint32_t addr;
+
+ for (i = 0; i + 4 <= size; i += 4) {
+ instr = (uint32_t)buf[i]
+ | ((uint32_t)buf[i+1] << 8)
+ | ((uint32_t)buf[i+2] << 16)
+ | ((uint32_t)buf[i+3] << 24);
+
+ if ((instr >> 26) == 0x25) {
+ /* BL instruction */
+ addr = instr - ((zip->bcj_ip + (uint32_t)i) >> 2);
+ instr = 0x94000000 | (addr & 0x03FFFFFF);
+
+ buf[i] = (uint8_t)instr;
+ buf[i+1] = (uint8_t)(instr >> 8);
+ buf[i+2] = (uint8_t)(instr >> 16);
+ buf[i+3] = (uint8_t)(instr >> 24);
+ } else if ((instr & 0x9F000000) == 0x90000000) {
+ /* ADRP instruction */
+ addr = ((instr >> 29) & 3) | ((instr >> 3) & 0x1FFFFC);
+
+ /* Only convert values in the range +/-512 MiB. */
+ if ((addr + 0x020000) & 0x1C0000)
+ continue;
+
+ addr -= (zip->bcj_ip + (uint32_t)i) >> 12;
+
+ instr &= 0x9000001F;
+ instr |= (addr & 3) << 29;
+ instr |= (addr & 0x03FFFC) << 3;
+ instr |= (0U - (addr & 0x020000)) & 0xE00000;
+
+ buf[i] = (uint8_t)instr;
+ buf[i+1] = (uint8_t)(instr >> 8);
+ buf[i+2] = (uint8_t)(instr >> 16);
+ buf[i+3] = (uint8_t)(instr >> 24);
+ }
+ }
+
+ zip->bcj_ip += (uint32_t)i;
+
+ return i;
+}
+
/*
* Brought from LZMA SDK.
*
cab->end_of_entry_cleanup = cab->end_of_entry = 1;
/* Set up a more descriptive format name. */
- sprintf(cab->format_name, "CAB %d.%d (%s)",
+ snprintf(cab->format_name, sizeof(cab->format_name), "CAB %d.%d (%s)",
hd->major, hd->minor, cab->entry_cffolder->compname);
a->archive.archive_format_name = cab->format_name;
}
if (sumbytes) {
int odd = sumbytes & 3;
- if (sumbytes - odd > 0)
+ if ((int)(sumbytes - odd) > 0)
cfdata->sum_calculated = cab_checksum_cfdata_4(
p, sumbytes - odd, cfdata->sum_calculated);
if (odd)
cfdata->sum_calculated = cab_checksum_cfdata(
cfdata->memimage + CFDATA_cbData, l, cfdata->sum_calculated);
if (cfdata->sum_calculated != cfdata->sum) {
+#ifndef DONT_FAIL_ON_CRC_ERROR
archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT,
"Checksum error CFDATA[%d] %" PRIx32 ":%" PRIx32 " in %d bytes",
cab->entry_cffolder->cfdata_index -1,
cfdata->sum, cfdata->sum_calculated,
cfdata->compressed_size);
return (ARCHIVE_FAILED);
+#endif
}
return (ARCHIVE_OK);
}
(br->cache_buffer << 48) |
((uint64_t)strm->next_in[1]) << 40 |
((uint64_t)strm->next_in[0]) << 32 |
- ((uint32_t)strm->next_in[3]) << 24 |
- ((uint32_t)strm->next_in[2]) << 16 |
- ((uint32_t)strm->next_in[5]) << 8 |
- (uint32_t)strm->next_in[4];
+ ((uint64_t)strm->next_in[3]) << 24 |
+ ((uint64_t)strm->next_in[2]) << 16 |
+ ((uint64_t)strm->next_in[5]) << 8 |
+ (uint64_t)strm->next_in[4];
strm->next_in += 6;
strm->avail_in -= 6;
br->cache_avail += 6 * 8;
/* Compare name to "TRAILER!!!" to test for end-of-archive. */
if (namelength == 11 && strncmp((const char *)h, "TRAILER!!!",
- 11) == 0) {
+ 10) == 0) {
/* TODO: Store file location of start of block. */
archive_clear_error(&a->archive);
return (ARCHIVE_EOF);
static int64_t
le4(const unsigned char *p)
{
- return ((p[0] << 16) + (((int64_t)p[1]) << 24) + (p[2] << 0) + (p[3] << 8));
+ return ((p[0] << 16) | (((int64_t)p[1]) << 24) | (p[2] << 0) | (p[3] << 8));
}
static int64_t
be4(const unsigned char *p)
{
- return ((((int64_t)p[0]) << 24) + (p[1] << 16) + (p[2] << 8) + (p[3]));
+ return ((((int64_t)p[0]) << 24) | (p[1] << 16) | (p[2] << 8) | (p[3]));
}
/*
p = b;
b += iso9660->logical_block_size;
step -= iso9660->logical_block_size;
- for (; *p != 0 && p < b && p + *p <= b; p += *p) {
+ for (; *p != 0 && p + DR_name_offset < b && p + *p <= b;
+ p += *p) {
struct file_info *child;
/* N.B.: these special directory identifiers
size_t name_len;
const unsigned char *rr_start, *rr_end;
const unsigned char *p;
- size_t dr_len;
+ size_t dr_len = 0;
uint64_t fsize, offset;
int32_t location;
int flags;
* NUMBER of RRIP "PX" extension.
* Note: Old mkisofs did not record that FILE SERIAL NUMBER
* in ISO images.
- * Note2: xorriso set 0 to the location of a symlink file.
+ * Note2: xorriso set 0 to the location of a symlink file.
*/
if (file->size == 0 && location >= 0) {
/* If file->size is zero, its location points wrong place,
* made by makefs is not zero and its location is
* the same as those of next regular file. That is
* the same as hard like file and it causes unexpected
- * error.
+ * error.
*/
if (file->size > 0 &&
(file->mode & AE_IFMT) == AE_IFLNK) {
* If directory entries all which are descendant of
* rr_moved are still remaining, expose their.
*/
- if (iso9660->re_files.first != NULL &&
+ if (iso9660->re_files.first != NULL &&
iso9660->rr_moved != NULL &&
iso9660->rr_moved->rr_moved_has_re_only)
/* Expose "rr_moved" entry. */
static time_t
time_from_tm(struct tm *t)
{
-#if HAVE_TIMEGM
+#if HAVE__MKGMTIME
+ return _mkgmtime(t);
+#elif HAVE_TIMEGM
/* Use platform timegm() if available. */
return (timegm(t));
-#elif HAVE__MKGMTIME64
- return (_mkgmtime64(t));
#else
/* Else use direct calculation using POSIX assumptions. */
/* First, fix up tm_yday based on the year/month/day. */
if (lha->directory || lha->compsize == 0)
lha->end_of_entry = 1;
- sprintf(lha->format_name, "lha -%c%c%c-",
+ snprintf(lha->format_name, sizeof(lha->format_name), "lha -%c%c%c-",
lha->method[0], lha->method[1], lha->method[2]);
a->archive.archive_format_name = lha->format_name;
}
if (header_crc != lha->header_crc) {
+#ifndef DONT_FAIL_ON_CRC_ERROR
archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT,
"LHa header CRC error");
return (ARCHIVE_FATAL);
+#endif
}
return (err);
}
return (err);
if (header_crc != lha->header_crc) {
+#ifndef DONT_FAIL_ON_CRC_ERROR
archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT,
"LHa header CRC error");
return (ARCHIVE_FATAL);
+#endif
}
return (err);
invalid:
/* This if statement expects compiler optimization will
* remove the statement which will not be executed. */
#undef bswap16
+#ifndef __has_builtin
+#define __has_builtin(x) 0
+#endif
#if defined(_MSC_VER) && _MSC_VER >= 1400 /* Visual Studio */
# define bswap16(x) _byteswap_ushort(x)
#elif defined(__GNUC__) && ((__GNUC__ == 4 && __GNUC_MINOR__ >= 8) || __GNUC__ > 4)
/* GCC 4.8 and later has __builtin_bswap16() */
# define bswap16(x) __builtin_bswap16(x)
-#elif defined(__clang__)
-/* All clang versions have __builtin_bswap16() */
+#elif defined(__clang__) && __has_builtin(__builtin_bswap16)
+/* Newer clang versions have __builtin_bswap16() */
# define bswap16(x) __builtin_bswap16(x)
#else
# define bswap16(x) ((((x) >> 8) & 0xff) | ((x) << 8))
((uint64_t)strm->next_in[0]) << 48 |
((uint64_t)strm->next_in[1]) << 40 |
((uint64_t)strm->next_in[2]) << 32 |
- ((uint32_t)strm->next_in[3]) << 24 |
- ((uint32_t)strm->next_in[4]) << 16 |
- ((uint32_t)strm->next_in[5]) << 8 |
- (uint32_t)strm->next_in[6];
+ ((uint64_t)strm->next_in[3]) << 24 |
+ ((uint64_t)strm->next_in[4]) << 16 |
+ ((uint64_t)strm->next_in[5]) << 8 |
+ (uint64_t)strm->next_in[6];
strm->next_in += 7;
strm->avail_in -= 7;
br->cache_avail += 7 * 8;
(br->cache_buffer << 48) |
((uint64_t)strm->next_in[0]) << 40 |
((uint64_t)strm->next_in[1]) << 32 |
- ((uint32_t)strm->next_in[2]) << 24 |
- ((uint32_t)strm->next_in[3]) << 16 |
- ((uint32_t)strm->next_in[4]) << 8 |
- (uint32_t)strm->next_in[5];
+ ((uint64_t)strm->next_in[2]) << 24 |
+ ((uint64_t)strm->next_in[3]) << 16 |
+ ((uint64_t)strm->next_in[4]) << 8 |
+ (uint64_t)strm->next_in[5];
strm->next_in += 6;
strm->avail_in -= 6;
br->cache_avail += 6 * 8;
{
const char *p;
ssize_t avail, ravail;
- ssize_t detected_bytes = 0, len, nl;
+ ssize_t len, nl;
int entry_cnt = 0, multiline = 0;
int form_D = 0;/* The archive is generated by `NetBSD mtree -D'
* (In this source we call it `form D') . */
* character of previous line was '\' character. */
if (bid_keyword_list(p, len, 0, 0) <= 0)
break;
- if (multiline == 1)
- detected_bytes += len;
if (p[len-nl-1] != '\\') {
if (multiline == 1 &&
++entry_cnt >= MAX_BID_ENTRY)
keywords = bid_entry(p, len, nl, &last_is_path);
if (keywords >= 0) {
- detected_bytes += len;
if (form_D == 0) {
if (last_is_path)
form_D = 1;
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;
+ if (alt != NULL) {
+ while (alt->next_dup)
+ alt = alt->next_dup;
+ alt->next_dup = entry;
+ }
}
}
continue;
/* Non-printable characters are not allowed */
for (s = p;s < p + len - 1; s++) {
- if (!isprint((unsigned char)*s)) {
+ if (!isprint((unsigned char)*s) && *s != '\t') {
r = ARCHIVE_FATAL;
break;
}
archive_entry_filetype(entry) == AE_IFDIR) {
mtree->fd = open(path, O_RDONLY | O_BINARY | O_CLOEXEC);
__archive_ensure_cloexec_flag(mtree->fd);
- if (mtree->fd == -1 &&
- (errno != ENOENT ||
- archive_strlen(&mtree->contents_name) > 0)) {
+ if (mtree->fd == -1 && (
+#if defined(_WIN32) && !defined(__CYGWIN__)
+ /*
+ * On Windows, attempting to open a file with an
+ * invalid name result in EINVAL (Error 22)
+ */
+ (errno != ENOENT && errno != EINVAL)
+#else
+ errno != ENOENT
+#endif
+ || archive_strlen(&mtree->contents_name) > 0)) {
archive_set_error(&a->archive, errno,
"Can't open %s", path);
r = ARCHIVE_WARN;
mtree->fd = -1;
st = NULL;
}
- } else if (lstat(path, st) == -1) {
+ }
+#ifdef HAVE_LSTAT
+ else if (lstat(path, st) == -1)
+#else
+ else if (la_stat(path, st) == -1)
+#endif
+ {
st = NULL;
}
|| strcmp(key, "contents") == 0) {
parse_escapes(val, NULL);
archive_strcpy(&mtree->contents_name, val);
- break;
+ return (ARCHIVE_OK);
}
if (strcmp(key, "cksum") == 0)
- break;
- __LA_FALLTHROUGH;
+ return (ARCHIVE_OK);
+ break;
case 'd':
if (strcmp(key, "device") == 0) {
/* stat(2) st_rdev field, e.g. the major/minor IDs
archive_entry_set_rdev(entry, dev);
return r;
}
- __LA_FALLTHROUGH;
+ break;
case 'f':
if (strcmp(key, "flags") == 0) {
*parsed_kws |= MTREE_HAS_FFLAGS;
archive_entry_copy_fflags_text(entry, val);
- break;
+ return (ARCHIVE_OK);
}
- __LA_FALLTHROUGH;
+ break;
case 'g':
if (strcmp(key, "gid") == 0) {
*parsed_kws |= MTREE_HAS_GID;
archive_entry_set_gid(entry, mtree_atol(&val, 10));
- break;
+ return (ARCHIVE_OK);
}
if (strcmp(key, "gname") == 0) {
*parsed_kws |= MTREE_HAS_GNAME;
archive_entry_copy_gname(entry, val);
- break;
+ return (ARCHIVE_OK);
}
- __LA_FALLTHROUGH;
+ break;
case 'i':
if (strcmp(key, "inode") == 0) {
archive_entry_set_ino(entry, mtree_atol(&val, 10));
- break;
+ return (ARCHIVE_OK);
}
- __LA_FALLTHROUGH;
+ break;
case 'l':
if (strcmp(key, "link") == 0) {
+ parse_escapes(val, NULL);
archive_entry_copy_symlink(entry, val);
- break;
+ return (ARCHIVE_OK);
}
- __LA_FALLTHROUGH;
+ break;
case 'm':
if (strcmp(key, "md5") == 0 || strcmp(key, "md5digest") == 0) {
return parse_digest(a, entry, val,
ARCHIVE_ENTRY_DIGEST_MD5);
}
if (strcmp(key, "mode") == 0) {
- if (val[0] >= '0' && val[0] <= '7') {
- *parsed_kws |= MTREE_HAS_PERM;
- archive_entry_set_perm(entry,
- (mode_t)mtree_atol(&val, 8));
- } else {
+ if (val[0] < '0' || val[0] > '7') {
archive_set_error(&a->archive,
ARCHIVE_ERRNO_FILE_FORMAT,
"Symbolic or non-octal mode \"%s\" unsupported", val);
- return ARCHIVE_WARN;
+ return (ARCHIVE_WARN);
}
- break;
+ *parsed_kws |= MTREE_HAS_PERM;
+ archive_entry_set_perm(entry, (mode_t)mtree_atol(&val, 8));
+ return (ARCHIVE_OK);
}
- __LA_FALLTHROUGH;
+ break;
case 'n':
if (strcmp(key, "nlink") == 0) {
*parsed_kws |= MTREE_HAS_NLINK;
archive_entry_set_nlink(entry,
(unsigned int)mtree_atol(&val, 10));
- break;
+ return (ARCHIVE_OK);
}
- __LA_FALLTHROUGH;
+ break;
case 'r':
if (strcmp(key, "resdevice") == 0) {
/* stat(2) st_dev field, e.g. the device ID where the
return parse_digest(a, entry, val,
ARCHIVE_ENTRY_DIGEST_RMD160);
}
- __LA_FALLTHROUGH;
+ break;
case 's':
if (strcmp(key, "sha1") == 0 ||
strcmp(key, "sha1digest") == 0) {
}
if (strcmp(key, "size") == 0) {
archive_entry_set_size(entry, mtree_atol(&val, 10));
- break;
+ return (ARCHIVE_OK);
}
- __LA_FALLTHROUGH;
+ break;
case 't':
if (strcmp(key, "tags") == 0) {
/*
* Ignore the tags for now, but the interface
* should be extended to allow inclusion/exclusion.
*/
- break;
+ return (ARCHIVE_OK);
}
if (strcmp(key, "time") == 0) {
int64_t m;
else if (m < my_time_t_min)
m = my_time_t_min;
archive_entry_set_mtime(entry, (time_t)m, ns);
- break;
+ return (ARCHIVE_OK);
}
if (strcmp(key, "type") == 0) {
switch (val[0]) {
case 'b':
if (strcmp(val, "block") == 0) {
- archive_entry_set_filetype(entry, AE_IFBLK);
- break;
+ *parsed_kws |= MTREE_HAS_TYPE;
+ archive_entry_set_filetype(entry,
+ AE_IFBLK);
+ return (ARCHIVE_OK);
}
- __LA_FALLTHROUGH;
+ break;
case 'c':
if (strcmp(val, "char") == 0) {
+ *parsed_kws |= MTREE_HAS_TYPE;
archive_entry_set_filetype(entry,
AE_IFCHR);
- break;
+ return (ARCHIVE_OK);
}
- __LA_FALLTHROUGH;
+ break;
case 'd':
if (strcmp(val, "dir") == 0) {
+ *parsed_kws |= MTREE_HAS_TYPE;
archive_entry_set_filetype(entry,
AE_IFDIR);
- break;
+ return (ARCHIVE_OK);
}
- __LA_FALLTHROUGH;
+ break;
case 'f':
if (strcmp(val, "fifo") == 0) {
+ *parsed_kws |= MTREE_HAS_TYPE;
archive_entry_set_filetype(entry,
AE_IFIFO);
- break;
+ return (ARCHIVE_OK);
}
if (strcmp(val, "file") == 0) {
+ *parsed_kws |= MTREE_HAS_TYPE;
archive_entry_set_filetype(entry,
AE_IFREG);
- break;
+ return (ARCHIVE_OK);
}
- __LA_FALLTHROUGH;
+ break;
case 'l':
if (strcmp(val, "link") == 0) {
+ *parsed_kws |= MTREE_HAS_TYPE;
archive_entry_set_filetype(entry,
AE_IFLNK);
- break;
+ return (ARCHIVE_OK);
}
- __LA_FALLTHROUGH;
+ break;
default:
- archive_set_error(&a->archive,
- ARCHIVE_ERRNO_FILE_FORMAT,
- "Unrecognized file type \"%s\"; "
- "assuming \"file\"", val);
- archive_entry_set_filetype(entry, AE_IFREG);
- return (ARCHIVE_WARN);
+ break;
}
- *parsed_kws |= MTREE_HAS_TYPE;
- break;
+ archive_set_error(&a->archive,
+ ARCHIVE_ERRNO_FILE_FORMAT,
+ "Unrecognized file type \"%s\"; "
+ "assuming \"file\"", val);
+ archive_entry_set_filetype(entry, AE_IFREG);
+ return (ARCHIVE_WARN);
}
- __LA_FALLTHROUGH;
+ break;
case 'u':
if (strcmp(key, "uid") == 0) {
*parsed_kws |= MTREE_HAS_UID;
archive_entry_set_uid(entry, mtree_atol(&val, 10));
- break;
+ return (ARCHIVE_OK);
}
if (strcmp(key, "uname") == 0) {
*parsed_kws |= MTREE_HAS_UNAME;
archive_entry_copy_uname(entry, val);
- break;
+ return (ARCHIVE_OK);
}
- __LA_FALLTHROUGH;
+ break;
default:
- archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT,
- "Unrecognized key %s=%s", key, val);
- return (ARCHIVE_WARN);
+ break;
}
- return (ARCHIVE_OK);
+ archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT,
+ "Unrecognized key %s=%s", key, val);
+ return (ARCHIVE_WARN);
}
static int
#define MAX_SYMBOL_LENGTH 0xF
#define MAX_SYMBOLS 20
+/* Virtual Machine Properties */
+#define VM_MEMORY_SIZE 0x40000
+#define VM_MEMORY_MASK (VM_MEMORY_SIZE - 1)
+#define PROGRAM_WORK_SIZE 0x3C000
+#define PROGRAM_GLOBAL_SIZE 0x2000
+#define PROGRAM_SYSTEM_GLOBAL_ADDRESS PROGRAM_WORK_SIZE
+#define PROGRAM_SYSTEM_GLOBAL_SIZE 0x40
+#define PROGRAM_USER_GLOBAL_ADDRESS (PROGRAM_SYSTEM_GLOBAL_ADDRESS + PROGRAM_SYSTEM_GLOBAL_SIZE)
+#define PROGRAM_USER_GLOBAL_SIZE (PROGRAM_GLOBAL_SIZE - PROGRAM_SYSTEM_GLOBAL_SIZE)
+
/*
* Considering L1,L2 cache miss and a calling of write system-call,
* the best size of the output buffer(uncompressed buffer) is 128K.
int64_t end_offset;
};
+struct rar_program_code
+{
+ uint8_t *staticdata;
+ uint32_t staticdatalen;
+ uint8_t *globalbackup;
+ uint32_t globalbackuplen;
+ uint64_t fingerprint;
+ uint32_t usagecount;
+ uint32_t oldfilterlength;
+ struct rar_program_code *next;
+};
+
+struct rar_filter
+{
+ struct rar_program_code *prog;
+ uint32_t initialregisters[8];
+ uint8_t *globaldata;
+ uint32_t globaldatalen;
+ size_t blockstartpos;
+ uint32_t blocklength;
+ uint32_t filteredblockaddress;
+ uint32_t filteredblocklength;
+ struct rar_filter *next;
+};
+
+struct memory_bit_reader
+{
+ const uint8_t *bytes;
+ size_t length;
+ size_t offset;
+ uint64_t bits;
+ int available;
+ int at_eof;
+};
+
+struct rar_virtual_machine
+{
+ uint32_t registers[8];
+ uint8_t memory[VM_MEMORY_SIZE + sizeof(uint32_t)];
+};
+
+struct rar_filters
+{
+ struct rar_virtual_machine *vm;
+ struct rar_program_code *progs;
+ struct rar_filter *stack;
+ int64_t filterstart;
+ uint32_t lastfilternum;
+ int64_t lastend;
+ uint8_t *bytes;
+ size_t bytes_ready;
+};
+
+struct audio_state
+{
+ int8_t weight[5];
+ int16_t delta[4];
+ int8_t lastdelta;
+ int error[11];
+ int count;
+ uint8_t lastbyte;
+};
+
struct rar
{
/* Entries from main RAR header */
struct huffman_code lengthcode;
unsigned char lengthtable[HUFFMAN_TABLE_SIZE];
struct lzss lzss;
- char output_last_match;
unsigned int lastlength;
unsigned int lastoffset;
unsigned int oldoffset[4];
unsigned int lastlowoffset;
unsigned int numlowoffsetrepeats;
- int64_t filterstart;
char start_new_table;
+ /* Filters */
+ struct rar_filters filters;
+
/* PPMd Variant H members */
char ppmd_valid;
char ppmd_eod;
static int read_data_stored(struct archive_read *, const void **, size_t *,
int64_t *);
static int read_data_compressed(struct archive_read *, const void **, size_t *,
- int64_t *, size_t);
+ int64_t *, size_t);
static int rar_br_preparation(struct archive_read *, struct rar_br *);
static int parse_codes(struct archive_read *);
static void free_codes(struct archive_read *);
static int read_next_symbol(struct archive_read *, struct huffman_code *);
static int create_code(struct archive_read *, struct huffman_code *,
- unsigned char *, int, char);
+ unsigned char *, int, char);
static int add_value(struct archive_read *, struct huffman_code *, int, int,
int);
static int new_node(struct huffman_code *);
static int make_table(struct archive_read *, struct huffman_code *);
static int make_table_recurse(struct archive_read *, struct huffman_code *, int,
struct huffman_table_entry *, int, int);
-static int64_t expand(struct archive_read *, int64_t);
-static int copy_from_lzss_window(struct archive_read *, const void **,
- int64_t, int);
+static int expand(struct archive_read *, int64_t *);
+static int copy_from_lzss_window_to_unp(struct archive_read *, const void **,
+ int64_t, int);
static const void *rar_read_ahead(struct archive_read *, size_t, ssize_t *);
+static int parse_filter(struct archive_read *, const uint8_t *, uint16_t,
+ uint8_t);
+static int run_filters(struct archive_read *);
+static void clear_filters(struct rar_filters *);
+static struct rar_filter *create_filter(struct rar_program_code *,
+ const uint8_t *, uint32_t,
+ uint32_t[8], size_t, uint32_t);
+static void delete_filter(struct rar_filter *filter);
+static struct rar_program_code *compile_program(const uint8_t *, size_t);
+static void delete_program_code(struct rar_program_code *prog);
+static uint32_t membr_next_rarvm_number(struct memory_bit_reader *br);
+static inline uint32_t membr_bits(struct memory_bit_reader *br, int bits);
+static int membr_fill(struct memory_bit_reader *br, int bits);
+static int read_filter(struct archive_read *, int64_t *);
+static int rar_decode_byte(struct archive_read*, uint8_t *);
+static int execute_filter(struct archive_read*, struct rar_filter *,
+ struct rar_virtual_machine *, size_t);
+static int copy_from_lzss_window(struct archive_read *, void *, int64_t, int);
+static inline void vm_write_32(struct rar_virtual_machine*, size_t, uint32_t);
+static inline uint32_t vm_read_32(struct rar_virtual_machine*, size_t);
/*
* Bit stream reader.
crc32_val = crc32(0, (const unsigned char *)p + 2, (unsigned)skip - 2);
if ((crc32_val & 0xffff) != archive_le16dec(p)) {
+#ifndef DONT_FAIL_ON_CRC_ERROR
archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT,
"Header CRC error");
return (ARCHIVE_FATAL);
+#endif
}
__archive_read_consume(a, skip);
break;
return (ARCHIVE_FATAL);
}
p = h;
- crc32_val = crc32(crc32_val, (const unsigned char *)p, to_read);
+ crc32_val = crc32(crc32_val, (const unsigned char *)p, (unsigned int)to_read);
__archive_read_consume(a, to_read);
skip -= to_read;
}
if ((crc32_val & 0xffff) != crc32_expected) {
+#ifndef DONT_FAIL_ON_CRC_ERROR
archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT,
"Header CRC error");
return (ARCHIVE_FATAL);
+#endif
}
if (head_type == ENDARC_HEAD)
return (ARCHIVE_EOF);
rar = (struct rar *)(a->format->data);
free_codes(a);
+ clear_filters(&rar->filters);
free(rar->filename);
free(rar->filename_save);
free(rar->dbo);
/* File Header CRC check. */
crc32_val = crc32(crc32_val, h, (unsigned)(header_size - 7));
if ((crc32_val & 0xffff) != archive_le16dec(rar_header.crc)) {
+#ifndef DONT_FAIL_ON_CRC_ERROR
archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT,
"Header CRC error");
return (ARCHIVE_FATAL);
+#endif
}
/* If no CRC error, Go on parsing File Header. */
p = h;
memset(rar->lengthtable, 0, sizeof(rar->lengthtable));
__archive_ppmd7_functions.Ppmd7_Free(&rar->ppmd7_context);
rar->ppmd_valid = rar->ppmd_eod = 0;
+ rar->filters.filterstart = INT64_MAX;
/* Don't set any archive entries for non-file header types */
if (head_type == NEWSUB_HEAD)
struct tm *tm;
time_t t;
long nsec;
-#if defined(HAVE_LOCALTIME_R) || defined(HAVE__LOCALTIME64_S)
+#if defined(HAVE_LOCALTIME_R) || defined(HAVE_LOCALTIME_S)
struct tm tmbuf;
#endif
-#if defined(HAVE__LOCALTIME64_S)
- errno_t terr;
- __time64_t tmptime;
-#endif
if (p + 2 > endp)
return (-1);
rem = (((unsigned)(unsigned char)*p) << 16) | (rem >> 8);
p++;
}
-#if defined(HAVE_LOCALTIME_R)
+#if defined(HAVE_LOCALTIME_S)
+ tm = localtime_s(&tmbuf, &t) ? NULL : &tmbuf;
+#elif defined(HAVE_LOCALTIME_R)
tm = localtime_r(&t, &tmbuf);
-#elif defined(HAVE__LOCALTIME64_S)
- tmptime = t;
- terr = _localtime64_s(&tmbuf, &tmptime);
- if (terr)
- tm = NULL;
- else
- tm = &tmbuf;
#else
tm = localtime(&t);
#endif
*size = 0;
*offset = rar->offset;
if (rar->file_crc != rar->crc_calculated) {
+#ifndef DONT_FAIL_ON_CRC_ERROR
archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT,
"File CRC error");
return (ARCHIVE_FATAL);
+#endif
}
rar->entry_eof = 1;
return (ARCHIVE_EOF);
static int
read_data_compressed(struct archive_read *a, const void **buff, size_t *size,
- int64_t *offset, size_t looper)
+ int64_t *offset, size_t looper)
{
if (looper++ > MAX_COMPRESS_DEPTH)
return (ARCHIVE_FATAL);
struct rar *rar;
- int64_t start, end, actualend;
+ int64_t start, end;
size_t bs;
int ret = (ARCHIVE_OK), sym, code, lzss_offset, length, i;
do {
if (!rar->valid)
return (ARCHIVE_FATAL);
+
+ if (rar->filters.bytes_ready > 0)
+ {
+ /* Flush unp_buffer first */
+ if (rar->unp_offset > 0)
+ {
+ *buff = rar->unp_buffer;
+ *size = rar->unp_offset;
+ rar->unp_offset = 0;
+ *offset = rar->offset_outgoing;
+ rar->offset_outgoing += *size;
+ }
+ else
+ {
+ *buff = rar->filters.bytes;
+ *size = rar->filters.bytes_ready;
+
+ rar->offset += *size;
+ *offset = rar->offset_outgoing;
+ rar->offset_outgoing += *size;
+
+ rar->filters.bytes_ready -= *size;
+ rar->filters.bytes += *size;
+ }
+ goto ending_block;
+ }
+
if (rar->ppmd_eod ||
(rar->dictionary_size && rar->offset >= rar->unp_size))
{
*size = 0;
*offset = rar->offset;
if (rar->file_crc != rar->crc_calculated) {
+#ifndef DONT_FAIL_ON_CRC_ERROR
archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT,
"File CRC error");
return (ARCHIVE_FATAL);
+#endif
}
rar->entry_eof = 1;
return (ARCHIVE_EOF);
bs = rar->unp_buffer_size - rar->unp_offset;
else
bs = (size_t)rar->bytes_uncopied;
- ret = copy_from_lzss_window(a, buff, rar->offset, (int)bs);
+ ret = copy_from_lzss_window_to_unp(a, buff, rar->offset, (int)bs);
if (ret != ARCHIVE_OK)
return (ret);
rar->offset += bs;
continue;
}
+ if (rar->filters.lastend == rar->filters.filterstart)
+ {
+ if (!run_filters(a))
+ return (ARCHIVE_FATAL);
+ continue;
+ }
+
if (!rar->br.next_in &&
(ret = rar_br_preparation(a, &(rar->br))) < ARCHIVE_WARN)
return (ret);
{
start = rar->offset;
end = start + rar->dictionary_size;
- rar->filterstart = INT64_MAX;
+ if (rar->filters.filterstart < end) {
+ end = rar->filters.filterstart;
+ }
- if ((actualend = expand(a, end)) < 0)
- return ((int)actualend);
+ ret = expand(a, &end);
+ if (ret != ARCHIVE_OK)
+ return (ret);
- rar->bytes_uncopied = actualend - start;
- if (rar->bytes_uncopied == 0) {
+ rar->bytes_uncopied = end - start;
+ rar->filters.lastend = end;
+ if (rar->filters.lastend != rar->filters.filterstart && rar->bytes_uncopied == 0) {
/* Broken RAR files cause this case.
* NOTE: If this case were possible on a normal RAR file
* we would find out where it was actually bad and
bs = rar->unp_buffer_size - rar->unp_offset;
else
bs = (size_t)rar->bytes_uncopied;
- ret = copy_from_lzss_window(a, buff, rar->offset, (int)bs);
+ ret = copy_from_lzss_window_to_unp(a, buff, rar->offset, (int)bs);
if (ret != ARCHIVE_OK)
return (ret);
rar->offset += bs;
*size = rar->unp_buffer_size;
*offset = rar->offset_outgoing;
rar->offset_outgoing += *size;
+ending_block:
/* Calculate File CRC. */
rar->crc_calculated = crc32(rar->crc_calculated, *buff, (unsigned)*size);
return ret;
return ret;
}
-static int64_t
-expand(struct archive_read *a, int64_t end)
+static int
+expand(struct archive_read *a, int64_t *end)
{
static const unsigned char lengthbases[] =
{ 0, 1, 2, 3, 4, 5, 6,
struct rar *rar = (struct rar *)(a->format->data);
struct rar_br *br = &(rar->br);
- if (rar->filterstart < end)
- end = rar->filterstart;
+ if (rar->filters.filterstart < *end)
+ *end = rar->filters.filterstart;
while (1)
{
- if (rar->output_last_match &&
- lzss_position(&rar->lzss) + rar->lastlength <= end)
- {
- lzss_emit_match(rar, rar->lastoffset, rar->lastlength);
- rar->output_last_match = 0;
+ if(lzss_position(&rar->lzss) >= *end) {
+ return (ARCHIVE_OK);
}
- if(rar->is_ppmd_block || rar->output_last_match ||
- lzss_position(&rar->lzss) >= end)
- return lzss_position(&rar->lzss);
+ if(rar->is_ppmd_block) {
+ *end = lzss_position(&rar->lzss);
+ return (ARCHIVE_OK);
+ }
if ((symbol = read_next_symbol(a, &rar->maincode)) < 0)
return (ARCHIVE_FATAL);
- rar->output_last_match = 0;
if (symbol < 256)
{
goto truncated_data;
rar->start_new_table = rar_br_bits(br, 1);
rar_br_consume(br, 1);
- return lzss_position(&rar->lzss);
+ *end = lzss_position(&rar->lzss);
+ return (ARCHIVE_OK);
}
else
{
}
else if(symbol==257)
{
- archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
- "Parsing filters is unsupported.");
- return (ARCHIVE_FAILED);
+ if (!read_filter(a, end))
+ return (ARCHIVE_FATAL);
+ continue;
}
else if(symbol==258)
{
goto truncated_data;
offs += rar_br_bits(br, offsetbits[offssymbol] - 4) << 4;
rar_br_consume(br, offsetbits[offssymbol] - 4);
- }
+ }
if(rar->numlowoffsetrepeats > 0)
{
rar->lastoffset = offs;
rar->lastlength = len;
- rar->output_last_match = 1;
+
+ lzss_emit_match(rar, rar->lastoffset, rar->lastlength);
}
truncated_data:
archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT,
}
static int
-copy_from_lzss_window(struct archive_read *a, const void **buffer,
- int64_t startpos, int length)
+copy_from_lzss_window(struct archive_read *a, void *buffer,
+ int64_t startpos, int length)
+{
+ int windowoffs, firstpart;
+ struct rar *rar = (struct rar *)(a->format->data);
+
+ windowoffs = lzss_offset_for_position(&rar->lzss, startpos);
+ firstpart = lzss_size(&rar->lzss) - windowoffs;
+ if (firstpart < 0) {
+ archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT,
+ "Bad RAR file data");
+ return (ARCHIVE_FATAL);
+ }
+ if (firstpart < length) {
+ memcpy(buffer, &rar->lzss.window[windowoffs], firstpart);
+ memcpy(buffer, &rar->lzss.window[0], length - firstpart);
+ } else {
+ memcpy(buffer, &rar->lzss.window[windowoffs], length);
+ }
+ return (ARCHIVE_OK);
+}
+
+static int
+copy_from_lzss_window_to_unp(struct archive_read *a, const void **buffer,
+ int64_t startpos, int length)
{
int windowoffs, firstpart;
struct rar *rar = (struct rar *)(a->format->data);
}
return h;
}
+
+static int
+parse_filter(struct archive_read *a, const uint8_t *bytes, uint16_t length, uint8_t flags)
+{
+ struct rar *rar = (struct rar *)(a->format->data);
+ struct rar_filters *filters = &rar->filters;
+
+ struct memory_bit_reader br = { 0 };
+ struct rar_program_code *prog;
+ struct rar_filter *filter, **nextfilter;
+
+ uint32_t numprogs, num, blocklength, globaldatalen;
+ uint8_t *globaldata;
+ size_t blockstartpos;
+ uint32_t registers[8] = { 0 };
+ uint32_t i;
+
+ br.bytes = bytes;
+ br.length = length;
+
+ numprogs = 0;
+ for (prog = filters->progs; prog; prog = prog->next)
+ numprogs++;
+
+ if ((flags & 0x80))
+ {
+ num = membr_next_rarvm_number(&br);
+ if (num == 0)
+ {
+ delete_filter(filters->stack);
+ filters->stack = NULL;
+ delete_program_code(filters->progs);
+ filters->progs = NULL;
+ }
+ else
+ num--;
+ if (num > numprogs) {
+ return 0;
+ }
+ filters->lastfilternum = num;
+ }
+ else
+ num = filters->lastfilternum;
+
+ prog = filters->progs;
+ for (i = 0; i < num; i++)
+ prog = prog->next;
+ if (prog)
+ prog->usagecount++;
+
+ blockstartpos = membr_next_rarvm_number(&br) + (size_t)lzss_position(&rar->lzss);
+ if ((flags & 0x40))
+ blockstartpos += 258;
+ if ((flags & 0x20))
+ blocklength = membr_next_rarvm_number(&br);
+ else
+ blocklength = prog ? prog->oldfilterlength : 0;
+
+ registers[3] = PROGRAM_SYSTEM_GLOBAL_ADDRESS;
+ registers[4] = blocklength;
+ registers[5] = prog ? prog->usagecount : 0;
+ registers[7] = VM_MEMORY_SIZE;
+
+ if ((flags & 0x10))
+ {
+ uint8_t mask = (uint8_t)membr_bits(&br, 7);
+ for (i = 0; i < 7; i++)
+ if ((mask & (1 << i)))
+ registers[i] = membr_next_rarvm_number(&br);
+ }
+
+ if (!prog)
+ {
+ uint32_t len = membr_next_rarvm_number(&br);
+ uint8_t *bytecode;
+ struct rar_program_code **next;
+
+ if (len == 0 || len > 0x10000)
+ return 0;
+ bytecode = malloc(len);
+ if (!bytecode)
+ return 0;
+ for (i = 0; i < len; i++)
+ bytecode[i] = (uint8_t)membr_bits(&br, 8);
+ prog = compile_program(bytecode, len);
+ if (!prog) {
+ free(bytecode);
+ return 0;
+ }
+ free(bytecode);
+ next = &filters->progs;
+ while (*next)
+ next = &(*next)->next;
+ *next = prog;
+ }
+ prog->oldfilterlength = blocklength;
+
+ globaldata = NULL;
+ globaldatalen = 0;
+ if ((flags & 0x08))
+ {
+ globaldatalen = membr_next_rarvm_number(&br);
+ if (globaldatalen > PROGRAM_USER_GLOBAL_SIZE)
+ return 0;
+ globaldata = malloc(globaldatalen + PROGRAM_SYSTEM_GLOBAL_SIZE);
+ if (!globaldata)
+ return 0;
+ for (i = 0; i < globaldatalen; i++)
+ globaldata[i + PROGRAM_SYSTEM_GLOBAL_SIZE] = (uint8_t)membr_bits(&br, 8);
+ }
+
+ if (br.at_eof)
+ {
+ free(globaldata);
+ return 0;
+ }
+
+ filter = create_filter(prog, globaldata, globaldatalen, registers, blockstartpos, blocklength);
+ free(globaldata);
+ if (!filter)
+ return 0;
+
+ for (i = 0; i < 7; i++)
+ archive_le32enc(&filter->globaldata[i * 4], registers[i]);
+ archive_le32enc(&filter->globaldata[0x1C], blocklength);
+ archive_le32enc(&filter->globaldata[0x20], 0);
+ archive_le32enc(&filter->globaldata[0x2C], prog->usagecount);
+
+ nextfilter = &filters->stack;
+ while (*nextfilter)
+ nextfilter = &(*nextfilter)->next;
+ *nextfilter = filter;
+
+ if (!filters->stack->next)
+ filters->filterstart = blockstartpos;
+
+ return 1;
+}
+
+static struct rar_filter *
+create_filter(struct rar_program_code *prog, const uint8_t *globaldata, uint32_t globaldatalen, uint32_t registers[8], size_t startpos, uint32_t length)
+{
+ struct rar_filter *filter;
+
+ filter = calloc(1, sizeof(*filter));
+ if (!filter)
+ return NULL;
+ filter->prog = prog;
+ filter->globaldatalen = globaldatalen > PROGRAM_SYSTEM_GLOBAL_SIZE ? globaldatalen : PROGRAM_SYSTEM_GLOBAL_SIZE;
+ filter->globaldata = calloc(1, filter->globaldatalen);
+ if (!filter->globaldata)
+ return NULL;
+ if (globaldata)
+ memcpy(filter->globaldata, globaldata, globaldatalen);
+ if (registers)
+ memcpy(filter->initialregisters, registers, sizeof(filter->initialregisters));
+ filter->blockstartpos = startpos;
+ filter->blocklength = length;
+
+ return filter;
+}
+
+static int
+run_filters(struct archive_read *a)
+{
+ struct rar *rar = (struct rar *)(a->format->data);
+ struct rar_filters *filters = &rar->filters;
+ struct rar_filter *filter = filters->stack;
+ struct rar_filter *f;
+ size_t start, end;
+ int64_t tend;
+ uint32_t lastfilteraddress;
+ uint32_t lastfilterlength;
+ int ret;
+
+ if (filters == NULL || filter == NULL)
+ return (0);
+
+ start = filters->filterstart;
+ end = start + filter->blocklength;
+
+ filters->filterstart = INT64_MAX;
+ tend = (int64_t)end;
+ ret = expand(a, &tend);
+ if (ret != ARCHIVE_OK)
+ return 0;
+
+ /* Check if filter stack was modified in expand() */
+ ret = ARCHIVE_FATAL;
+ f = filters->stack;
+ while (f)
+ {
+ if (f == filter)
+ {
+ ret = ARCHIVE_OK;
+ break;
+ }
+ f = f->next;
+ }
+ if (ret != ARCHIVE_OK)
+ return 0;
+
+ if (tend < 0)
+ return 0;
+ end = (size_t)tend;
+ if (end != start + filter->blocklength)
+ return 0;
+
+ if (!filters->vm)
+ {
+ filters->vm = calloc(1, sizeof(*filters->vm));
+ if (!filters->vm)
+ return 0;
+ }
+
+ ret = copy_from_lzss_window(a, filters->vm->memory, start, filter->blocklength);
+ if (ret != ARCHIVE_OK)
+ return 0;
+ if (!execute_filter(a, filter, filters->vm, rar->offset))
+ return 0;
+
+ lastfilteraddress = filter->filteredblockaddress;
+ lastfilterlength = filter->filteredblocklength;
+ filters->stack = filter->next;
+ filter->next = NULL;
+ delete_filter(filter);
+
+ while ((filter = filters->stack) != NULL && (int64_t)filter->blockstartpos == filters->filterstart && filter->blocklength == lastfilterlength)
+ {
+ memmove(&filters->vm->memory[0], &filters->vm->memory[lastfilteraddress], lastfilterlength);
+ if (!execute_filter(a, filter, filters->vm, rar->offset))
+ return 0;
+
+ lastfilteraddress = filter->filteredblockaddress;
+ lastfilterlength = filter->filteredblocklength;
+ filters->stack = filter->next;
+ filter->next = NULL;
+ delete_filter(filter);
+ }
+
+ if (filters->stack)
+ {
+ if (filters->stack->blockstartpos < end)
+ return 0;
+ filters->filterstart = filters->stack->blockstartpos;
+ }
+
+ filters->lastend = end;
+ filters->bytes = &filters->vm->memory[lastfilteraddress];
+ filters->bytes_ready = lastfilterlength;
+
+ return 1;
+}
+
+static struct rar_program_code *
+compile_program(const uint8_t *bytes, size_t length)
+{
+ struct memory_bit_reader br = { 0 };
+ struct rar_program_code *prog;
+ // uint32_t instrcount = 0;
+ uint8_t xor;
+ size_t i;
+
+ xor = 0;
+ for (i = 1; i < length; i++)
+ xor ^= bytes[i];
+ if (!length || xor != bytes[0])
+ return NULL;
+
+ br.bytes = bytes;
+ br.length = length;
+ br.offset = 1;
+
+ prog = calloc(1, sizeof(*prog));
+ if (!prog)
+ return NULL;
+ prog->fingerprint = crc32(0, bytes, (unsigned int)length) | ((uint64_t)length << 32);
+
+ if (membr_bits(&br, 1))
+ {
+ prog->staticdatalen = membr_next_rarvm_number(&br) + 1;
+ prog->staticdata = malloc(prog->staticdatalen);
+ if (!prog->staticdata)
+ {
+ delete_program_code(prog);
+ return NULL;
+ }
+ for (i = 0; i < prog->staticdatalen; i++)
+ prog->staticdata[i] = (uint8_t)membr_bits(&br, 8);
+ }
+
+ return prog;
+}
+
+static void
+delete_filter(struct rar_filter *filter)
+{
+ while (filter)
+ {
+ struct rar_filter *next = filter->next;
+ free(filter->globaldata);
+ free(filter);
+ filter = next;
+ }
+}
+
+static void
+clear_filters(struct rar_filters *filters)
+{
+ delete_filter(filters->stack);
+ delete_program_code(filters->progs);
+ free(filters->vm);
+}
+
+static void
+delete_program_code(struct rar_program_code *prog)
+{
+ while (prog)
+ {
+ struct rar_program_code *next = prog->next;
+ free(prog->staticdata);
+ free(prog->globalbackup);
+ free(prog);
+ prog = next;
+ }
+}
+
+static uint32_t
+membr_next_rarvm_number(struct memory_bit_reader *br)
+{
+ uint32_t val;
+ switch (membr_bits(br, 2))
+ {
+ case 0:
+ return membr_bits(br, 4);
+ case 1:
+ val = membr_bits(br, 8);
+ if (val >= 16)
+ return val;
+ return 0xFFFFFF00 | (val << 4) | membr_bits(br, 4);
+ case 2:
+ return membr_bits(br, 16);
+ default:
+ return membr_bits(br, 32);
+ }
+}
+
+static inline uint32_t
+membr_bits(struct memory_bit_reader *br, int bits)
+{
+ if (bits > br->available && (br->at_eof || !membr_fill(br, bits)))
+ return 0;
+ return (uint32_t)((br->bits >> (br->available -= bits)) & (((uint64_t)1 << bits) - 1));
+}
+
+static int
+membr_fill(struct memory_bit_reader *br, int bits)
+{
+ while (br->available < bits && br->offset < br->length)
+ {
+ br->bits = (br->bits << 8) | br->bytes[br->offset++];
+ br->available += 8;
+ }
+ if (bits > br->available)
+ {
+ br->at_eof = 1;
+ return 0;
+ }
+ return 1;
+}
+
+static int
+read_filter(struct archive_read *a, int64_t *end)
+{
+ struct rar *rar = (struct rar *)(a->format->data);
+ uint8_t flags, val, *code;
+ uint16_t length, i;
+
+ if (!rar_decode_byte(a, &flags))
+ return 0;
+ length = (flags & 0x07) + 1;
+ if (length == 7)
+ {
+ if (!rar_decode_byte(a, &val))
+ return 0;
+ length = val + 7;
+ }
+ else if (length == 8)
+ {
+ if (!rar_decode_byte(a, &val))
+ return 0;
+ length = val << 8;
+ if (!rar_decode_byte(a, &val))
+ return 0;
+ length |= val;
+ }
+
+ code = malloc(length);
+ if (!code)
+ return 0;
+ for (i = 0; i < length; i++)
+ {
+ if (!rar_decode_byte(a, &code[i]))
+ {
+ free(code);
+ return 0;
+ }
+ }
+ if (!parse_filter(a, code, length, flags))
+ {
+ free(code);
+ return 0;
+ }
+ free(code);
+
+ if (rar->filters.filterstart < *end)
+ *end = rar->filters.filterstart;
+
+ return 1;
+}
+
+static int
+execute_filter_delta(struct rar_filter *filter, struct rar_virtual_machine *vm)
+{
+ uint32_t length = filter->initialregisters[4];
+ uint32_t numchannels = filter->initialregisters[0];
+ uint8_t *src, *dst;
+ uint32_t i, idx;
+
+ if (length > PROGRAM_WORK_SIZE / 2)
+ return 0;
+
+ src = &vm->memory[0];
+ dst = &vm->memory[length];
+ for (i = 0; i < numchannels; i++)
+ {
+ uint8_t lastbyte = 0;
+ for (idx = i; idx < length; idx += numchannels)
+ lastbyte = dst[idx] = lastbyte - *src++;
+ }
+
+ filter->filteredblockaddress = length;
+ filter->filteredblocklength = length;
+
+ return 1;
+}
+
+static int
+execute_filter_e8(struct rar_filter *filter, struct rar_virtual_machine *vm, size_t pos, int e9also)
+{
+ uint32_t length = filter->initialregisters[4];
+ uint32_t filesize = 0x1000000;
+ uint32_t i;
+
+ if (length > PROGRAM_WORK_SIZE || length < 4)
+ return 0;
+
+ for (i = 0; i <= length - 5; i++)
+ {
+ if (vm->memory[i] == 0xE8 || (e9also && vm->memory[i] == 0xE9))
+ {
+ uint32_t currpos = (uint32_t)pos + i + 1;
+ int32_t address = (int32_t)vm_read_32(vm, i + 1);
+ if (address < 0 && currpos >= (uint32_t)-address)
+ vm_write_32(vm, i + 1, address + filesize);
+ else if (address >= 0 && (uint32_t)address < filesize)
+ vm_write_32(vm, i + 1, address - currpos);
+ i += 4;
+ }
+ }
+
+ filter->filteredblockaddress = 0;
+ filter->filteredblocklength = length;
+
+ return 1;
+}
+
+static int
+execute_filter_rgb(struct rar_filter *filter, struct rar_virtual_machine *vm)
+{
+ uint32_t stride = filter->initialregisters[0];
+ uint32_t byteoffset = filter->initialregisters[1];
+ uint32_t blocklength = filter->initialregisters[4];
+ uint8_t *src, *dst;
+ uint32_t i, j;
+
+ if (blocklength > PROGRAM_WORK_SIZE / 2 || stride > blocklength)
+ return 0;
+
+ src = &vm->memory[0];
+ dst = &vm->memory[blocklength];
+ for (i = 0; i < 3; i++) {
+ uint8_t byte = 0;
+ uint8_t *prev = dst + i - stride;
+ for (j = i; j < blocklength; j += 3)
+ {
+ if (prev >= dst)
+ {
+ uint32_t delta1 = abs(prev[3] - prev[0]);
+ uint32_t delta2 = abs(byte - prev[0]);
+ uint32_t delta3 = abs(prev[3] - prev[0] + byte - prev[0]);
+ if (delta1 > delta2 || delta1 > delta3)
+ byte = delta2 <= delta3 ? prev[3] : prev[0];
+ }
+ byte -= *src++;
+ dst[j] = byte;
+ prev += 3;
+ }
+ }
+ for (i = byteoffset; i < blocklength - 2; i += 3)
+ {
+ dst[i] += dst[i + 1];
+ dst[i + 2] += dst[i + 1];
+ }
+
+ filter->filteredblockaddress = blocklength;
+ filter->filteredblocklength = blocklength;
+
+ return 1;
+}
+
+static int
+execute_filter_audio(struct rar_filter *filter, struct rar_virtual_machine *vm)
+{
+ uint32_t length = filter->initialregisters[4];
+ uint32_t numchannels = filter->initialregisters[0];
+ uint8_t *src, *dst;
+ uint32_t i, j;
+
+ if (length > PROGRAM_WORK_SIZE / 2)
+ return 0;
+
+ src = &vm->memory[0];
+ dst = &vm->memory[length];
+ for (i = 0; i < numchannels; i++)
+ {
+ struct audio_state state;
+ memset(&state, 0, sizeof(state));
+ for (j = i; j < length; j += numchannels)
+ {
+ int8_t delta = (int8_t)*src++;
+ uint8_t predbyte, byte;
+ int prederror;
+ state.delta[2] = state.delta[1];
+ state.delta[1] = state.lastdelta - state.delta[0];
+ state.delta[0] = state.lastdelta;
+ predbyte = ((8 * state.lastbyte + state.weight[0] * state.delta[0] + state.weight[1] * state.delta[1] + state.weight[2] * state.delta[2]) >> 3) & 0xFF;
+ byte = (predbyte - delta) & 0xFF;
+ prederror = delta << 3;
+ state.error[0] += abs(prederror);
+ state.error[1] += abs(prederror - state.delta[0]); state.error[2] += abs(prederror + state.delta[0]);
+ state.error[3] += abs(prederror - state.delta[1]); state.error[4] += abs(prederror + state.delta[1]);
+ state.error[5] += abs(prederror - state.delta[2]); state.error[6] += abs(prederror + state.delta[2]);
+ state.lastdelta = (int8_t)(byte - state.lastbyte);
+ dst[j] = state.lastbyte = byte;
+ if (!(state.count++ & 0x1F))
+ {
+ uint8_t k, idx = 0;
+ for (k = 1; k < 7; k++)
+ {
+ if (state.error[k] < state.error[idx])
+ idx = k;
+ }
+ memset(state.error, 0, sizeof(state.error));
+ switch (idx)
+ {
+ case 1: if (state.weight[0] >= -16) state.weight[0]--; break;
+ case 2: if (state.weight[0] < 16) state.weight[0]++; break;
+ case 3: if (state.weight[1] >= -16) state.weight[1]--; break;
+ case 4: if (state.weight[1] < 16) state.weight[1]++; break;
+ case 5: if (state.weight[2] >= -16) state.weight[2]--; break;
+ case 6: if (state.weight[2] < 16) state.weight[2]++; break;
+ }
+ }
+ }
+ }
+
+ filter->filteredblockaddress = length;
+ filter->filteredblocklength = length;
+
+ return 1;
+}
+
+
+static int
+execute_filter(struct archive_read *a, struct rar_filter *filter, struct rar_virtual_machine *vm, size_t pos)
+{
+ if (filter->prog->fingerprint == 0x1D0E06077D)
+ return execute_filter_delta(filter, vm);
+ if (filter->prog->fingerprint == 0x35AD576887)
+ return execute_filter_e8(filter, vm, pos, 0);
+ if (filter->prog->fingerprint == 0x393CD7E57E)
+ return execute_filter_e8(filter, vm, pos, 1);
+ if (filter->prog->fingerprint == 0x951C2C5DC8)
+ return execute_filter_rgb(filter, vm);
+ if (filter->prog->fingerprint == 0xD8BC85E701)
+ return execute_filter_audio(filter, vm);
+
+ archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT, "No support for RAR VM program filter");
+ return 0;
+}
+
+static int
+rar_decode_byte(struct archive_read *a, uint8_t *byte)
+{
+ struct rar *rar = (struct rar *)(a->format->data);
+ struct rar_br *br = &(rar->br);
+ if (!rar_br_read_ahead(a, br, 8))
+ return 0;
+ *byte = (uint8_t)rar_br_bits(br, 8);
+ rar_br_consume(br, 8);
+ return 1;
+}
+
+static inline void
+vm_write_32(struct rar_virtual_machine* vm, size_t offset, uint32_t u32)
+{
+ archive_le32enc(vm->memory + offset, u32);
+}
+
+static inline uint32_t
+vm_read_32(struct rar_virtual_machine* vm, size_t offset)
+{
+ return archive_le32dec(vm->memory + offset);
+}
/* 0xEB = ARM's BL (branch + link) instruction. */
offset = read_filter_data(rar,
(rar->cstate.solid_offset + flt->block_start + i) &
- rar->cstate.window_mask) & 0x00ffffff;
+ (uint32_t)rar->cstate.window_mask) & 0x00ffffff;
offset -= (uint32_t) ((i + flt->block_start) / 4);
offset = (offset & 0x00ffffff) | 0xeb000000;
return ret;
}
-static int read_bits_32(struct rar5* rar, const uint8_t* p, uint32_t* value) {
+static int read_bits_32(struct archive_read* a, struct rar5* rar,
+ const uint8_t* p, uint32_t* value)
+{
+ if(rar->bits.in_addr >= rar->cstate.cur_block_size) {
+ archive_set_error(&a->archive,
+ ARCHIVE_ERRNO_PROGRAMMER,
+ "Premature end of stream during extraction of data (#1)");
+ return ARCHIVE_FATAL;
+ }
+
uint32_t bits = ((uint32_t) p[rar->bits.in_addr]) << 24;
bits |= p[rar->bits.in_addr + 1] << 16;
bits |= p[rar->bits.in_addr + 2] << 8;
return ARCHIVE_OK;
}
-static int read_bits_16(struct rar5* rar, const uint8_t* p, uint16_t* value) {
+static int read_bits_16(struct archive_read* a, struct rar5* rar,
+ const uint8_t* p, uint16_t* value)
+{
+ if(rar->bits.in_addr >= rar->cstate.cur_block_size) {
+ archive_set_error(&a->archive,
+ ARCHIVE_ERRNO_PROGRAMMER,
+ "Premature end of stream during extraction of data (#2)");
+ return ARCHIVE_FATAL;
+ }
+
int bits = (int) ((uint32_t) p[rar->bits.in_addr]) << 16;
bits |= (int) p[rar->bits.in_addr + 1] << 8;
bits |= (int) p[rar->bits.in_addr + 2];
}
/* n = up to 16 */
-static int read_consume_bits(struct rar5* rar, const uint8_t* p, int n,
- int* value)
+static int read_consume_bits(struct archive_read* a, struct rar5* rar,
+ const uint8_t* p, int n, int* value)
{
uint16_t v;
int ret, num;
return ARCHIVE_FATAL;
}
- ret = read_bits_16(rar, p, &v);
+ ret = read_bits_16(a, rar, p, &v);
if(ret != ARCHIVE_OK)
return ret;
return -1;
}
+static int bid_sfx(struct archive_read *a)
+{
+ const char *p;
+
+ if ((p = __archive_read_ahead(a, 7, NULL)) == NULL)
+ return -1;
+
+ if ((p[0] == 'M' && p[1] == 'Z') || memcmp(p, "\x7F\x45LF", 4) == 0) {
+ /* This is a PE file */
+ char signature[sizeof(rar5_signature_xor)];
+ ssize_t offset = 0x10000;
+ ssize_t window = 4096;
+ ssize_t bytes_avail;
+
+ rar5_signature(signature);
+
+ while (offset + window <= (1024 * 512)) {
+ const char *buff = __archive_read_ahead(a, offset + window, &bytes_avail);
+ if (buff == NULL) {
+ /* Remaining bytes are less than window. */
+ window >>= 1;
+ if (window < 0x40)
+ return 0;
+ continue;
+ }
+ p = buff + offset;
+ while (p + 8 < buff + bytes_avail) {
+ if (memcmp(p, signature, sizeof(signature)) == 0)
+ return 30;
+ p += 0x10;
+ }
+ offset = p - buff;
+ }
+ }
+
+ return 0;
+}
+
static int rar5_bid(struct archive_read* a, int best_bid) {
int my_bid;
if(my_bid > -1) {
return my_bid;
}
+ my_bid = bid_sfx(a);
+ if (my_bid > -1) {
+ return my_bid;
+ }
return -1;
}
}
}
- /* If we're currently switching volumes, ignore the new definition of
- * window_size. */
- if(rar->cstate.switch_multivolume == 0) {
- /* Values up to 64M should fit into ssize_t on every
- * architecture. */
- rar->cstate.window_size = (ssize_t) window_size;
+ if(rar->cstate.window_size < (ssize_t) window_size &&
+ rar->cstate.window_buf)
+ {
+ /* If window_buf has been allocated before, reallocate it, so
+ * that its size will match new window_size. */
+
+ uint8_t* new_window_buf =
+ realloc(rar->cstate.window_buf, window_size);
+
+ if(!new_window_buf) {
+ archive_set_error(&a->archive, ARCHIVE_ERRNO_PROGRAMMER,
+ "Not enough memory when trying to realloc the window "
+ "buffer.");
+ return ARCHIVE_FATAL;
+ }
+
+ rar->cstate.window_buf = new_window_buf;
}
+ /* Values up to 64M should fit into ssize_t on every
+ * architecture. */
+ rar->cstate.window_size = (ssize_t) window_size;
+
if(rar->file.solid > 0 && rar->file.solid_window_size == 0) {
/* Solid files have to have the same window_size across
whole archive. Remember the window_size parameter
return ret;
}
+static int try_skip_sfx(struct archive_read *a)
+{
+ const char *p;
+
+ if ((p = __archive_read_ahead(a, 7, NULL)) == NULL)
+ return ARCHIVE_EOF;
+
+ if ((p[0] == 'M' && p[1] == 'Z') || memcmp(p, "\x7F\x45LF", 4) == 0)
+ {
+ char signature[sizeof(rar5_signature_xor)];
+ const void *h;
+ const char *q;
+ size_t skip, total = 0;
+ ssize_t bytes, window = 4096;
+
+ rar5_signature(signature);
+
+ while (total + window <= (1024 * 512)) {
+ h = __archive_read_ahead(a, window, &bytes);
+ if (h == NULL) {
+ /* Remaining bytes are less than window. */
+ window >>= 1;
+ if (window < 0x40)
+ goto fatal;
+ continue;
+ }
+ if (bytes < 0x40)
+ goto fatal;
+ p = h;
+ q = p + bytes;
+
+ /*
+ * Scan ahead until we find something that looks
+ * like the RAR header.
+ */
+ while (p + 8 < q) {
+ if (memcmp(p, signature, sizeof(signature)) == 0) {
+ skip = p - (const char *)h;
+ __archive_read_consume(a, skip);
+ return (ARCHIVE_OK);
+ }
+ p += 0x10;
+ }
+ skip = p - (const char *)h;
+ __archive_read_consume(a, skip);
+ total += skip;
+ }
+ }
+
+ return ARCHIVE_OK;
+fatal:
+ archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT,
+ "Couldn't find out RAR header");
+ return (ARCHIVE_FATAL);
+}
+
static int rar5_read_header(struct archive_read *a,
struct archive_entry *entry)
{
if(rar->header_initialized == 0) {
init_header(a);
+ if ((ret = try_skip_sfx(a)) < ARCHIVE_WARN)
+ return ret;
rar->header_initialized = 1;
}
* `stored_crc32` info filled in. */
if(rar->file.stored_crc32 > 0) {
rar->file.calculated_crc32 =
- crc32(rar->file.calculated_crc32, p, to_read);
+ crc32(rar->file.calculated_crc32, p, (unsigned int)to_read);
}
/* Check if the file uses an optional BLAKE2sp checksum
static int decode_number(struct archive_read* a, struct decode_table* table,
const uint8_t* p, uint16_t* num)
{
- int i, bits, dist;
+ int i, bits, dist, ret;
uint16_t bitfield;
uint32_t pos;
struct rar5* rar = get_context(a);
- if(ARCHIVE_OK != read_bits_16(rar, p, &bitfield)) {
- return ARCHIVE_EOF;
+ if(ARCHIVE_OK != (ret = read_bits_16(a, rar, p, &bitfield))) {
+ return ret;
}
bitfield &= 0xfffe;
for(i = 0; i < HUFF_TABLE_SIZE;) {
uint16_t num;
- if((rar->bits.in_addr + 6) >= rar->cstate.cur_block_size) {
- /* Truncated data, can't continue. */
- archive_set_error(&a->archive,
- ARCHIVE_ERRNO_FILE_FORMAT,
- "Truncated data in huffman tables (#2)");
- return ARCHIVE_FATAL;
- }
-
ret = decode_number(a, &rar->cstate.bd, p, &num);
if(ret != ARCHIVE_OK) {
archive_set_error(&a->archive,
/* 16..17: repeat previous code */
uint16_t n;
- if(ARCHIVE_OK != read_bits_16(rar, p, &n))
- return ARCHIVE_EOF;
+ if(ARCHIVE_OK != (ret = read_bits_16(a, rar, p, &n)))
+ return ret;
if(num == 16) {
n >>= 13;
/* other codes: fill with zeroes `n` times */
uint16_t n;
- if(ARCHIVE_OK != read_bits_16(rar, p, &n))
- return ARCHIVE_EOF;
+ if(ARCHIVE_OK != (ret = read_bits_16(a, rar, p, &n)))
+ return ret;
if(num == 18) {
n >>= 13;
^ (uint8_t) (*block_size >> 16);
if(calculated_cksum != hdr->block_cksum) {
+#ifndef DONT_FAIL_ON_CRC_ERROR
archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT,
"Block checksum error: got 0x%x, expected 0x%x",
hdr->block_cksum, calculated_cksum);
return ARCHIVE_FATAL;
+#endif
}
return ARCHIVE_OK;
}
/* Convenience function used during filter processing. */
-static int parse_filter_data(struct rar5* rar, const uint8_t* p,
- uint32_t* filter_data)
+static int parse_filter_data(struct archive_read* a, struct rar5* rar,
+ const uint8_t* p, uint32_t* filter_data)
{
- int i, bytes;
+ int i, bytes, ret;
uint32_t data = 0;
- if(ARCHIVE_OK != read_consume_bits(rar, p, 2, &bytes))
- return ARCHIVE_EOF;
+ if(ARCHIVE_OK != (ret = read_consume_bits(a, rar, p, 2, &bytes)))
+ return ret;
bytes++;
for(i = 0; i < bytes; i++) {
uint16_t byte;
- if(ARCHIVE_OK != read_bits_16(rar, p, &byte)) {
- return ARCHIVE_EOF;
+ if(ARCHIVE_OK != (ret = read_bits_16(a, rar, p, &byte))) {
+ return ret;
}
/* Cast to uint32_t will ensure the shift operation will not
uint16_t filter_type;
struct filter_info* filt = NULL;
struct rar5* rar = get_context(ar);
+ int ret;
/* Read the parameters from the input stream. */
- if(ARCHIVE_OK != parse_filter_data(rar, p, &block_start))
- return ARCHIVE_EOF;
+ if(ARCHIVE_OK != (ret = parse_filter_data(ar, rar, p, &block_start)))
+ return ret;
- if(ARCHIVE_OK != parse_filter_data(rar, p, &block_length))
- return ARCHIVE_EOF;
+ if(ARCHIVE_OK != (ret = parse_filter_data(ar, rar, p, &block_length)))
+ return ret;
- if(ARCHIVE_OK != read_bits_16(rar, p, &filter_type))
- return ARCHIVE_EOF;
+ if(ARCHIVE_OK != (ret = read_bits_16(ar, rar, p, &filter_type)))
+ return ret;
filter_type >>= 13;
skip_bits(rar, 3);
if(filter_type == FILTER_DELTA) {
int channels;
- if(ARCHIVE_OK != read_consume_bits(rar, p, 5, &channels))
- return ARCHIVE_EOF;
+ if(ARCHIVE_OK != (ret = read_consume_bits(ar, rar, p, 5, &channels)))
+ return ret;
filt->channels = channels + 1;
}
return ARCHIVE_OK;
}
-static int decode_code_length(struct rar5* rar, const uint8_t* p,
- uint16_t code)
+static int decode_code_length(struct archive_read* a, struct rar5* rar,
+ const uint8_t* p, uint16_t code)
{
int lbits, length = 2;
+
if(code < 8) {
lbits = 0;
length += code;
if(lbits > 0) {
int add;
- if(ARCHIVE_OK != read_consume_bits(rar, p, lbits, &add))
+ if(ARCHIVE_OK != read_consume_bits(a, rar, p, lbits, &add))
return -1;
length += add;
continue;
} else if(num >= 262) {
uint16_t dist_slot;
- int len = decode_code_length(rar, p, num - 262),
+ int len = decode_code_length(a, rar, p, num - 262),
dbits,
dist = 1;
uint16_t low_dist;
if(dbits > 4) {
- if(ARCHIVE_OK != read_bits_32(
- rar, p, &add)) {
+ if(ARCHIVE_OK != (ret = read_bits_32(
+ a, rar, p, &add))) {
/* Return EOF if we
* can't read more
* data. */
- return ARCHIVE_EOF;
+ return ret;
}
skip_bits(rar, dbits - 4);
/* dbits is one of [0,1,2,3] */
int add;
- if(ARCHIVE_OK != read_consume_bits(rar,
- p, dbits, &add)) {
+ if(ARCHIVE_OK != (ret = read_consume_bits(a, rar,
+ p, dbits, &add))) {
/* Return EOF if we can't read
* more data. */
- return ARCHIVE_EOF;
+ return ret;
}
dist += add;
return ARCHIVE_FATAL;
}
- len = decode_code_length(rar, p, len_slot);
+ len = decode_code_length(a, rar, p, len_slot);
+ if (len == -1) {
+ return ARCHIVE_FATAL;
+ }
+
rar->cstate.last_len = len;
if(ARCHIVE_OK != copy_string(a, len, dist))
rar->cstate.initialized = 1;
}
+ /* Don't allow extraction if window_size is invalid. */
+ if(rar->cstate.window_size == 0) {
+ archive_set_error(&a->archive,
+ ARCHIVE_ERRNO_FILE_FORMAT,
+ "Invalid window size declaration in this file");
+
+ /* This should never happen in valid files. */
+ return ARCHIVE_FATAL;
+ }
+
if(rar->cstate.all_filters_applied == 1) {
/* We use while(1) here, but standard case allows for just 1
* iteration. The loop will iterate if process_block() didn't
case GOOD:
/* fallthrough */
case BEST:
+ /* No data is returned here. But because a sparse-file aware
+ * caller (like archive_read_data_into_fd) may treat zero-size
+ * as a sparse file block, we need to update the offset
+ * accordingly. At this point the decoder doesn't have any
+ * pending uncompressed data blocks, so the current position in
+ * the output file should be last_write_ptr. */
+ if (offset) *offset = rar->cstate.last_write_ptr;
return uncompress_file(a);
default:
archive_set_error(&a->archive,
/*
* Check format of mode/uid/gid/mtime/size/rdevmajor/rdevminor fields.
*/
- if (bid > 0 && (
- validate_number_field(header->mode, sizeof(header->mode)) == 0
+ if (validate_number_field(header->mode, sizeof(header->mode)) == 0
|| validate_number_field(header->uid, sizeof(header->uid)) == 0
|| validate_number_field(header->gid, sizeof(header->gid)) == 0
|| validate_number_field(header->mtime, sizeof(header->mtime)) == 0
|| validate_number_field(header->size, sizeof(header->size)) == 0
|| validate_number_field(header->rdevmajor, sizeof(header->rdevmajor)) == 0
- || validate_number_field(header->rdevminor, sizeof(header->rdevminor)) == 0)) {
+ || validate_number_field(header->rdevminor, sizeof(header->rdevminor)) == 0) {
bid = 0;
}
l = wcslen(wp);
if (l > 0 && wp[l - 1] == L'/') {
archive_entry_set_filetype(entry, AE_IFDIR);
+ tar->entry_bytes_remaining = 0;
+ tar->entry_padding = 0;
}
} else if ((p = archive_entry_pathname(entry)) != NULL) {
l = strlen(p);
if (l > 0 && p[l - 1] == '/') {
archive_entry_set_filetype(entry, AE_IFDIR);
+ tar->entry_bytes_remaining = 0;
+ tar->entry_padding = 0;
}
}
}
struct archive_entry *entry, const void *h, size_t *unconsumed)
{
int64_t size;
+ size_t msize;
const void *data;
const char *p, *name;
const wchar_t *wp, *wname;
/* Read the body as a Mac OS metadata blob. */
size = archive_entry_size(entry);
+ msize = (size_t)size;
+ if (size < 0 || (uintmax_t)msize != (uintmax_t)size) {
+ *unconsumed = 0;
+ return (ARCHIVE_FATAL);
+ }
/*
* TODO: Look beyond the body here to peek at the next header.
* Q: Is the above idea really possible? Even
* when there are GNU or pax extension entries?
*/
- data = __archive_read_ahead(a, (size_t)size, NULL);
+ data = __archive_read_ahead(a, msize, NULL);
if (data == NULL) {
*unconsumed = 0;
return (ARCHIVE_FATAL);
}
- archive_entry_copy_mac_metadata(entry, data, (size_t)size);
- *unconsumed = (size_t)((size + 511) & ~ 511);
+ archive_entry_copy_mac_metadata(entry, data, msize);
+ *unconsumed = (msize + 511) & ~ 511;
tar_flush_unconsumed(a, unconsumed);
return (tar_read_header(a, tar, entry, unconsumed));
}
/* "size" is the size of the data in the entry. */
tar->entry_bytes_remaining
= tar_atol10(value, strlen(value));
+ if (tar->entry_bytes_remaining < 0) {
+ tar->entry_bytes_remaining = 0;
+ archive_set_error(&a->archive,
+ ARCHIVE_ERRNO_MISC,
+ "Tar size attribute is negative");
+ return (ARCHIVE_FATAL);
+ }
+ if (tar->entry_bytes_remaining == INT64_MAX) {
+ /* Note: tar_atol returns INT64_MAX on overflow */
+ tar->entry_bytes_remaining = 0;
+ archive_set_error(&a->archive,
+ ARCHIVE_ERRNO_MISC,
+ "Tar size attribute overflow");
+ return (ARCHIVE_FATAL);
+ }
/*
* The "size" pax header keyword always overrides the
* "size" field in the tar header.
static time_t
time_from_tm(struct tm *t)
{
-#if HAVE_TIMEGM
+#if HAVE__MKGMTIME
+ return _mkgmtime(t);
+#elif HAVE_TIMEGM
/* Use platform timegm() if available. */
return (timegm(t));
-#elif HAVE__MKGMTIME64
- return (_mkgmtime64(t));
#else
/* Else use direct calculation using POSIX assumptions. */
/* First, fix up tm_yday based on the year/month/day. */
__archive_read_consume(a, xar->toc_chksum_size);
xar->offset += xar->toc_chksum_size;
if (r != ARCHIVE_OK)
+#ifndef DONT_FAIL_ON_CRC_ERROR
return (ARCHIVE_FATAL);
+#endif
}
/*
xattr->a_sum.val, xattr->a_sum.len,
xattr->e_sum.val, xattr->e_sum.len);
if (r != ARCHIVE_OK) {
+#ifndef DONT_FAIL_ON_CRC_ERROR
archive_set_error(&(a->archive), ARCHIVE_ERRNO_MISC,
"Xattr checksum error");
r = ARCHIVE_WARN;
break;
+#endif
}
if (xattr->name.s == NULL) {
archive_set_error(&(a->archive), ARCHIVE_ERRNO_MISC,
x |= p[1] - '0';
else
return (-1);
-
+
*b++ = x;
bsize--;
p += 2;
static time_t
time_from_tm(struct tm *t)
{
-#if HAVE_TIMEGM
+#if HAVE__MKGMTIME
+ return _mkgmtime(t);
+#elif HAVE_TIMEGM
/* Use platform timegm() if available. */
return (timegm(t));
-#elif HAVE__MKGMTIME64
- return (_mkgmtime64(t));
#else
/* Else use direct calculation using POSIX assumptions. */
/* First, fix up tm_yday based on the year/month/day. */
#ifdef HAVE_LZMA_H
#include <lzma.h>
#endif
+#ifdef HAVE_ZSTD_H
+#include <zstd.h>
+#endif
#include "archive.h"
#include "archive_digest_private.h"
char bzstream_valid;
#endif
+#if HAVE_ZSTD_H && HAVE_LIBZSTD
+ ZSTD_DStream *zstdstream;
+ char zstdstream_valid;
+#endif
+
IByteIn zipx_ppmd_stream;
ssize_t zipx_ppmd_read_compressed;
CPpmd8 ppmd8;
{17, "reserved"}, /* Reserved by PKWARE */
{18, "ibm-terse-new"}, /* File is compressed using IBM TERSE (new) */
{19, "ibm-lz777"},/* IBM LZ77 z Architecture (PFS) */
+ {93, "zstd"}, /* Zstandard (zstd) Compression */
{95, "xz"}, /* XZ compressed data */
{96, "jpeg"}, /* JPEG compressed data */
{97, "wav-pack"}, /* WavPack compressed data */
(intmax_t)zip_entry->compressed_size);
ret = ARCHIVE_WARN;
}
- if (zip_entry->uncompressed_size == 0) {
+ if (zip_entry->uncompressed_size == 0 ||
+ zip_entry->uncompressed_size == 0xffffffff) {
zip_entry->uncompressed_size
= zip_entry_central_dir.uncompressed_size;
} else if (zip_entry->uncompressed_size
{
// symlink target string appeared to be compressed
int status = ARCHIVE_FATAL;
- const void *uncompressed_buffer;
+ const void *uncompressed_buffer = NULL;
switch (zip->entry->compression)
{
*/
/* Read magic1,magic2,lzma_params from the ZIPX stream. */
- if((p = __archive_read_ahead(a, 9, NULL)) == NULL) {
+ if(zip->entry_bytes_remaining < 9 || (p = __archive_read_ahead(a, 9, NULL)) == NULL) {
archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT,
"Truncated lzma data");
return (ARCHIVE_FATAL);
/* Setup buffer boundaries. */
zip->bzstream.next_in = (char*)(uintptr_t) compressed_buff;
- zip->bzstream.avail_in = in_bytes;
+ zip->bzstream.avail_in = (uint32_t)in_bytes;
zip->bzstream.total_in_hi32 = 0;
zip->bzstream.total_in_lo32 = 0;
zip->bzstream.next_out = (char*) zip->uncompressed_buffer;
- zip->bzstream.avail_out = zip->uncompressed_buffer_size;
+ zip->bzstream.avail_out = (uint32_t)zip->uncompressed_buffer_size;
zip->bzstream.total_out_hi32 = 0;
zip->bzstream.total_out_lo32 = 0;
to_consume = zip->bzstream.total_in_lo32;
__archive_read_consume(a, to_consume);
- total_out = ((uint64_t) zip->bzstream.total_out_hi32 << 32) +
+ total_out = ((uint64_t) zip->bzstream.total_out_hi32 << 32) |
zip->bzstream.total_out_lo32;
zip->entry_bytes_remaining -= to_consume;
#endif
+#if HAVE_ZSTD_H && HAVE_LIBZSTD
+static int
+zipx_zstd_init(struct archive_read *a, struct zip *zip)
+{
+ size_t r;
+
+ /* Deallocate already existing Zstd decompression context if it
+ * exists. */
+ if(zip->zstdstream_valid) {
+ ZSTD_freeDStream(zip->zstdstream);
+ zip->zstdstream_valid = 0;
+ }
+
+ /* Allocate a new Zstd decompression context. */
+ zip->zstdstream = ZSTD_createDStream();
+
+ r = ZSTD_initDStream(zip->zstdstream);
+ if (ZSTD_isError(r)) {
+ archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
+ "Error initializing zstd decompressor: %s",
+ ZSTD_getErrorName(r));
+
+ return ARCHIVE_FAILED;
+ }
+
+ /* Mark the zstdstream field to be released in cleanup phase. */
+ zip->zstdstream_valid = 1;
+
+ /* (Re)allocate the buffer that will contain decompressed bytes. */
+ free(zip->uncompressed_buffer);
+
+ zip->uncompressed_buffer_size = ZSTD_DStreamOutSize();
+ zip->uncompressed_buffer =
+ (uint8_t*) malloc(zip->uncompressed_buffer_size);
+ if (zip->uncompressed_buffer == NULL) {
+ archive_set_error(&a->archive, ENOMEM,
+ "No memory for Zstd decompression");
+
+ return ARCHIVE_FATAL;
+ }
+
+ /* Initialization done. */
+ zip->decompress_init = 1;
+ return ARCHIVE_OK;
+}
+
+static int
+zip_read_data_zipx_zstd(struct archive_read *a, const void **buff,
+ size_t *size, int64_t *offset)
+{
+ struct zip *zip = (struct zip *)(a->format->data);
+ ssize_t bytes_avail = 0, in_bytes, to_consume;
+ const void *compressed_buff;
+ int r;
+ size_t ret;
+ uint64_t total_out;
+ ZSTD_outBuffer out;
+ ZSTD_inBuffer in;
+
+ (void) offset; /* UNUSED */
+
+ /* Initialize decompression context if we're here for the first time. */
+ if(!zip->decompress_init) {
+ r = zipx_zstd_init(a, zip);
+ if(r != ARCHIVE_OK)
+ return r;
+ }
+
+ /* Fetch more compressed bytes */
+ compressed_buff = __archive_read_ahead(a, 1, &bytes_avail);
+ if(bytes_avail < 0) {
+ archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT,
+ "Truncated zstd file body");
+ return (ARCHIVE_FATAL);
+ }
+
+ in_bytes = zipmin(zip->entry_bytes_remaining, bytes_avail);
+ if(in_bytes < 1) {
+ /* zstd doesn't complain when caller feeds avail_in == 0.
+ * It will actually return success in this case, which is
+ * undesirable. This is why we need to make this check
+ * manually. */
+ archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT,
+ "Truncated zstd file body");
+ return (ARCHIVE_FATAL);
+ }
+
+ /* Setup buffer boundaries */
+ in.src = compressed_buff;
+ in.size = in_bytes;
+ in.pos = 0;
+ out = (ZSTD_outBuffer) { zip->uncompressed_buffer, zip->uncompressed_buffer_size, 0 };
+
+ /* Perform the decompression. */
+ ret = ZSTD_decompressStream(zip->zstdstream, &out, &in);
+ if (ZSTD_isError(ret)) {
+ archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
+ "Error during zstd decompression: %s",
+ ZSTD_getErrorName(ret));
+ return (ARCHIVE_FATAL);
+ }
+
+ /* Check end of the stream. */
+ if (ret == 0) {
+ if ((in.pos == in.size) && (out.pos < out.size)) {
+ zip->end_of_entry = 1;
+ ZSTD_freeDStream(zip->zstdstream);
+ zip->zstdstream_valid = 0;
+ }
+ }
+
+ /* Update the pointers so decompressor can continue decoding. */
+ to_consume = in.pos;
+ __archive_read_consume(a, to_consume);
+
+ total_out = out.pos;
+
+ zip->entry_bytes_remaining -= to_consume;
+ zip->entry_compressed_bytes_read += to_consume;
+ zip->entry_uncompressed_bytes_read += total_out;
+
+ /* Give libarchive its due. */
+ *size = total_out;
+ *buff = zip->uncompressed_buffer;
+
+ /* Seek for optional marker, like in other entries. */
+ r = consume_optional_marker(a, zip);
+ if(r != ARCHIVE_OK)
+ return r;
+
+ return ARCHIVE_OK;
+}
+#endif
+
#ifdef HAVE_ZLIB_H
static int
zip_deflate_init(struct archive_read *a, struct zip *zip)
r = zip_read_data_zipx_xz(a, buff, size, offset);
break;
#endif
+#if HAVE_ZSTD_H && HAVE_LIBZSTD
+ case 93: /* ZIPx Zstd compression. */
+ r = zip_read_data_zipx_zstd(a, buff, size, offset);
+ break;
+#endif
/* PPMd support is built-in, so we don't need any #if guards. */
case 98: /* ZIPx PPMd compression. */
r = zip_read_data_zipx_ppmd(a, buff, size, offset);
}
#endif
+#if HAVE_ZSTD_H && HAVE_LIBZSTD
+ if (zip->zstdstream_valid) {
+ ZSTD_freeDStream(zip->zstdstream);
+ }
+#endif
+
free(zip->uncompressed_buffer);
if (zip->ppmd8_valid)
dp = &defchar_used;
count = WideCharToMultiByte(to_cp, 0, ws, wslen,
as->s + as->length,
- (int)as->buffer_length - as->length - 1, NULL, dp);
+ (int)as->buffer_length - (int)as->length - 1, NULL, dp);
if (count == 0 &&
GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
/* Expand the MBS buffer and retry. */
}
#if defined(_WIN32) && !defined(__CYGWIN__)
+# if defined(WINAPI_FAMILY_PARTITION) && !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
+# define GetOEMCP() CP_OEMCP
+# endif
+
static unsigned
my_atoi(const char *p)
{
archive_mstring_get_mbs_l(struct archive *a, struct archive_mstring *aes,
const char **p, size_t *length, struct archive_string_conv *sc)
{
- int r, ret = 0;
-
- (void)r; /* UNUSED */
+ int ret = 0;
#if defined(_WIN32) && !defined(__CYGWIN__)
+ int r;
+
/*
* Internationalization programming on Windows must use Wide
* characters because Windows platform cannot make locale UTF-8.
#ifdef HAVE_STRING_H
#include <string.h>
#endif
-#if defined(HAVE_WINCRYPT_H) && !defined(__CYGWIN__)
+#if defined(_WIN32) && !defined(__CYGWIN__)
+#if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA
+/* don't use bcrypt when XP needs to be supported */
+#include <bcrypt.h>
+
+/* Common in other bcrypt implementations, but missing from VS2008. */
+#ifndef BCRYPT_SUCCESS
+#define BCRYPT_SUCCESS(r) ((NTSTATUS)(r) == STATUS_SUCCESS)
+#endif
+
+#elif defined(HAVE_WINCRYPT_H)
#include <wincrypt.h>
#endif
+#endif
#ifdef HAVE_ZLIB_H
#include <zlib.h>
#endif
L'm', L'n', L'o', L'p', L'q', L'r', L's', L't',
L'u', L'v', L'w', L'x', L'y', L'z'
};
- HCRYPTPROV hProv;
struct archive_wstring temp_name;
wchar_t *ws;
DWORD attr;
wchar_t *xp, *ep;
int fd;
-
- hProv = (HCRYPTPROV)NULL;
+#if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA
+ BCRYPT_ALG_HANDLE hAlg = NULL;
+#else
+ HCRYPTPROV hProv = (HCRYPTPROV)NULL;
+#endif
fd = -1;
ws = NULL;
abort();
}
+#if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA
+ if (!BCRYPT_SUCCESS(BCryptOpenAlgorithmProvider(&hAlg, BCRYPT_RNG_ALGORITHM,
+ NULL, 0))) {
+ la_dosmaperr(GetLastError());
+ goto exit_tmpfile;
+ }
+#else
if (!CryptAcquireContext(&hProv, NULL, NULL, PROV_RSA_FULL,
CRYPT_VERIFYCONTEXT)) {
la_dosmaperr(GetLastError());
goto exit_tmpfile;
}
+#endif
for (;;) {
wchar_t *p;
HANDLE h;
+# if _WIN32_WINNT >= 0x0602 /* _WIN32_WINNT_WIN8 */
+ CREATEFILE2_EXTENDED_PARAMETERS createExParams;
+#endif
/* Generate a random file name through CryptGenRandom(). */
p = xp;
+#if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA
+ if (!BCRYPT_SUCCESS(BCryptGenRandom(hAlg, (PUCHAR)p,
+ (DWORD)(ep - p)*sizeof(wchar_t), 0))) {
+ la_dosmaperr(GetLastError());
+ goto exit_tmpfile;
+ }
+#else
if (!CryptGenRandom(hProv, (DWORD)(ep - p)*sizeof(wchar_t),
(BYTE*)p)) {
la_dosmaperr(GetLastError());
goto exit_tmpfile;
}
+#endif
for (; p < ep; p++)
*p = num[((DWORD)*p) % (sizeof(num)/sizeof(num[0]))];
/* mkstemp */
attr = FILE_ATTRIBUTE_NORMAL;
}
+# if _WIN32_WINNT >= 0x0602 /* _WIN32_WINNT_WIN8 */
+ ZeroMemory(&createExParams, sizeof(createExParams));
+ createExParams.dwSize = sizeof(createExParams);
+ createExParams.dwFileAttributes = attr & 0xFFFF;
+ createExParams.dwFileFlags = attr & 0xFFF00000;
+ h = CreateFile2(ws,
+ GENERIC_READ | GENERIC_WRITE | DELETE,
+ 0,/* Not share */
+ CREATE_NEW,
+ &createExParams);
+#else
h = CreateFileW(ws,
GENERIC_READ | GENERIC_WRITE | DELETE,
0,/* Not share */
CREATE_NEW,/* Create a new file only */
attr,
NULL);
+#endif
if (h == INVALID_HANDLE_VALUE) {
/* The same file already exists. retry with
* a new filename. */
break;/* success! */
}
exit_tmpfile:
+#if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA
+ if (hAlg != NULL)
+ BCryptCloseAlgorithmProvider(hAlg, 0);
+#else
if (hProv != (HCRYPTPROV)NULL)
CryptReleaseContext(hProv, 0);
+#endif
free(ws);
if (template == temp_name.s)
archive_wstring_free(&temp_name);
{
wchar_t *wpath;
HANDLE handle;
+# if _WIN32_WINNT >= 0x0602 /* _WIN32_WINNT_WIN8 */
+ CREATEFILE2_EXTENDED_PARAMETERS createExParams;
+#endif
+#if !defined(WINAPI_FAMILY_PARTITION) || WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
handle = CreateFileA(path, dwDesiredAccess, dwShareMode,
lpSecurityAttributes, dwCreationDisposition, dwFlagsAndAttributes,
hTemplateFile);
return (handle);
if (GetLastError() != ERROR_PATH_NOT_FOUND)
return (handle);
+#endif
wpath = __la_win_permissive_name(path);
if (wpath == NULL)
- return (handle);
+ return INVALID_HANDLE_VALUE;
+# if _WIN32_WINNT >= 0x0602 /* _WIN32_WINNT_WIN8 */
+ ZeroMemory(&createExParams, sizeof(createExParams));
+ createExParams.dwSize = sizeof(createExParams);
+ createExParams.dwFileAttributes = dwFlagsAndAttributes & 0xFFFF;
+ createExParams.dwFileFlags = dwFlagsAndAttributes & 0xFFF00000;
+ createExParams.dwSecurityQosFlags = dwFlagsAndAttributes & 0x000F00000;
+ createExParams.lpSecurityAttributes = lpSecurityAttributes;
+ createExParams.hTemplateFile = hTemplateFile;
+ handle = CreateFile2(wpath, dwDesiredAccess, dwShareMode,
+ dwCreationDisposition, &createExParams);
+#else /* !WINAPI_PARTITION_DESKTOP */
handle = CreateFileW(wpath, dwDesiredAccess, dwShareMode,
lpSecurityAttributes, dwCreationDisposition, dwFlagsAndAttributes,
hTemplateFile);
+#endif /* !WINAPI_PARTITION_DESKTOP */
free(wpath);
return (handle);
}
* "Permission denied" error.
*/
attr = GetFileAttributesA(path);
- if (attr == (DWORD)-1 && GetLastError() == ERROR_PATH_NOT_FOUND) {
+#if !defined(WINAPI_FAMILY_PARTITION) || WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
+ if (attr == (DWORD)-1 && GetLastError() == ERROR_PATH_NOT_FOUND)
+#endif
+ {
ws = __la_win_permissive_name(path);
if (ws == NULL) {
errno = EINVAL;
}
if (attr & FILE_ATTRIBUTE_DIRECTORY) {
HANDLE handle;
-
+#if !defined(WINAPI_FAMILY_PARTITION) || WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
if (ws != NULL)
handle = CreateFileW(ws, 0, 0, NULL,
OPEN_EXISTING,
FILE_FLAG_BACKUP_SEMANTICS |
FILE_ATTRIBUTE_READONLY,
NULL);
+#else /* !WINAPI_PARTITION_DESKTOP */
+ CREATEFILE2_EXTENDED_PARAMETERS createExParams;
+ ZeroMemory(&createExParams, sizeof(createExParams));
+ createExParams.dwSize = sizeof(createExParams);
+ createExParams.dwFileAttributes = FILE_ATTRIBUTE_READONLY;
+ createExParams.dwFileFlags = FILE_FLAG_BACKUP_SEMANTICS;
+ handle = CreateFile2(ws, 0, 0,
+ OPEN_EXISTING, &createExParams);
+#endif /* !WINAPI_PARTITION_DESKTOP */
free(ws);
if (handle == INVALID_HANDLE_VALUE) {
la_dosmaperr(GetLastError());
#include "archive_private.h"
#include "archive_write_private.h"
-static struct archive_vtable *archive_write_vtable(void);
-
static int _archive_filter_code(struct archive *, int);
static const char *_archive_filter_name(struct archive *, int);
static int64_t _archive_filter_bytes(struct archive *, int);
char *next;
};
-static struct archive_vtable *
-archive_write_vtable(void)
-{
- static struct archive_vtable av;
- static int inited = 0;
-
- if (!inited) {
- av.archive_close = _archive_write_close;
- av.archive_filter_bytes = _archive_filter_bytes;
- av.archive_filter_code = _archive_filter_code;
- av.archive_filter_name = _archive_filter_name;
- av.archive_filter_count = _archive_write_filter_count;
- av.archive_free = _archive_write_free;
- av.archive_write_header = _archive_write_header;
- av.archive_write_finish_entry = _archive_write_finish_entry;
- av.archive_write_data = _archive_write_data;
- inited = 1;
- }
- return (&av);
-}
+static const struct archive_vtable
+archive_write_vtable = {
+ .archive_close = _archive_write_close,
+ .archive_filter_bytes = _archive_filter_bytes,
+ .archive_filter_code = _archive_filter_code,
+ .archive_filter_name = _archive_filter_name,
+ .archive_filter_count = _archive_write_filter_count,
+ .archive_free = _archive_write_free,
+ .archive_write_header = _archive_write_header,
+ .archive_write_finish_entry = _archive_write_finish_entry,
+ .archive_write_data = _archive_write_data,
+};
/*
* Allocate, initialize and return an archive object.
return (NULL);
a->archive.magic = ARCHIVE_WRITE_MAGIC;
a->archive.state = ARCHIVE_STATE_NEW;
- a->archive.vtable = archive_write_vtable();
+ a->archive.vtable = &archive_write_vtable;
/*
* The value 10240 here matches the traditional tar default,
* but is otherwise arbitrary.
struct archive_write_filter *f;
f = calloc(1, sizeof(*f));
+
+ if (f == NULL)
+ return (NULL);
+
f->archive = _a;
f->state = ARCHIVE_WRITE_FILTER_STATE_NEW;
if (a->filter_first == NULL)
return (__archive_write_filter(a->filter_first, buff, length));
}
+static int
+__archive_write_filters_flush(struct archive_write *a)
+{
+ struct archive_write_filter *f;
+ int ret, ret1;
+
+ ret = ARCHIVE_OK;
+ for (f = a->filter_first; f != NULL; f = f->next_filter) {
+ if (f->flush != NULL && f->bytes_written > 0) {
+ ret1 = (f->flush)(f);
+ if (ret1 < ret)
+ ret = ret1;
+ if (ret1 < ARCHIVE_WARN)
+ f->state = ARCHIVE_WRITE_FILTER_STATE_FATAL;
+ }
+ }
+ return (ret);
+}
+
int
__archive_write_nulls(struct archive_write *a, size_t length)
{
a->client_data = client_data;
client_filter = __archive_write_allocate_filter(_a);
+
+ if (client_filter == NULL)
+ return (ARCHIVE_FATAL);
+
client_filter->open = archive_write_client_open;
client_filter->write = archive_write_client_write;
client_filter->close = archive_write_client_close;
return (ARCHIVE_FAILED);
}
+ /* Flush filters at boundary. */
+ r2 = __archive_write_filters_flush(a);
+ if (r2 == ARCHIVE_FAILED) {
+ return (ARCHIVE_FAILED);
+ }
+ if (r2 == ARCHIVE_FATAL) {
+ a->archive.state = ARCHIVE_STATE_FATAL;
+ return (ARCHIVE_FATAL);
+ }
+ if (r2 < ret)
+ ret = r2;
+
/* Format and write header. */
r2 = ((a->format_write_header)(a, entry));
if (r2 == ARCHIVE_FAILED) {
memset(&data->stream, 0, sizeof(data->stream));
data->stream.next_out = data->compressed;
- data->stream.avail_out = data->compressed_buffer_size;
+ data->stream.avail_out = (uint32_t)data->compressed_buffer_size;
f->write = archive_compressor_bzip2_write;
/* Initialize compression library */
/* Compress input data to output buffer */
SET_NEXT_IN(data, buff);
- data->stream.avail_in = length;
+ data->stream.avail_in = (uint32_t)length;
if (drive_compressor(f, data, 0))
return (ARCHIVE_FATAL);
return (ARCHIVE_OK);
return (ARCHIVE_FATAL);
}
data->stream.next_out = data->compressed;
- data->stream.avail_out = data->compressed_buffer_size;
+ data->stream.avail_out = (uint32_t)data->compressed_buffer_size;
}
/* If there's nothing to do, we're done. */
while (length--) {
c = *bp++;
state->in_count++;
- state->cur_fcode = (c << 16) + state->cur_code;
+ state->cur_fcode = (c << 16) | state->cur_code;
i = ((c << HSHIFT) ^ state->cur_code); /* Xor hashing. */
if (state->hashtab[i] == state->cur_fcode) {
} else {
/* The buffer is not compressed. The compressed size was
* bigger than its uncompressed size. */
- archive_le32enc(data->out, length | 0x80000000);
+ archive_le32enc(data->out, (uint32_t)(length | 0x80000000));
data->out += 4;
memcpy(data->out, p, length);
- outsize = length;
+ outsize = (uint32_t)length;
}
data->out += outsize;
if (data->block_checksum) {
} else {
/* The buffer is not compressed. The compressed size was
* bigger than its uncompressed size. */
- archive_le32enc(data->out, length | 0x80000000);
+ archive_le32enc(data->out, (uint32_t)(length | 0x80000000));
data->out += 4;
memcpy(data->out, p, length);
- outsize = length;
+ outsize = (uint32_t)length;
}
data->out += outsize;
if (data->block_checksum) {
int ds, log2dic, wedges;
/* Calculate a coded dictionary size */
- if (dict_size < (1 << 12) || dict_size > (1 << 27)) {
+ if (dict_size < (1 << 12) || dict_size > (1 << 29)) {
archive_set_error(f->archive, ARCHIVE_ERRNO_MISC,
"Unacceptable dictionary size for lzip: %d",
dict_size);
return (ARCHIVE_FATAL);
}
- for (log2dic = 27; log2dic >= 12; log2dic--) {
+ for (log2dic = 29; log2dic >= 12; log2dic--) {
if (dict_size & (1 << log2dic))
break;
}
#ifdef HAVE_ERRNO_H
#include <errno.h>
#endif
+#ifdef HAVE_STDINT_H
+#include <stdint.h>
+#endif
#ifdef HAVE_STDLIB_H
#include <stdlib.h>
#endif
struct private_data {
int compression_level;
-#if HAVE_ZSTD_H && HAVE_LIBZSTD
+ int threads;
+ int long_distance;
+#if HAVE_ZSTD_H && HAVE_LIBZSTD_COMPRESSOR
+ enum {
+ running,
+ finishing,
+ resetting,
+ } state;
+ int frame_per_file;
+ size_t min_frame_size;
+ size_t max_frame_size;
+ size_t cur_frame;
+ size_t cur_frame_in;
+ size_t cur_frame_out;
+ size_t total_in;
ZSTD_CStream *cstream;
- int64_t total_in;
ZSTD_outBuffer out;
#else
struct archive_write_program_data *pdata;
#define CLEVEL_STD_MAX 19 /* without using --ultra */
#define CLEVEL_MAX 22
+#define LONG_STD 27
+
#define MINVER_NEGCLEVEL 10304
#define MINVER_MINCLEVEL 10306
+#define MINVER_LONG 10302
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_flush(struct archive_write_filter *);
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
+#if HAVE_ZSTD_H && HAVE_LIBZSTD_COMPRESSOR
static int drive_compressor(struct archive_write_filter *,
struct private_data *, int, const void *, size_t);
#endif
f->data = data;
f->open = &archive_compressor_zstd_open;
f->options = &archive_compressor_zstd_options;
+ f->flush = &archive_compressor_zstd_flush;
f->close = &archive_compressor_zstd_close;
f->free = &archive_compressor_zstd_free;
f->code = ARCHIVE_FILTER_ZSTD;
f->name = "zstd";
data->compression_level = CLEVEL_DEFAULT;
-#if HAVE_ZSTD_H && HAVE_LIBZSTD
+ data->threads = 0;
+ data->long_distance = 0;
+#if HAVE_ZSTD_H && HAVE_LIBZSTD_COMPRESSOR
+ data->frame_per_file = 0;
+ data->min_frame_size = 0;
+ data->max_frame_size = SIZE_MAX;
+ data->cur_frame_in = 0;
+ data->cur_frame_out = 0;
data->cstream = ZSTD_createCStream();
if (data->cstream == NULL) {
free(data);
archive_compressor_zstd_free(struct archive_write_filter *f)
{
struct private_data *data = (struct private_data *)f->data;
-#if HAVE_ZSTD_H && HAVE_LIBZSTD
+#if HAVE_ZSTD_H && HAVE_LIBZSTD_COMPRESSOR
ZSTD_freeCStream(data->cstream);
free(data->out.dst);
#else
return (ARCHIVE_OK);
}
-static int string_is_numeric (const char* value)
+static int string_to_number(const char *string, intmax_t *numberp)
{
- size_t len = strlen(value);
- size_t i;
-
- if (len == 0) {
- return (ARCHIVE_WARN);
- }
- else if (len == 1 && !(value[0] >= '0' && value[0] <= '9')) {
- return (ARCHIVE_WARN);
- }
- else if (!(value[0] >= '0' && value[0] <= '9') &&
- value[0] != '-' && value[0] != '+') {
- return (ARCHIVE_WARN);
- }
-
- for (i = 1; i < len; i++) {
- if (!(value[i] >= '0' && value[i] <= '9')) {
- return (ARCHIVE_WARN);
- }
- }
-
- return (ARCHIVE_OK);
+ char *end;
+
+ if (string == NULL || *string == '\0')
+ return (ARCHIVE_WARN);
+ *numberp = strtoimax(string, &end, 10);
+ if (end == string || *end != '\0' || errno == EOVERFLOW) {
+ *numberp = 0;
+ return (ARCHIVE_WARN);
+ }
+ return (ARCHIVE_OK);
}
/*
struct private_data *data = (struct private_data *)f->data;
if (strcmp(key, "compression-level") == 0) {
- int level = atoi(value);
+ intmax_t level;
+ if (string_to_number(value, &level) != ARCHIVE_OK) {
+ return (ARCHIVE_WARN);
+ }
/* If we don't have the library, hard-code the max level */
int minimum = CLEVEL_MIN;
int maximum = CLEVEL_MAX;
- if (string_is_numeric(value) != ARCHIVE_OK) {
- return (ARCHIVE_WARN);
- }
-#if HAVE_ZSTD_H && HAVE_LIBZSTD
+#if HAVE_ZSTD_H && HAVE_LIBZSTD_COMPRESSOR
maximum = ZSTD_maxCLevel();
#if ZSTD_VERSION_NUMBER >= MINVER_MINCLEVEL
if (ZSTD_versionNumber() >= MINVER_MINCLEVEL) {
if (level < minimum || level > maximum) {
return (ARCHIVE_WARN);
}
- data->compression_level = level;
+ data->compression_level = (int)level;
+ return (ARCHIVE_OK);
+ } else if (strcmp(key, "threads") == 0) {
+ intmax_t threads;
+ if (string_to_number(value, &threads) != ARCHIVE_OK) {
+ return (ARCHIVE_WARN);
+ }
+ if (threads < 0) {
+ return (ARCHIVE_WARN);
+ }
+ data->threads = (int)threads;
+ return (ARCHIVE_OK);
+#if HAVE_ZSTD_H && HAVE_LIBZSTD_COMPRESSOR
+ } else if (strcmp(key, "frame-per-file") == 0) {
+ data->frame_per_file = 1;
+ return (ARCHIVE_OK);
+ } else if (strcmp(key, "min-frame-size") == 0) {
+ intmax_t min_frame_size;
+ if (string_to_number(value, &min_frame_size) != ARCHIVE_OK) {
+ return (ARCHIVE_WARN);
+ }
+ if (min_frame_size < 0) {
+ return (ARCHIVE_WARN);
+ }
+ data->min_frame_size = min_frame_size;
+ return (ARCHIVE_OK);
+ } else if (strcmp(key, "max-frame-size") == 0) {
+ intmax_t max_frame_size;
+ if (string_to_number(value, &max_frame_size) != ARCHIVE_OK) {
+ return (ARCHIVE_WARN);
+ }
+ if (max_frame_size < 1024) {
+ return (ARCHIVE_WARN);
+ }
+ data->max_frame_size = max_frame_size;
+ return (ARCHIVE_OK);
+#endif
+ }
+ else if (strcmp(key, "long") == 0) {
+ intmax_t long_distance;
+ if (string_to_number(value, &long_distance) != ARCHIVE_OK) {
+ return (ARCHIVE_WARN);
+ }
+#if HAVE_ZSTD_H && HAVE_LIBZSTD_COMPRESSOR && ZSTD_VERSION_NUMBER >= MINVER_LONG
+ ZSTD_bounds bounds = ZSTD_cParam_getBounds(ZSTD_c_windowLog);
+ if (ZSTD_isError(bounds.error)) {
+ int max_distance = ((int)(sizeof(size_t) == 4 ? 30 : 31));
+ if (((int)long_distance) < 10 || (int)long_distance > max_distance)
+ return (ARCHIVE_WARN);
+ } else {
+ if ((int)long_distance < bounds.lowerBound || (int)long_distance > bounds.upperBound)
+ return (ARCHIVE_WARN);
+ }
+#else
+ int max_distance = ((int)(sizeof(size_t) == 4 ? 30 : 31));
+ if (((int)long_distance) < 10 || (int)long_distance > max_distance)
+ return (ARCHIVE_WARN);
+#endif
+ data->long_distance = (int)long_distance;
return (ARCHIVE_OK);
}
return (ARCHIVE_WARN);
}
-#if HAVE_ZSTD_H && HAVE_LIBZSTD
+#if HAVE_ZSTD_H && HAVE_LIBZSTD_COMPRESSOR
/*
* Setup callback.
*/
return (ARCHIVE_FATAL);
}
+ ZSTD_CCtx_setParameter(data->cstream, ZSTD_c_nbWorkers, data->threads);
+
+#if ZSTD_VERSION_NUMBER >= MINVER_LONG
+ ZSTD_CCtx_setParameter(data->cstream, ZSTD_c_windowLog, data->long_distance);
+#endif
+
return (ARCHIVE_OK);
}
size_t length)
{
struct private_data *data = (struct private_data *)f->data;
- int ret;
- /* Update statistics */
- data->total_in += length;
+ return (drive_compressor(f, data, 0, buff, length));
+}
- if ((ret = drive_compressor(f, data, 0, buff, length)) != ARCHIVE_OK)
- return (ret);
+/*
+ * Flush the compressed stream.
+ */
+static int
+archive_compressor_zstd_flush(struct archive_write_filter *f)
+{
+ struct private_data *data = (struct private_data *)f->data;
- return (ARCHIVE_OK);
+ if (data->frame_per_file && data->state == running &&
+ data->cur_frame_out > data->min_frame_size)
+ data->state = finishing;
+ return (drive_compressor(f, data, 1, NULL, 0));
}
/*
{
struct private_data *data = (struct private_data *)f->data;
- /* Finish zstd frame */
- return drive_compressor(f, data, 1, NULL, 0);
+ if (data->state == running)
+ data->state = finishing;
+ return (drive_compressor(f, data, 1, NULL, 0));
}
/*
* 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)
+ struct private_data *data, int flush, const void *src, size_t length)
{
- ZSTD_inBuffer in = (ZSTD_inBuffer) { src, length, 0 };
+ ZSTD_inBuffer in = { .src = src, .size = length, .pos = 0 };
+ size_t ipos, opos, zstdret = 0;
+ int ret;
for (;;) {
- if (data->out.pos == data->out.size) {
- const int ret = __archive_write_filter(f->next_filter,
- data->out.dst, data->out.size);
+ ipos = in.pos;
+ opos = data->out.pos;
+ switch (data->state) {
+ case running:
+ if (in.pos == in.size)
+ return (ARCHIVE_OK);
+ zstdret = ZSTD_compressStream(data->cstream,
+ &data->out, &in);
+ if (ZSTD_isError(zstdret))
+ goto zstd_fatal;
+ break;
+ case finishing:
+ zstdret = ZSTD_endStream(data->cstream, &data->out);
+ if (ZSTD_isError(zstdret))
+ goto zstd_fatal;
+ if (zstdret == 0)
+ data->state = resetting;
+ break;
+ case resetting:
+ ZSTD_CCtx_reset(data->cstream, ZSTD_reset_session_only);
+ data->cur_frame++;
+ data->cur_frame_in = 0;
+ data->cur_frame_out = 0;
+ data->state = running;
+ break;
+ }
+ data->total_in += in.pos - ipos;
+ data->cur_frame_in += in.pos - ipos;
+ data->cur_frame_out += data->out.pos - opos;
+ if (data->state == running &&
+ data->cur_frame_in >= data->max_frame_size) {
+ data->state = finishing;
+ }
+ if (data->out.pos == data->out.size ||
+ (flush && data->out.pos > 0)) {
+ ret = __archive_write_filter(f->next_filter,
+ data->out.dst, data->out.pos);
if (ret != ARCHIVE_OK)
- return (ARCHIVE_FATAL);
+ goto 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);
- }
- }
}
+zstd_fatal:
+ archive_set_error(f->archive, ARCHIVE_ERRNO_MISC,
+ "Zstd compression failed: %s",
+ ZSTD_getErrorName(zstdret));
+fatal:
+ return (ARCHIVE_FATAL);
}
-#else /* HAVE_ZSTD_H && HAVE_LIBZSTD */
+#else /* HAVE_ZSTD_H && HAVE_LIBZSTD_COMPRESSOR */
static int
archive_compressor_zstd_open(struct archive_write_filter *f)
archive_strcpy(&as, "zstd --no-check");
if (data->compression_level < CLEVEL_STD_MIN) {
- struct archive_string as2;
- archive_string_init(&as2);
- archive_string_sprintf(&as2, " --fast=%d", -data->compression_level);
- archive_string_concat(&as, &as2);
- archive_string_free(&as2);
+ archive_string_sprintf(&as, " --fast=%d", -data->compression_level);
} else {
- struct archive_string as2;
- archive_string_init(&as2);
- archive_string_sprintf(&as2, " -%d", data->compression_level);
- archive_string_concat(&as, &as2);
- archive_string_free(&as2);
+ archive_string_sprintf(&as, " -%d", data->compression_level);
}
if (data->compression_level > CLEVEL_STD_MAX) {
archive_strcat(&as, " --ultra");
}
+ if (data->threads != 0) {
+ archive_string_sprintf(&as, " --threads=%d", data->threads);
+ }
+
+ if (data->long_distance != 0) {
+ archive_string_sprintf(&as, " --long=%d", data->long_distance);
+ }
+
f->write = archive_compressor_zstd_write;
r = __archive_write_program_open(f, data->pdata, as.s);
archive_string_free(&as);
}
static int
+archive_compressor_zstd_flush(struct archive_write_filter *f)
+{
+ (void)f; /* UNUSED */
+
+ return (ARCHIVE_OK);
+}
+
+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 */
+#endif /* HAVE_ZSTD_H && HAVE_LIBZSTD_COMPRESSOR */
files outside of the current directory.
The default is not to perform this check.
If
-.It Cm ARCHIVE_EXTRACT_SPARSE
-Scan data for blocks of NUL bytes and try to recreate them with holes.
-This results in sparse files, independent of whether the archive format
-supports or uses them.
.Cm ARCHIVE_EXTRACT_UNLINK
is specified together with this option, the library will
remove any intermediate symlinks it finds and return an
error only if such symlink could not be removed.
+.It Cm ARCHIVE_EXTRACT_SPARSE
+Scan data for blocks of NUL bytes and try to recreate them with holes.
+This results in sparse files, independent of whether the archive format
+supports or uses them.
.It Cm ARCHIVE_EXTRACT_TIME
The timestamps (mtime, ctime, and atime) should be restored.
By default, they are ignored.
struct fixup_entry *next;
struct archive_acl acl;
mode_t mode;
+ __LA_MODE_T filetype;
int64_t atime;
int64_t birthtime;
int64_t mtime;
static int la_opendirat(int, const char *);
static int la_mktemp(struct archive_write_disk *);
+static int la_verify_filetype(mode_t, __LA_MODE_T);
static void fsobj_error(int *, struct archive_string *, int, const char *,
const char *);
static int check_symlinks_fsobj(char *, int *, struct archive_string *,
static struct fixup_entry *sort_dir_list(struct fixup_entry *p);
static ssize_t write_data_block(struct archive_write_disk *,
const char *, size_t);
-
-static struct archive_vtable *archive_write_disk_vtable(void);
+static void close_file_descriptor(struct archive_write_disk *);
static int _archive_write_disk_close(struct archive *);
static int _archive_write_disk_free(struct archive *);
}
static int
+la_verify_filetype(mode_t mode, __LA_MODE_T filetype) {
+ int ret = 0;
+
+ switch (filetype) {
+ case AE_IFREG:
+ ret = (S_ISREG(mode));
+ break;
+ case AE_IFDIR:
+ ret = (S_ISDIR(mode));
+ break;
+ case AE_IFLNK:
+ ret = (S_ISLNK(mode));
+ break;
+ case AE_IFSOCK:
+ ret = (S_ISSOCK(mode));
+ break;
+ case AE_IFCHR:
+ ret = (S_ISCHR(mode));
+ break;
+ case AE_IFBLK:
+ ret = (S_ISBLK(mode));
+ break;
+ case AE_IFIFO:
+ ret = (S_ISFIFO(mode));
+ break;
+ default:
+ break;
+ }
+
+ return (ret);
+}
+
+static int
lazy_stat(struct archive_write_disk *a)
{
if (a->pst != NULL) {
* XXX At this point, symlinks should not be hit, otherwise
* XXX a race occurred. Do we want to check explicitly for that?
*/
- if (lstat(a->name, &a->st) == 0) {
+#ifdef HAVE_LSTAT
+ if (lstat(a->name, &a->st) == 0)
+#else
+ if (la_stat(a->name, &a->st) == 0)
+#endif
+ {
a->pst = &a->st;
return (ARCHIVE_OK);
}
return (ARCHIVE_WARN);
}
-static struct archive_vtable *
-archive_write_disk_vtable(void)
-{
- static struct archive_vtable av;
- static int inited = 0;
-
- if (!inited) {
- av.archive_close = _archive_write_disk_close;
- av.archive_filter_bytes = _archive_write_disk_filter_bytes;
- av.archive_free = _archive_write_disk_free;
- av.archive_write_header = _archive_write_disk_header;
- av.archive_write_finish_entry
- = _archive_write_disk_finish_entry;
- av.archive_write_data = _archive_write_disk_data;
- av.archive_write_data_block = _archive_write_disk_data_block;
- inited = 1;
- }
- return (&av);
-}
+static const struct archive_vtable
+archive_write_disk_vtable = {
+ .archive_close = _archive_write_disk_close,
+ .archive_filter_bytes = _archive_write_disk_filter_bytes,
+ .archive_free = _archive_write_disk_free,
+ .archive_write_header = _archive_write_disk_header,
+ .archive_write_finish_entry = _archive_write_disk_finish_entry,
+ .archive_write_data = _archive_write_disk_data,
+ .archive_write_data_block = _archive_write_disk_data_block,
+};
static int64_t
_archive_write_disk_filter_bytes(struct archive *_a, int n)
fe = current_fixup(a, archive_entry_pathname(entry));
if (fe == NULL)
return (ARCHIVE_FATAL);
+ fe->filetype = archive_entry_filetype(entry);
fe->fixup |= TODO_MODE_BASE;
fe->mode = a->mode;
}
fe = current_fixup(a, archive_entry_pathname(entry));
if (fe == NULL)
return (ARCHIVE_FATAL);
+ fe->filetype = archive_entry_filetype(entry);
fe->mode = a->mode;
fe->fixup |= TODO_TIMES;
if (archive_entry_atime_is_set(entry)) {
fe = current_fixup(a, archive_entry_pathname(entry));
if (fe == NULL)
return (ARCHIVE_FATAL);
+ fe->filetype = archive_entry_filetype(entry);
fe->fixup |= TODO_ACLS;
archive_acl_copy(&fe->acl, archive_entry_acl(entry));
}
fe = current_fixup(a, archive_entry_pathname(entry));
if (fe == NULL)
return (ARCHIVE_FATAL);
+ fe->filetype = archive_entry_filetype(entry);
fe->mac_metadata = malloc(metadata_size);
if (fe->mac_metadata != NULL) {
memcpy(fe->mac_metadata, metadata,
fe = current_fixup(a, archive_entry_pathname(entry));
if (fe == NULL)
return (ARCHIVE_FATAL);
+ fe->filetype = archive_entry_filetype(entry);
fe->fixup |= TODO_FFLAGS;
/* TODO: Complete this.. defer fflags from below. */
}
"Seek failed");
return (ARCHIVE_FATAL);
} else if (a->offset > a->fd_offset) {
- int64_t skip = a->offset - a->fd_offset;
+ uint64_t skip = a->offset - a->fd_offset;
char nullblock[1024];
memset(nullblock, 0, sizeof(nullblock));
while (skip > 0) {
- if (skip > (int64_t)sizeof(nullblock))
+ if (skip > sizeof(nullblock))
bytes_written = hfs_write_decmpfs_block(
a, nullblock, sizeof(nullblock));
else
else
r = hfs_write_data_block(
a, null_d, a->file_remaining_bytes);
- if (r < 0)
+ if (r < 0) {
+ close_file_descriptor(a);
return ((int)r);
+ }
}
#endif
} else {
a->filesize == 0) {
archive_set_error(&a->archive, errno,
"File size could not be restored");
+ close_file_descriptor(a);
return (ARCHIVE_FAILED);
}
#endif
* to see what happened.
*/
a->pst = NULL;
- if ((ret = lazy_stat(a)) != ARCHIVE_OK)
- return (ret);
+ if ((ret = lazy_stat(a)) != ARCHIVE_OK) {
+ close_file_descriptor(a);
+ return (ret);
+ }
/* We can use lseek()/write() to extend the file if
* ftruncate didn't work or isn't available. */
if (a->st.st_size < a->filesize) {
if (lseek(a->fd, a->filesize - 1, SEEK_SET) < 0) {
archive_set_error(&a->archive, errno,
"Seek failed");
+ close_file_descriptor(a);
return (ARCHIVE_FATAL);
}
if (write(a->fd, &nul, 1) < 0) {
archive_set_error(&a->archive, errno,
"Write to restore size failed");
+ close_file_descriptor(a);
return (ARCHIVE_FATAL);
}
a->pst = NULL;
a->archive.magic = ARCHIVE_WRITE_DISK_MAGIC;
/* We're ready to write a header immediately. */
a->archive.state = ARCHIVE_STATE_HEADER;
- a->archive.vtable = archive_write_disk_vtable();
+ a->archive.vtable = &archive_write_disk_vtable;
a->start_time = time(NULL);
/* Query and restore the umask. */
umask(a->user_umask = umask(0));
free(a);
return (NULL);
}
+ a->path_safe.s[0] = 0;
+
#ifdef HAVE_ZLIB_H
a->decmpfs_compression_level = 5;
#endif
* then don't follow it.
*/
if (r != 0 || !S_ISDIR(a->mode))
+#ifdef HAVE_LSTAT
r = lstat(a->name, &a->st);
+#else
+ r = la_stat(a->name, &a->st);
+#endif
if (r != 0) {
archive_set_error(&a->archive, errno,
"Can't stat existing object");
struct archive_write_disk *a = (struct archive_write_disk *)_a;
struct fixup_entry *next, *p;
struct stat st;
- int fd, ret;
+ char *c;
+ int fd, ret, openflags;
archive_check_magic(&a->archive, ARCHIVE_WRITE_DISK_MAGIC,
ARCHIVE_STATE_HEADER | ARCHIVE_STATE_DATA,
while (p != NULL) {
fd = -1;
a->pst = NULL; /* Mark stat cache as out-of-date. */
- if (p->fixup &
- (TODO_TIMES | TODO_MODE_BASE | TODO_ACLS | TODO_FFLAGS)) {
- fd = open(p->name,
- O_WRONLY | O_BINARY | O_NOFOLLOW | O_CLOEXEC);
- if (fd == -1) {
- /* If we cannot lstat, skip entry */
- if (lstat(p->name, &st) != 0)
+
+ /* We must strip trailing slashes from the path to avoid
+ dereferencing symbolic links to directories */
+ c = p->name;
+ while (*c != '\0')
+ c++;
+ while (c != p->name && *(c - 1) == '/') {
+ c--;
+ *c = '\0';
+ }
+
+ if (p->fixup == 0)
+ goto skip_fixup_entry;
+ else {
+ /*
+ * We need to verify if the type of the file
+ * we are going to open matches the file type
+ * of the fixup entry.
+ */
+ openflags = O_BINARY | O_NOFOLLOW | O_RDONLY
+ | O_CLOEXEC;
+#if defined(O_DIRECTORY)
+ if (p->filetype == AE_IFDIR)
+ openflags |= O_DIRECTORY;
+#endif
+ fd = open(p->name, openflags);
+
+#if defined(O_DIRECTORY)
+ /*
+ * If we support O_DIRECTORY and open was
+ * successful we can skip the file type check
+ * for directories. For other file types
+ * we need to verify via fstat() or lstat()
+ */
+ if (fd == -1 || p->filetype != AE_IFDIR) {
+#if HAVE_FSTAT
+ if (fd > 0 && (
+ fstat(fd, &st) != 0 ||
+ la_verify_filetype(st.st_mode,
+ p->filetype) == 0)) {
+ goto skip_fixup_entry;
+ } else
+#endif
+ if (
+#ifdef HAVE_LSTAT
+ lstat(p->name, &st) != 0 ||
+#else
+ la_stat(p->name, &st) != 0 ||
+#endif
+ la_verify_filetype(st.st_mode,
+ p->filetype) == 0) {
goto skip_fixup_entry;
- /*
- * If we deal with a symbolic link, mark
- * it in the fixup mode to ensure no
- * modifications are made to its target.
- */
- if (S_ISLNK(st.st_mode)) {
- p->mode &= ~S_IFMT;
- p->mode |= S_IFLNK;
}
}
+#else
+#if HAVE_FSTAT
+ if (fd > 0 && (
+ fstat(fd, &st) != 0 ||
+ la_verify_filetype(st.st_mode,
+ p->filetype) == 0)) {
+ goto skip_fixup_entry;
+ } else
+#endif
+ if (
+#ifdef HAVE_LSTAT
+ lstat(p->name, &st) != 0 ||
+#else
+ la_stat(p->name, &st) != 0 ||
+#endif
+ la_verify_filetype(st.st_mode,
+ p->filetype) == 0) {
+ goto skip_fixup_entry;
+ }
+#endif
}
if (p->fixup & TODO_TIMES) {
set_times(a, fd, p->mode, p->name,
if (p->fixup & TODO_MODE_BASE) {
#ifdef HAVE_FCHMOD
if (fd >= 0)
- fchmod(fd, p->mode);
+ fchmod(fd, p->mode & 07777);
else
#endif
#ifdef HAVE_LCHMOD
- lchmod(p->name, p->mode);
+ lchmod(p->name, p->mode & 07777);
#else
- if (!S_ISLNK(p->mode))
- chmod(p->name, p->mode);
+ chmod(p->name, p->mode & 07777);
#endif
}
if (p->fixup & TODO_ACLS)
fe->next = a->fixup_list;
a->fixup_list = fe;
fe->fixup = 0;
- fe->mode = 0;
+ fe->filetype = 0;
fe->name = strdup(pathname);
return (fe);
}
!(defined(HAVE_OPENAT) && defined(HAVE_FSTATAT) && defined(HAVE_UNLINKAT))
/* Platform doesn't have lstat, so we can't look for symlinks. */
(void)path; /* UNUSED */
- (void)error_number; /* UNUSED */
- (void)error_string; /* UNUSED */
+ (void)a_eno; /* UNUSED */
+ (void)a_estr; /* UNUSED */
(void)flags; /* UNUSED */
(void)checking_linkname; /* UNUSED */
return (ARCHIVE_OK);
char *tail;
char *head;
int last;
- char c;
+ char c = '\0';
int r;
struct stat st;
int chdir_fd;
/* Check that we haven't hit a symlink. */
#if defined(HAVE_OPENAT) && defined(HAVE_FSTATAT) && defined(HAVE_UNLINKAT)
r = fstatat(chdir_fd, head, &st, AT_SYMLINK_NOFOLLOW);
-#else
+#elif defined(HAVE_LSTAT)
r = lstat(head, &st);
+#else
+ r = la_stat(head, &st);
#endif
if (r != 0) {
tail[0] = c;
(void)fd; /* UNUSED */
(void)mode; /* UNUSED */
(void)name; /* UNUSED */
+ (void)atime; /* UNUSED */
(void)atime_nsec; /* UNUSED */
+ (void)mtime; /* UNUSED */
(void)mtime_nsec; /* UNUSED */
return (ARCHIVE_WARN);
#endif
le = current_fixup(a, a->name);
if (le == NULL)
return (ARCHIVE_FATAL);
+ le->filetype = archive_entry_filetype(a->entry);
le->fixup |= TODO_FFLAGS;
le->fflags_set = set;
/* Store the mode if it's not already there. */
*/
archive_strncpy(&datafork, pathname, p - pathname);
archive_strcat(&datafork, p + 2);
- if (lstat(datafork.s, &st) == -1 ||
+ if (
+#ifdef HAVE_LSTAT
+ lstat(datafork.s, &st) == -1 ||
+#else
+ la_stat(datafork.s, &st) == -1 ||
+#endif
(st.st_mode & AE_IFMT) != AE_IFREG)
goto skip_appledouble;
}
#endif
+/*
+ * Close the file descriptor if one is open.
+ */
+static void close_file_descriptor(struct archive_write_disk* a)
+{
+ if (a->fd >= 0) {
+ close(a->fd);
+ a->fd = -1;
+ }
+}
+
+
#endif /* !_WIN32 || __CYGWIN__ */
static int create_filesystem_object(struct archive_write_disk *);
static struct fixup_entry *current_fixup(struct archive_write_disk *,
const wchar_t *pathname);
-static int cleanup_pathname(struct archive_write_disk *);
+static int cleanup_pathname(struct archive_write_disk *, wchar_t *);
static int create_dir(struct archive_write_disk *, wchar_t *);
static int create_parent_dir(struct archive_write_disk *, wchar_t *);
static int la_chmod(const wchar_t *, mode_t);
static ssize_t write_data_block(struct archive_write_disk *,
const char *, size_t);
-static struct archive_vtable *archive_write_disk_vtable(void);
-
static int _archive_write_disk_close(struct archive *);
static int _archive_write_disk_free(struct archive *);
static int _archive_write_disk_header(struct archive *,
* which is high-16-bits of nFileIndexHigh. */
#define bhfi_ino(bhfi) \
((((int64_t)((bhfi)->nFileIndexHigh & 0x0000FFFFUL)) << 32) \
- + (bhfi)->nFileIndexLow)
+ | (bhfi)->nFileIndexLow)
#define bhfi_size(bhfi) \
- ((((int64_t)(bhfi)->nFileSizeHigh) << 32) + (bhfi)->nFileSizeLow)
+ ((((int64_t)(bhfi)->nFileSizeHigh) << 32) | (bhfi)->nFileSizeLow)
static int
file_information(struct archive_write_disk *a, wchar_t *path,
int r;
DWORD flag = FILE_FLAG_BACKUP_SEMANTICS;
WIN32_FIND_DATAW findData;
+# if _WIN32_WINNT >= 0x0602 /* _WIN32_WINNT_WIN8 */
+ CREATEFILE2_EXTENDED_PARAMETERS createExParams;
+#endif
if (sim_lstat || mode != NULL) {
h = FindFirstFileW(path, &findData);
(findData.dwReserved0 == IO_REPARSE_TAG_SYMLINK)))
flag |= FILE_FLAG_OPEN_REPARSE_POINT;
+# if _WIN32_WINNT >= 0x0602 /* _WIN32_WINNT_WIN8 */
+ ZeroMemory(&createExParams, sizeof(createExParams));
+ createExParams.dwSize = sizeof(createExParams);
+ createExParams.dwFileFlags = flag;
+ h = CreateFile2(a->name, 0, 0,
+ OPEN_EXISTING, &createExParams);
+#else
h = CreateFileW(a->name, 0, 0, NULL,
OPEN_EXISTING, flag, NULL);
+#endif
if (h == INVALID_HANDLE_VALUE &&
GetLastError() == ERROR_INVALID_NAME) {
wchar_t *full;
full = __la_win_permissive_name_w(path);
+# if _WIN32_WINNT >= 0x0602 /* _WIN32_WINNT_WIN8 */
+ h = CreateFile2(full, 0, 0,
+ OPEN_EXISTING, &createExParams);
+#else
h = CreateFileW(full, 0, 0, NULL,
OPEN_EXISTING, flag, NULL);
+#endif
free(full);
}
if (h == INVALID_HANDLE_VALUE) {
return (fd);
}
+#if _WIN32_WINNT < _WIN32_WINNT_VISTA
static void *
la_GetFunctionKernel32(const char *name)
{
}
return (void *)GetProcAddress(lib, name);
}
+#endif
static int
la_CreateHardLinkW(wchar_t *linkname, wchar_t *target)
{
- static BOOLEAN (WINAPI *f)(LPWSTR, LPWSTR, LPSECURITY_ATTRIBUTES);
- static int set;
+ static BOOL (WINAPI *f)(LPCWSTR, LPCWSTR, LPSECURITY_ATTRIBUTES);
BOOL ret;
+#if _WIN32_WINNT < _WIN32_WINNT_XP
+ static int set;
+/* CreateHardLinkW is available since XP and always loaded */
if (!set) {
set = 1;
f = la_GetFunctionKernel32("CreateHardLinkW");
}
+#else
+ f = CreateHardLinkW;
+#endif
if (!f) {
errno = ENOTSUP;
return (0);
la_CreateSymbolicLinkW(const wchar_t *linkname, const wchar_t *target,
int linktype) {
static BOOLEAN (WINAPI *f)(LPCWSTR, LPCWSTR, DWORD);
- static int set;
wchar_t *ttarget, *p;
- int len;
+ size_t len;
DWORD attrs = 0;
DWORD flags = 0;
DWORD newflags = 0;
BOOL ret = 0;
+#if _WIN32_WINNT < _WIN32_WINNT_VISTA
+/* CreateSymbolicLinkW is available since Vista and always loaded */
+ static int set;
if (!set) {
set = 1;
f = la_GetFunctionKernel32("CreateSymbolicLinkW");
}
+#else
+# if !defined(WINAPI_FAMILY_PARTITION) || WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
+ f = CreateSymbolicLinkW;
+# else
+ f = NULL;
+# endif
+#endif
if (!f)
return (0);
return (ARCHIVE_WARN);
}
-static struct archive_vtable *
-archive_write_disk_vtable(void)
-{
- static struct archive_vtable av;
- static int inited = 0;
-
- if (!inited) {
- av.archive_close = _archive_write_disk_close;
- av.archive_filter_bytes = _archive_write_disk_filter_bytes;
- av.archive_free = _archive_write_disk_free;
- av.archive_write_header = _archive_write_disk_header;
- av.archive_write_finish_entry
- = _archive_write_disk_finish_entry;
- av.archive_write_data = _archive_write_disk_data;
- av.archive_write_data_block = _archive_write_disk_data_block;
- inited = 1;
- }
- return (&av);
-}
+static const struct archive_vtable
+archive_write_disk_vtable = {
+ .archive_close = _archive_write_disk_close,
+ .archive_filter_bytes = _archive_write_disk_filter_bytes,
+ .archive_free = _archive_write_disk_free,
+ .archive_write_header = _archive_write_disk_header,
+ .archive_write_finish_entry = _archive_write_disk_finish_entry,
+ .archive_write_data = _archive_write_disk_data,
+ .archive_write_data_block = _archive_write_disk_data_block,
+};
static int64_t
_archive_write_disk_filter_bytes(struct archive *_a, int n)
* dir restores; the dir restore logic otherwise gets messed
* up by nonsense like "dir/.".
*/
- ret = cleanup_pathname(a);
+ ret = cleanup_pathname(a, a->name);
if (ret != ARCHIVE_OK)
return (ret);
if (la_ftruncate(a->fh, a->filesize) == -1) {
archive_set_error(&a->archive, errno,
"File size could not be restored");
+ CloseHandle(a->fh);
+ a->fh = INVALID_HANDLE_VALUE;
return (ARCHIVE_FAILED);
}
}
a->archive.magic = ARCHIVE_WRITE_DISK_MAGIC;
/* We're ready to write a header immediately. */
a->archive.state = ARCHIVE_STATE_HEADER;
- a->archive.vtable = archive_write_disk_vtable();
+ a->archive.vtable = &archive_write_disk_vtable;
a->start_time = time(NULL);
/* Query and restore the umask. */
umask(a->user_umask = umask(0));
free(a);
return (NULL);
}
+ a->path_safe.s[0] = 0;
return (&a->archive);
}
mode_t final_mode, mode;
int r;
DWORD attrs = 0;
+# if _WIN32_WINNT >= 0x0602 /* _WIN32_WINNT_WIN8 */
+ CREATEFILE2_EXTENDED_PARAMETERS createExParams;
+#endif
/* We identify hard/symlinks according to the link names. */
/* Since link(2) and symlink(2) don't handle modes, we're done here. */
linkname = archive_entry_hardlink_w(a->entry);
if (linkname != NULL) {
- wchar_t *linkfull, *namefull;
-
- linkfull = __la_win_permissive_name_w(linkname);
+ wchar_t *linksanitized, *linkfull, *namefull;
+ size_t l = (wcslen(linkname) + 1) * sizeof(wchar_t);
+ linksanitized = malloc(l);
+ if (linksanitized == NULL) {
+ archive_set_error(&a->archive, ENOMEM,
+ "Can't allocate memory for hardlink target");
+ return (-1);
+ }
+ memcpy(linksanitized, linkname, l);
+ r = cleanup_pathname(a, linksanitized);
+ if (r != ARCHIVE_OK) {
+ free(linksanitized);
+ return (r);
+ }
+ linkfull = __la_win_permissive_name_w(linksanitized);
+ free(linksanitized);
namefull = __la_win_permissive_name_w(a->name);
if (linkfull == NULL || namefull == NULL) {
errno = EINVAL;
a->todo = 0;
a->deferred = 0;
} else if (r == 0 && a->filesize > 0) {
+# if _WIN32_WINNT >= 0x0602 /* _WIN32_WINNT_WIN8 */
+ ZeroMemory(&createExParams, sizeof(createExParams));
+ createExParams.dwSize = sizeof(createExParams);
+ createExParams.dwFileAttributes = FILE_ATTRIBUTE_NORMAL;
+ a->fh = CreateFile2(namefull, GENERIC_WRITE, 0,
+ TRUNCATE_EXISTING, &createExParams);
+#else
a->fh = CreateFileW(namefull, GENERIC_WRITE, 0, NULL,
TRUNCATE_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
+#endif
if (a->fh == INVALID_HANDLE_VALUE) {
la_dosmaperr(GetLastError());
r = errno;
a->tmpname = NULL;
fullname = a->name;
/* O_WRONLY | O_CREAT | O_EXCL */
+# if _WIN32_WINNT >= 0x0602 /* _WIN32_WINNT_WIN8 */
+ ZeroMemory(&createExParams, sizeof(createExParams));
+ createExParams.dwSize = sizeof(createExParams);
+ createExParams.dwFileAttributes = FILE_ATTRIBUTE_NORMAL;
+ a->fh = CreateFile2(fullname, GENERIC_WRITE, 0,
+ CREATE_NEW, &createExParams);
+#else
a->fh = CreateFileW(fullname, GENERIC_WRITE, 0, NULL,
CREATE_NEW, FILE_ATTRIBUTE_NORMAL, NULL);
+#endif
if (a->fh == INVALID_HANDLE_VALUE &&
GetLastError() == ERROR_INVALID_NAME &&
fullname == a->name) {
fullname = __la_win_permissive_name_w(a->name);
+# if _WIN32_WINNT >= 0x0602 /* _WIN32_WINNT_WIN8 */
+ a->fh = CreateFile2(fullname, GENERIC_WRITE, 0,
+ CREATE_NEW, &createExParams);
+#else
a->fh = CreateFileW(fullname, GENERIC_WRITE, 0, NULL,
CREATE_NEW, FILE_ATTRIBUTE_NORMAL, NULL);
+#endif
}
if (a->fh == INVALID_HANDLE_VALUE) {
if (GetLastError() == ERROR_ACCESS_DENIED) {
return (ARCHIVE_FAILED);
}
}
+ if (!c)
+ break;
pn[0] = c;
pn++;
}
* set) any '..' in the path.
*/
static int
-cleanup_pathname(struct archive_write_disk *a)
+cleanup_pathname(struct archive_write_disk *a, wchar_t *name)
{
wchar_t *dest, *src, *p, *top;
wchar_t separator = L'\0';
- p = a->name;
+ p = name;
if (*p == L'\0') {
archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
"Invalid empty pathname");
if (*p == L'/')
*p = L'\\';
}
- p = a->name;
+ p = name;
/* Skip leading "\\.\" or "\\?\" or "\\?\UNC\" or
* "\\?\Volume{GUID}\"
return (ARCHIVE_FAILED);
} else
p += 4;
+ /* Network drive path like "\\<server-name>\<share-name>\file" */
+ } else if (p[0] == L'\\' && p[1] == L'\\') {
+ p += 2;
}
/* Skip leading drive letter from archives created
hw = NULL;
} else {
wchar_t *ws;
+# if _WIN32_WINNT >= 0x0602 /* _WIN32_WINNT_WIN8 */
+ CREATEFILE2_EXTENDED_PARAMETERS createExParams;
+#endif
if (S_ISLNK(mode))
return (ARCHIVE_OK);
ws = __la_win_permissive_name_w(name);
if (ws == NULL)
goto settimes_failed;
+# if _WIN32_WINNT >= 0x0602 /* _WIN32_WINNT_WIN8 */
+ ZeroMemory(&createExParams, sizeof(createExParams));
+ createExParams.dwSize = sizeof(createExParams);
+ createExParams.dwFileFlags = FILE_FLAG_BACKUP_SEMANTICS;
+ hw = CreateFile2(ws, FILE_WRITE_ATTRIBUTES, 0,
+ OPEN_EXISTING, &createExParams);
+#else
hw = CreateFileW(ws, FILE_WRITE_ATTRIBUTES,
0, NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, NULL);
+#endif
free(ws);
if (hw == INVALID_HANDLE_VALUE)
goto settimes_failed;
.Fn archive_set_error
to register an error code and message and
return
+.Cm ARCHIVE_FATAL .
.Bl -item -offset indent
.It
.Ft typedef int
const char *key, const char *value);
int (*open)(struct archive_write_filter *);
int (*write)(struct archive_write_filter *, const void *, size_t);
+ int (*flush)(struct archive_write_filter *);
int (*close)(struct archive_write_filter *);
int (*free)(struct archive_write_filter *);
void *data;
#define kAttributes 0x15
#define kEncodedHeader 0x17
+// Check that some windows file attribute constants are defined.
+// Reference: https://learn.microsoft.com/en-us/windows/win32/fileio/file-attribute-constants
+#ifndef FILE_ATTRIBUTE_READONLY
+#define FILE_ATTRIBUTE_READONLY 0x00000001
+#endif
+
+#ifndef FILE_ATTRIBUTE_DIRECTORY
+#define FILE_ATTRIBUTE_DIRECTORY 0x00000010
+#endif
+
+#ifndef FILE_ATTRIBUTE_ARCHIVE
+#define FILE_ATTRIBUTE_ARCHIVE 0x00000020
+#endif
+
+// This value is defined in 7zip with the comment "trick for Unix".
+//
+// 7z archives created on unix have this bit set in the high 16 bits of
+// the attr field along with the unix permissions.
+#define FILE_ATTRIBUTE_UNIX_EXTENSION 0x8000
+
enum la_zaction {
ARCHIVE_Z_FINISH,
ARCHIVE_Z_RUN
mode_t mode;
uint32_t crc32;
- signed int dir:1;
+ unsigned dir:1;
};
struct _7zip {
* High 16bits is unix mode.
* Low 16bits is Windows attributes.
*/
- uint32_t encattr, attr;
+ uint32_t encattr, attr = 0;
+
if (file->dir)
- attr = 0x8010;
+ attr |= FILE_ATTRIBUTE_DIRECTORY;
else
- attr = 0x8020;
+ attr |= FILE_ATTRIBUTE_ARCHIVE;
+
if ((file->mode & 0222) == 0)
- attr |= 1;/* Read Only. */
+ attr |= FILE_ATTRIBUTE_READONLY;
+
+ attr |= FILE_ATTRIBUTE_UNIX_EXTENSION;
attr |= ((uint32_t)file->mode) << 16;
+
archive_le32enc(&encattr, attr);
r = (int)compress_out(a, &encattr, 4, ARCHIVE_Z_RUN);
if (r < 0)
* of ugly hackery to convert a const * pointer to
* a non-const pointer. */
strm->next_in = (char *)(uintptr_t)(const void *)lastrm->next_in;
- strm->avail_in = lastrm->avail_in;
+ strm->avail_in = (uint32_t)lastrm->avail_in;
strm->total_in_lo32 = (uint32_t)(lastrm->total_in & 0xffffffff);
strm->total_in_hi32 = (uint32_t)(lastrm->total_in >> 32);
strm->next_out = (char *)lastrm->next_out;
- strm->avail_out = lastrm->avail_out;
+ strm->avail_out = (uint32_t)lastrm->avail_out;
strm->total_out_lo32 = (uint32_t)(lastrm->total_out & 0xffffffff);
strm->total_out_hi32 = (uint32_t)(lastrm->total_out >> 32);
if (BZ2_bzCompressInit(strm, level, 0, 30) != BZ_OK) {
* of ugly hackery to convert a const * pointer to
* a non-const pointer. */
strm->next_in = (char *)(uintptr_t)(const void *)lastrm->next_in;
- strm->avail_in = lastrm->avail_in;
+ strm->avail_in = (uint32_t)lastrm->avail_in;
strm->total_in_lo32 = (uint32_t)(lastrm->total_in & 0xffffffff);
strm->total_in_hi32 = (uint32_t)(lastrm->total_in >> 32);
strm->next_out = (char *)lastrm->next_out;
- strm->avail_out = lastrm->avail_out;
+ strm->avail_out = (uint32_t)lastrm->avail_out;
strm->total_out_lo32 = (uint32_t)(lastrm->total_out & 0xffffffff);
strm->total_out_hi32 = (uint32_t)(lastrm->total_out >> 32);
r = BZ2_bzCompress(strm,
+#include "archive_platform.h"
#include "archive.h"
/*
* ...but it feels a little better to do it like this:
*/
-static uint16_t swap16(uint16_t in) {
+static uint16_t la_swap16(uint16_t in) {
union {
uint16_t s[2];
uint8_t c[4];
/* NOTREACHED */
}
-static uint32_t swap32(uint32_t in) {
+static uint32_t la_swap32(uint32_t in) {
union {
uint32_t l;
uint16_t s[2];
U.s[1] = t;
} else if (U.c[3]) { /* Big-endian */
U.l = in;
- U.s[0] = swap16(U.s[0]);
- U.s[1] = swap16(U.s[1]);
+ U.s[0] = la_swap16(U.s[0]);
+ U.s[1] = la_swap16(U.s[1]);
} else { /* PDP-endian */
U.l = in;
}
/* Include trailing null */
pathlength = (int)len + 1;
- h.h_magic = swap16(070707);
- h.h_dev = swap16(archive_entry_dev(entry));
+ h.h_magic = la_swap16(070707);
+ h.h_dev = la_swap16(archive_entry_dev(entry));
ino = synthesize_ino_value(cpio, entry);
if (ino < 0) {
ret_final = ARCHIVE_FATAL;
goto exit_write_header;
}
- h.h_ino = swap16(ino);
+ h.h_ino = la_swap16((uint16_t)ino);
h.h_mode = archive_entry_mode(entry);
if (((h.h_mode & AE_IFMT) == AE_IFSOCK) || ((h.h_mode & AE_IFMT) == AE_IFIFO)) {
/* we could turn off AE_IFREG here, but it does no harm, */
/* and allows v7 cpio to read the entry without confusion */
}
- h.h_mode = swap16(h.h_mode);
+ h.h_mode = la_swap16(h.h_mode);
- h.h_uid = swap16(archive_entry_uid(entry));
- h.h_gid = swap16(archive_entry_gid(entry));
- h.h_nlink = swap16(archive_entry_nlink(entry));
+ h.h_uid = la_swap16((uint16_t)archive_entry_uid(entry));
+ h.h_gid = la_swap16((uint16_t)archive_entry_gid(entry));
+ h.h_nlink = la_swap16((uint16_t)archive_entry_nlink(entry));
if (archive_entry_filetype(entry) == AE_IFBLK
|| archive_entry_filetype(entry) == AE_IFCHR)
- h.h_majmin = swap16(archive_entry_rdev(entry));
+ h.h_majmin = la_swap16(archive_entry_rdev(entry));
else
h.h_majmin = 0;
- h.h_mtime = swap32(archive_entry_mtime(entry));
- h.h_namesize = swap16(pathlength);
+ h.h_mtime = la_swap32((uint32_t)archive_entry_mtime(entry));
+ h.h_namesize = la_swap16(pathlength);
/* Non-regular files don't store bodies. */
if (archive_entry_filetype(entry) != AE_IFREG)
ret_final = ARCHIVE_FATAL;
goto exit_write_header;
}
- h.h_filesize = swap32(strlen(p)); /* symlink */
+ h.h_filesize = la_swap32((uint32_t)strlen(p)); /* symlink */
} else {
if ((a->archive.archive_format == ARCHIVE_FORMAT_CPIO_PWB) &&
(archive_entry_size(entry) > 256*256*256-1)) {
ret_final = ARCHIVE_FAILED;
goto exit_write_header;
}
- h.h_filesize = swap32(archive_entry_size(entry)); /* file */
+ h.h_filesize = la_swap32((uint32_t)archive_entry_size(entry)); /* file */
}
ret = __archive_write_output(a, &h, HSIZE);
struct extr_rec *current;
} extr_rec_list;
- signed int virtual:1;
+ unsigned int virtual:1;
/* If set to one, this file type is a directory.
* A convenience flag to be used as
* "archive_entry_filetype(isoent->file->entry) == AE_IFDIR".
*/
- signed int dir:1;
+ unsigned int dir:1;
};
struct hardlink {
#define VOLUME_IDENTIFIER_SIZE 32
/*
- * Usage : !zisofs [DEFAULT]
+ * Usage : !zisofs [DEFAULT]
* : Disable to generate RRIP 'ZF' extension.
* : zisofs
* : Make files zisofs file and generate RRIP 'ZF'
uint64_t bytes_remaining;
int need_multi_extent;
- /* Temporary string buffer for Joliet extension. */
+ /* Temporary string buffer for Joliet extension. */
struct archive_string utf16be;
struct archive_string mbs;
/* Used for making zisofs. */
struct {
- signed int detect_magic:1;
- signed int making:1;
- signed int allzero:1;
+ unsigned int detect_magic:1;
+ unsigned int making:1;
+ unsigned int allzero:1;
unsigned char magic_buffer[64];
int magic_cnt;
static void
get_tmfromtime(struct tm *tm, time_t *t)
{
-#if HAVE_LOCALTIME_R
+#if HAVE_LOCALTIME_S
+ localtime_s(tm, t);
+#elif HAVE_LOCALTIME_R
tzset();
localtime_r(t, tm);
-#elif HAVE__LOCALTIME64_S
- __time64_t tmp_t = (__time64_t) *t; //time_t may be shorter than 64 bits
- _localtime64_s(tm, &tmp_t);
#else
memcpy(tm, localtime(t), sizeof(*tm));
#endif
}
memset(info.s, 0, info_size);
opt = 0;
-#if defined(HAVE__CTIME64_S)
- {
- __time64_t iso9660_birth_time_tmp = (__time64_t) iso9660->birth_time; //time_t may be shorter than 64 bits
- _ctime64_s(buf, sizeof(buf), &(iso9660_birth_time_tmp));
- }
+#if defined(HAVE_CTIME_S)
+ ctime_s(buf, sizeof(buf), &(iso9660->birth_time));
#elif defined(HAVE_CTIME_R)
ctime_r(&(iso9660->birth_time), buf);
#else
* This comparing rule is according to ISO9660 Standard 6.9.1
*/
static int
+__LA_LIBC_CC
_compare_path_table(const void *v1, const void *v2)
{
const struct isoent *p1, *p2;
}
static int
+__LA_LIBC_CC
_compare_path_table_joliet(const void *v1, const void *v2)
{
const struct isoent *p1, *p2;
uint64_t pz_uncompressed_size;
size_t uncompressed_buffer_size;
- signed int initialized:1;
- signed int header_passed:1;
+ unsigned int initialized:1;
+ unsigned int header_passed:1;
uint32_t pz_offset;
unsigned char *block_pointers;
static void sparse_list_clear(struct pax *);
static int sparse_list_add(struct pax *, int64_t, int64_t);
static char *url_encode(const char *in);
+static time_t get_ustar_max_mtime(void);
/*
* Set output format to 'restricted pax' format.
struct archive_string s;
char *encoded_value;
+ if (encoded_name == NULL)
+ return;
+
if (pax->flags & WRITE_LIBARCHIVE_XATTR) {
encoded_value = base64_encode((const char *)value, value_len);
-
- if (encoded_name != NULL && encoded_value != NULL) {
+ if (encoded_value != NULL) {
archive_string_init(&s);
archive_strcpy(&s, "LIBARCHIVE.xattr.");
archive_strcat(&s, encoded_name);
archive_entry_xattr_next(entry, &name, &value, &size);
url_encoded_name = url_encode(name);
- if (url_encoded_name != NULL) {
+ if (url_encoded_name == NULL)
+ goto malloc_error;
+ else {
/* Convert narrow-character to UTF-8. */
r = archive_strcpy_l(&(pax->l_url_encoded_name),
url_encoded_name, pax->sconv_utf8);
free(url_encoded_name); /* Done with this. */
if (r == 0)
encoded_name = pax->l_url_encoded_name.s;
- else if (errno == ENOMEM) {
- archive_set_error(&a->archive, ENOMEM,
- "Can't allocate memory for Linkname");
- return (ARCHIVE_FATAL);
+ else if (r == -1)
+ goto malloc_error;
+ else {
+ archive_set_error(&a->archive,
+ ARCHIVE_ERRNO_MISC,
+ "Error encoding pax extended attribute");
+ return (ARCHIVE_FAILED);
}
}
}
return (ARCHIVE_OK);
+malloc_error:
+ archive_set_error(&a->archive, ENOMEM, "Can't allocate memory");
+ return (ARCHIVE_FATAL);
}
static int
need_extension = 0;
pax = (struct pax *)a->format_data;
+ const time_t ustar_max_mtime = get_ustar_max_mtime();
+
/* Sanity check. */
if (archive_entry_pathname(entry_original) == NULL) {
archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
archive_string_init(&entry_name);
archive_strcpy(&entry_name, archive_entry_pathname(entry_main));
- /* If file size is too large, add 'size' to pax extended attrs. */
+ /* If file size is too large, we need pax extended attrs. */
if (archive_entry_size(entry_main) >= (((int64_t)1) << 33)) {
- add_pax_attr_int(&(pax->pax_header), "size",
- archive_entry_size(entry_main));
need_extension = 1;
}
}
/*
- * Technically, the mtime field in the ustar header can
- * support 33 bits, but many platforms use signed 32-bit time
- * values. The cutoff of 0x7fffffff here is a compromise.
* Yes, this check is duplicated just below; this helps to
* avoid writing an mtime attribute just to handle a
* high-resolution timestamp in "restricted pax" mode.
*/
if (!need_extension &&
((archive_entry_mtime(entry_main) < 0)
- || (archive_entry_mtime(entry_main) >= 0x7fffffff)))
+ || (archive_entry_mtime(entry_main) >= ustar_max_mtime)))
need_extension = 1;
/* I use a star-compatible file flag attribute. */
if (a->archive.archive_format != ARCHIVE_FORMAT_TAR_PAX_RESTRICTED ||
need_extension) {
if (archive_entry_mtime(entry_main) < 0 ||
- archive_entry_mtime(entry_main) >= 0x7fffffff ||
+ archive_entry_mtime(entry_main) >= ustar_max_mtime ||
archive_entry_mtime_nsec(entry_main) != 0)
add_pax_attr_time(&(pax->pax_header), "mtime",
archive_entry_mtime(entry_main),
mapsize + pax->sparse_map_padding + sparse_total);
}
+ /* If file size is too large, add 'size' to pax extended attrs. */
+ if (archive_entry_size(entry_main) >= (((int64_t)1) << 33)) {
+ add_pax_attr_int(&(pax->pax_header), "size",
+ archive_entry_size(entry_main));
+ }
+
/* Format 'ustar' header for main entry.
*
* The trouble with file size: If the reader can't understand
/* Copy mtime, but clip to ustar limits. */
s = archive_entry_mtime(entry_main);
if (s < 0) { s = 0; }
- if (s >= 0x7fffffff) { s = 0x7fffffff; }
+ if (s > ustar_max_mtime) { s = ustar_max_mtime; }
archive_entry_set_mtime(pax_attr_entry, s, 0);
/* Standard ustar doesn't support atime. */
* to having clients override it.
*/
#if HAVE_GETPID && 0 /* Disable this for now; see above comment. */
- sprintf(buff, "PaxHeader.%d", getpid());
+ snprintf(buff, sizeof(buff), "PaxHeader.%d", getpid());
#else
/* If the platform can't fetch the pid, don't include it. */
strcpy(buff, "PaxHeader");
{
const char *s;
char *d;
- int out_len = 0;
+ size_t out_len = 0;
char *out;
for (s = in; *s != '\0'; s++) {
- if (*s < 33 || *s > 126 || *s == '%' || *s == '=')
+ if (*s < 33 || *s > 126 || *s == '%' || *s == '=') {
+ if (SIZE_MAX - out_len < 4)
+ return (NULL);
out_len += 3;
- else
+ } else {
+ if (SIZE_MAX - out_len < 2)
+ return (NULL);
out_len++;
+ }
}
out = (char *)malloc(out_len + 1);
return (_sparse_list_add_block(pax, offset, length, 0));
}
+static time_t
+get_ustar_max_mtime(void)
+{
+ /*
+ * Technically, the mtime field in the ustar header can
+ * support 33 bits. We are using all of them to keep
+ * tar/test/test_option_C_mtree.c simple and passing after 2038.
+ * For platforms that use signed 32-bit time values we
+ * use the 32-bit maximum.
+ */
+ if (sizeof(time_t) > sizeof(int32_t))
+ return (time_t)0x1ffffffff;
+ else
+ return (time_t)0x7fffffff;
+}
{
/** like strftime(3) but for time_t objects */
struct tm *rt;
-#if defined(HAVE_GMTIME_R) || defined(HAVE__GMTIME64_S)
+#if defined(HAVE_GMTIME_R) || defined(HAVE_GMTIME_S)
struct tm timeHere;
#endif
-#if defined(HAVE__GMTIME64_S)
- errno_t terr;
- __time64_t tmptime;
-#endif
char strtime[100];
size_t len;
-#ifdef HAVE_GMTIME_R
- if ((rt = gmtime_r(&t, &timeHere)) == NULL)
- return;
-#elif defined(HAVE__GMTIME64_S)
- tmptime = t;
- terr = _gmtime64_s(&timeHere, &tmptime);
- if (terr)
- rt = NULL;
- else
- rt = &timeHere;
+#if defined(HAVE_GMTIME_S)
+ rt = gmtime_s(&timeHere, &t) ? NULL : &timeHere;
+#elif defined(HAVE_GMTIME_R)
+ rt = gmtime_r(&t, &timeHere);
#else
- if ((rt = gmtime(&t)) == NULL)
- return;
+ rt = gmtime(&t);
#endif
+ if (!rt)
+ return;
/* leave the hard yacker to our role model strftime() */
len = strftime(strtime, sizeof(strtime)-1, fmt, rt);
archive_strncat(as, strtime, len);
struct heap_data data;
struct archive_string script;
- signed int virtual:1;
- signed int dir:1;
+ unsigned int virtual:1;
+ unsigned int dir:1;
};
struct hardlink {
{
char timestr[100];
struct tm tm;
-#if defined(HAVE__GMTIME64_S)
- __time64_t tmptime;
-#endif
-#if defined(HAVE_GMTIME_R)
+#if defined(HAVE_GMTIME_S)
+ gmtime_s(&tm, &t);
+#elif defined(HAVE_GMTIME_R)
gmtime_r(&t, &tm);
-#elif defined(HAVE__GMTIME64_S)
- tmptime = t;
- _gmtime64_s(&tm, &tmptime);
#else
memcpy(&tm, gmtime(&t), sizeof(tm));
#endif
/* We may know the size, but never the CRC. */
zip->entry_flags |= ZIP_ENTRY_FLAG_LENGTH_AT_END;
} else {
- /* We don't know the size. In this case, we prefer
- * deflate (it has a clear end-of-data marker which
- * makes length-at-end more reliable) and will
- * enable Zip64 extensions unless we're told not to.
+ /* We don't know the size. Use the default
+ * compression unless specified otherwise.
+ * We enable Zip64 extensions unless we're told not to.
*/
- zip->entry_compression = COMPRESSION_DEFAULT;
+
+ zip->entry_compression = zip->requested_compression;
+ if(zip->entry_compression == COMPRESSION_UNSPECIFIED){
+ zip->entry_compression = COMPRESSION_DEFAULT;
+ }
+
zip->entry_flags |= ZIP_ENTRY_FLAG_LENGTH_AT_END;
if ((zip->flags & ZIP_FLAG_AVOID_ZIP64) == 0) {
zip->entry_uses_zip64 = 1;
{
struct tm *t;
unsigned int dt;
-#if defined(HAVE_LOCALTIME_R) || defined(HAVE__LOCALTIME64_S)
+#if defined(HAVE_LOCALTIME_R) || defined(HAVE_LOCALTIME_S)
struct tm tmbuf;
#endif
-#if defined(HAVE__LOCALTIME64_S)
- errno_t terr;
- __time64_t tmptime;
-#endif
- /* This will not preserve time when creating/extracting the archive
- * on two systems with different time zones. */
-#if defined(HAVE_LOCALTIME_R)
+#if defined(HAVE_LOCALTIME_S)
+ t = localtime_s(&tmbuf, &unix_time) ? NULL : &tmbuf;
+#elif defined(HAVE_LOCALTIME_R)
t = localtime_r(&unix_time, &tmbuf);
-#elif defined(HAVE__LOCALTIME64_S)
- tmptime = unix_time;
- terr = _localtime64_s(&tmbuf, &tmptime);
- if (terr)
- t = NULL;
- else
- t = &tmbuf;
#else
t = localtime(&unix_time);
#endif
The value is interpreted as a decimal integer specifying the
compression level. Supported values depend on the library version,
common values are from 1 to 22.
+.It Cm long
+Enables long distance matching. The value is interpreted as a
+decimal integer specifying log2 window size in bytes. Values from
+10 to 30 for 32 bit, or 31 for 64 bit, are supported.
+.It Cm threads
+The value is interpreted as a decimal integer specifying the
+number of threads for multi-threaded zstd compression.
+If set to 0, zstd will attempt to detect and use the number
+of physical CPU cores.
.El
.It Format 7zip
.Bl -tag -compact -width indent
#define HAVE_FCNTL 1
#define HAVE_FCNTL_H 1
#define HAVE_FDOPENDIR 1
+#define HAVE_FNMATCH 1
+#define HAVE_FNMATCH_H 1
#define HAVE_FORK 1
#define HAVE_FSEEKO 1
#define HAVE_FSTAT 1
#define HAVE_GETEUID 1
#define HAVE_GETGRGID_R 1
#define HAVE_GETGRNAM_R 1
+#define HAVE_GETLINE 1
+#define HAVE_GETOPT_OPTRESET 1
#define HAVE_GETPID 1
#define HAVE_GETPWNAM_R 1
#define HAVE_GETPWUID_R 1
#define HAVE_SYS_MOUNT_H 1
#define HAVE_SYS_PARAM_H 1
#define HAVE_SYS_POLL_H 1
+#define HAVE_SYS_QUEUE_H 1
#define HAVE_SYS_SELECT_H 1
#define HAVE_SYS_STATVFS_H 1
#define HAVE_SYS_STAT_H 1
#define HAVE_WMEMCPY 1
#define HAVE_WMEMMOVE 1
#define HAVE_ZLIB_H 1
-#define TIME_WITH_SYS_TIME 1
+#define HAVE_SYS_TIME_H 1
+
+#if __FreeBSD_version >= 800505
+#define HAVE_LIBLZMA 1
+#define HAVE_LZMA_H 1
+#if __FreeBSD_version >= 1002504
+#define HAVE_LZMA_STREAM_ENCODER_MT 1
+#endif
+#endif
#if __FreeBSD_version >= 1100056
#define HAVE_FUTIMENS 1
It appeared in 1977 as part of PWB/UNIX 1.0, the
.Dq Programmer's Work Bench
derived from
-.At 6th Edition UNIX
+.At v6
that was used internally at AT&T.
Both the new binary and old character formats were in use
by 1980, according to the System III source released
__archive_create_child(const char *cmd, int *child_stdin, int *child_stdout,
pid_t *out_child)
{
- pid_t child;
+ pid_t child = -1;
int stdin_pipe[2], stdout_pipe[2], tmp;
#if HAVE_POSIX_SPAWNP
posix_spawn_file_actions_t actions;
#include "filter_fork.h"
+#if !defined(WINAPI_FAMILY_PARTITION) || WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
+/* There are some editions of Windows ("nano server," for example) that
+ * do not host user32.dll. If we want to keep running on those editions,
+ * we need to delay-load WaitForInputIdle. */
+static void *
+la_GetFunctionUser32(const char *name)
+{
+ static HINSTANCE lib;
+ static int set;
+ if (!set) {
+ set = 1;
+ lib = LoadLibrary(TEXT("user32.dll"));
+ }
+ if (lib == NULL) {
+ return NULL;
+ }
+ return (void *)GetProcAddress(lib, name);
+}
+
+static int
+la_WaitForInputIdle(HANDLE hProcess, DWORD dwMilliseconds)
+{
+ static DWORD (WINAPI *f)(HANDLE, DWORD);
+ static int set;
+
+ if (!set) {
+ set = 1;
+ f = la_GetFunctionUser32("WaitForInputIdle");
+ }
+
+ if (!f) {
+ /* An inability to wait for input idle is
+ * not _good_, but it is not catastrophic. */
+ return WAIT_FAILED;
+ }
+ return (*f)(hProcess, dwMilliseconds);
+}
+
int
__archive_create_child(const char *cmd, int *child_stdin, int *child_stdout,
HANDLE *out_child)
if (CreateProcessA(fullpath.s, cmdline.s, NULL, NULL, TRUE, 0,
NULL, NULL, &staInfo, &childInfo) == 0)
goto fail;
- WaitForInputIdle(childInfo.hProcess, INFINITE);
+ la_WaitForInputIdle(childInfo.hProcess, INFINITE);
CloseHandle(childInfo.hProcess);
CloseHandle(childInfo.hThread);
__archive_cmdline_free(acmd);
return ARCHIVE_FAILED;
}
+#else /* !WINAPI_PARTITION_DESKTOP */
+int
+__archive_create_child(const char *cmd, int *child_stdin, int *child_stdout, HANDLE *out_child)
+{
+ (void)cmd; (void)child_stdin; (void) child_stdout; (void) out_child;
+ return ARCHIVE_FAILED;
+}
+#endif /* !WINAPI_PARTITION_DESKTOP */
void
__archive_check_child(int in, int out)
.It
most common cpio archive formats,
.It
-ISO9660 CD images (including RockRidge and Joliet extensions),
-.It
-Zip archives,
+7-Zip archives,
.It
ar archives (including GNU/SysV and BSD extensions),
.It
Microsoft CAB archives,
.It
+ISO9660 CD images (including RockRidge and Joliet extensions),
+.It
LHA archives,
.It
mtree file tree descriptions,
.It
-RAR archives,
+RAR and most RAR5 archives,
.It
-XAR archives.
+WARC archives,
+.It
+XAR archives,
+.It
+Zip archives.
.El
The library automatically detects archives compressed with
-.Xr gzip 1 ,
+.Xr compress 1 ,
.Xr bzip2 1 ,
-.Xr xz 1 ,
+.Xr grzip 1 ,
+.Xr gzip 1 ,
+.Xr lrzip 1 ,
+.Xr lz4 1 ,
.Xr lzip 1 ,
+.Xr lzop 1 ,
+.Xr xz 1 ,
or
-.Xr compress 1
-and decompresses them transparently.
+.Xr zstd 1
+and decompresses them transparently. Decompression of some formats
+requires external decompressor utilities.
It can similarly detect and decode archives processed with
.Xr uuencode 1
or which have an
.It
cpio archives,
.It
-Zip archive,
+7-Zip archives,
+.It
+ar archives,
.It
two different variants of shar archives,
.It
ISO9660 CD images,
.It
-7-Zip archives,
-.It
-ar archives,
-.It
mtree file tree descriptions,
.It
-XAR archives.
+XAR archives,
+.It
+Zip archive.
.El
Pax interchange format is an extension of the tar archive format that
eliminates essentially all of the limitations of historic tar formats
test_compat_solaris_pax_sparse.c
test_compat_solaris_tar_acl.c
test_compat_star_acl.c
+ test_compat_tar_directory.c
test_compat_tar_hardlink.c
test_compat_uudecode.c
test_compat_uudecode_large.c
test_read_filter_program.c
test_read_filter_program_signature.c
test_read_filter_uudecode.c
+ test_read_filter_uudecode_raw.c
test_read_format_7zip.c
test_read_format_7zip_encryption_data.c
test_read_format_7zip_encryption_header.c
test_read_format_rar_encryption_header.c
test_read_format_rar_encryption_partially.c
test_read_format_rar_invalid1.c
+ test_read_format_rar_filter.c
test_read_format_rar5.c
test_read_format_raw.c
test_read_format_tar.c
test_read_format_tar_empty_with_gnulabel.c
test_read_format_tar_empty_pax.c
test_read_format_tar_filename.c
+ test_read_format_tar_invalid_pax_size.c
test_read_format_tbz.c
test_read_format_tgz.c
test_read_format_tlz.c
test_write_format_zip_compression_store.c
test_write_format_zip_empty.c
test_write_format_zip_empty_zip64.c
+ test_write_format_zip_entry_size_unset.c
test_write_format_zip_file.c
test_write_format_zip_file_zip64.c
test_write_format_zip_large.c
DEFINE_TEST(test_compat_solaris_tar_acl)
DEFINE_TEST(test_compat_star_acl_posix1e)
DEFINE_TEST(test_compat_star_acl_nfs4)
+DEFINE_TEST(test_compat_tar_directory)
DEFINE_TEST(test_compat_tar_hardlink)
DEFINE_TEST(test_compat_uudecode)
DEFINE_TEST(test_compat_uudecode_large)
DEFINE_TEST(test_read_filter_program_signature)
DEFINE_TEST(test_read_filter_uudecode)
DEFINE_TEST(test_read_filter_uudecode_base64)
+DEFINE_TEST(test_read_filter_uudecode_raw)
+DEFINE_TEST(test_read_filter_uudecode_base64_raw)
DEFINE_TEST(test_read_format_7zip)
DEFINE_TEST(test_read_format_7zip_bzip2)
DEFINE_TEST(test_read_format_7zip_from_fd)
DEFINE_TEST(test_read_format_7zip_copy)
DEFINE_TEST(test_read_format_7zip_deflate)
+DEFINE_TEST(test_read_format_7zip_zstd)
+DEFINE_TEST(test_read_format_7zip_zstd_solid)
+DEFINE_TEST(test_read_format_7zip_zstd_bcj)
+DEFINE_TEST(test_read_format_7zip_zstd_nobcj)
DEFINE_TEST(test_read_format_7zip_empty)
DEFINE_TEST(test_read_format_7zip_lzma1)
DEFINE_TEST(test_read_format_7zip_lzma2)
+DEFINE_TEST(test_read_format_7zip_zstd_arm)
+DEFINE_TEST(test_read_format_7zip_lzma2_arm)
DEFINE_TEST(test_read_format_7zip_ppmd)
+DEFINE_TEST(test_read_format_7zip_lzma2_arm64)
+DEFINE_TEST(test_read_format_7zip_deflate_arm64)
+DEFINE_TEST(test_read_format_7zip_win_attrib)
DEFINE_TEST(test_read_format_7zip_encryption_data)
DEFINE_TEST(test_read_format_7zip_encryption_header)
DEFINE_TEST(test_read_format_7zip_encryption_partially)
DEFINE_TEST(test_read_format_mtree_nomagic_v2_netbsd_form)
DEFINE_TEST(test_read_format_mtree_nonexistent_contents_file)
DEFINE_TEST(test_read_format_mtree_noprint)
+DEFINE_TEST(test_read_format_mtree_tab)
DEFINE_TEST(test_read_format_mtree_crash747)
DEFINE_TEST(test_read_format_pax_bz2)
DEFINE_TEST(test_read_format_rar5_set_format)
DEFINE_TEST(test_read_format_rar5_nonempty_dir_stream)
DEFINE_TEST(test_read_format_rar5_fileattr)
DEFINE_TEST(test_read_format_rar5_different_window_size)
+DEFINE_TEST(test_read_format_rar5_window_buf_and_size_desync)
DEFINE_TEST(test_read_format_rar5_arm_filter_on_window_boundary)
DEFINE_TEST(test_read_format_rar5_different_solid_window_size)
DEFINE_TEST(test_read_format_rar5_different_winsize_on_merge)
DEFINE_TEST(test_read_format_rar5_block_size_is_too_small)
+DEFINE_TEST(test_read_format_rar5_sfx)
+DEFINE_TEST(test_read_format_rar5_decode_number_out_of_bounds_read)
+DEFINE_TEST(test_read_format_rar5_bad_window_size_in_multiarchive_file)
+DEFINE_TEST(test_read_format_rar5_read_data_block_uninitialized_offset)
DEFINE_TEST(test_read_format_rar_set_format)
DEFINE_TEST(test_read_format_rar_basic)
DEFINE_TEST(test_read_format_rar_subblock)
DEFINE_TEST(test_read_format_rar_encryption_data)
DEFINE_TEST(test_read_format_rar_encryption_header)
DEFINE_TEST(test_read_format_rar_encryption_partially)
+DEFINE_TEST(test_read_format_rar_filter)
DEFINE_TEST(test_read_format_rar_invalid1)
DEFINE_TEST(test_read_format_raw)
DEFINE_TEST(test_read_format_tar)
DEFINE_TEST(test_read_format_tar_empty_pax)
DEFINE_TEST(test_read_format_tar_empty_with_gnulabel)
DEFINE_TEST(test_read_format_tar_filename)
+DEFINE_TEST(test_read_format_tar_invalid_pax_size)
DEFINE_TEST(test_read_format_tbz)
DEFINE_TEST(test_read_format_tgz)
DEFINE_TEST(test_read_format_tlz)
DEFINE_TEST(test_read_format_zip_bzip2_one_file_blockread)
DEFINE_TEST(test_read_format_zip_bzip2_multi)
DEFINE_TEST(test_read_format_zip_bzip2_multi_blockread)
+DEFINE_TEST(test_read_format_zip_zstd_one_file)
+DEFINE_TEST(test_read_format_zip_zstd_one_file_blockread)
+DEFINE_TEST(test_read_format_zip_zstd_multi)
+DEFINE_TEST(test_read_format_zip_zstd_multi_blockread)
DEFINE_TEST(test_read_format_zip_xz_multi)
DEFINE_TEST(test_read_format_zip_xz_multi_blockread)
DEFINE_TEST(test_read_format_zip_ppmd8_crash_1)
DEFINE_TEST(test_write_format_zip_compression_store)
DEFINE_TEST(test_write_format_zip_empty)
DEFINE_TEST(test_write_format_zip_empty_zip64)
+DEFINE_TEST(test_write_format_zip_size_unset)
DEFINE_TEST(test_write_format_zip_file)
DEFINE_TEST(test_write_format_zip_file_zip64)
DEFINE_TEST(test_write_format_zip_large)
assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae));
for (i = 0; i < acls_dir_cnt; ++i) {
- sprintf(buff, "dir%d", i);
+ snprintf(buff, sizeof(buff), "dir%d", i);
archive_entry_set_pathname(ae, buff);
archive_entry_set_filetype(ae, AE_IFDIR);
archive_entry_set_perm(ae, 0654);
/* Verify single-permission dirs on disk. */
for (i = 0; i < dircnt; ++i) {
- sprintf(buff, "dir%d", i);
+ snprintf(buff, sizeof(buff), "dir%d", i);
assertEqualInt(0, stat(buff, &st));
assertEqualInt(st.st_mtime, 123456 + i);
#if ARCHIVE_ACL_SUNOS_NFS4
/* This is the (hopefully) final versioning API. */
assertEqualInt(ARCHIVE_VERSION_NUMBER, archive_version_number());
- sprintf(buff, "libarchive %d.%d.%d",
+ snprintf(buff, sizeof(buff), "libarchive %d.%d.%d",
archive_version_number() / 1000000,
(archive_version_number() / 1000) % 1000,
archive_version_number() % 1000);
struct archive_entry *ae;
struct archive *m;
+#if defined(_WIN32) && !defined(__CYGWIN__)
+ skipping("Can't set ctime on Windows");
+ return;
+#endif
+
if (!assert((m = archive_match_new()) != NULL))
return;
if (!assert((ae = archive_entry_new()) != NULL)) {
struct archive_entry *ae;
struct archive *m;
+#if defined(_WIN32) && !defined(__CYGWIN__)
+ skipping("Can't set ctime on Windows");
+ return;
+#endif
+
if (!assert((m = archive_match_new()) != NULL))
return;
if (!assert((ae = archive_entry_new()) != NULL)) {
struct archive_entry *ae;
struct archive *m;
+#if defined(_WIN32) && !defined(__CYGWIN__)
+ skipping("Can't set ctime on Windows");
+ return;
+#endif
+
if (!assert((m = archive_match_new()) != NULL))
return;
if (!assert((ae = archive_entry_new()) != NULL)) {
struct archive_entry *ae;
struct archive *m;
+#if defined(_WIN32) && !defined(__CYGWIN__)
+ skipping("Can't set ctime on Windows");
+ return;
+#endif
+
if (!assert((m = archive_match_new()) != NULL))
return;
if (!assert((ae = archive_entry_new()) != NULL)) {
struct archive_entry *ae;
struct archive *m;
+#if defined(_WIN32) && !defined(__CYGWIN__)
+ skipping("Can't set ctime on Windows");
+ return;
+#endif
+
if (!assert((m = archive_match_new()) != NULL))
return;
if (!assert((ae = archive_entry_new()) != NULL)) {
struct archive_entry *ae;
struct archive *m;
+#if defined(_WIN32) && !defined(__CYGWIN__)
+ skipping("Can't set ctime on Windows");
+ return;
+#endif
+
if (!assert((m = archive_match_new()) != NULL))
return;
if (!assert((ae = archive_entry_new()) != NULL)) {
assertEqualInt(0, archive_mstring_update_utf8(a, &mstr, "EEEEE---H"));
check_string(a, &mstr, sc, "EEEEE---H", L"EEEEE---H");
+ archive_mstring_clean(&mstr);
assertEqualInt(ARCHIVE_OK, archive_read_free(a));
}
return 1;
}
-static int
-cannot(void)
-{
- return 0;
-}
-
DEFINE_TEST(test_archive_write_add_filter_by_name_b64encode)
{
test_filter_by_name("b64encode", ARCHIVE_FILTER_UU, canAlways);
DEFINE_TEST(test_archive_write_add_filter_by_name_lzip)
{
- test_filter_by_name("lzip", ARCHIVE_FILTER_LZIP, cannot);
+ test_filter_by_name("lzip", ARCHIVE_FILTER_LZIP, canLzip);
}
DEFINE_TEST(test_archive_write_add_filter_by_name_lzma)
{
- test_filter_by_name("lzma", ARCHIVE_FILTER_LZMA, cannot);
+ test_filter_by_name("lzma", ARCHIVE_FILTER_LZMA, canLzma);
}
DEFINE_TEST(test_archive_write_add_filter_by_name_lzop)
DEFINE_TEST(test_archive_write_add_filter_by_name_xz)
{
- test_filter_by_name("xz", ARCHIVE_FILTER_XZ, cannot);
+ test_filter_by_name("xz", ARCHIVE_FILTER_XZ, canXz);
}
DEFINE_TEST(test_archive_write_add_filter_by_name_zstd)
--- /dev/null
+/*-
+ * Copyright (c) 2021 Samanta Navarro
+ * 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$");
+
+/*
+ * Background: Original tar file format did not use its linkflag to
+ * specify directories. Instead regular files simply have a slash
+ * appended to their names. No data blocks follow directories in
+ * archives. This means that a possibly specified file size must not
+ * be used to determine the amount of data blocks to skip.
+ */
+
+static void
+test_compat_tar_directory_1(void)
+{
+ char name[] = "test_compat_tar_directory_1.tar";
+ struct archive_entry *ae;
+ struct archive *a;
+
+ assert((a = archive_read_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
+ extract_reference_file(name);
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_open_filename(a, name, 10240));
+
+ /* Read first entry, which is a directory in a regular file header. */
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualString("directory1/", archive_entry_pathname(ae));
+ assertEqualInt(AE_IFDIR, archive_entry_filetype(ae));
+ assertEqualInt(1, archive_entry_size(ae));
+
+ /* Read second entry, which is a ustar directory entry. */
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualString("directory2/", archive_entry_pathname(ae));
+ assertEqualInt(AE_IFDIR, archive_entry_filetype(ae));
+ assertEqualInt(0, archive_entry_size(ae));
+
+ /* Verify the end-of-archive. */
+ assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
+
+ /* Verify that the format detection worked. */
+ assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_NONE);
+ assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR);
+
+ assertEqualInt(ARCHIVE_OK, archive_read_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+}
+
+DEFINE_TEST(test_compat_tar_directory)
+{
+ test_compat_tar_directory_1();
+}
+
+
--- /dev/null
+$FreeBSD$
+begin 644 test_compat_tar_directory_1.tar
+M9&ER96-T;W)Y,2\`````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````#`P,#`W,#``,#`P,#`P,``P,#`P,#`P`#`P,#`P,#`P,#`Q
+M`#`P,#`P,#`P,#`P`#`P-C4Q-0`@````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M``````````````````````!D:7)E8W1O<GDR+P``````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````,#`P,#<P,``P,#`P,#`P`#`P
+M,#`P,#``,#`P,#`P,#`P,#``,#`P,#`P,#`P,#``,#`V-3$U`"``````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+7````````````````````````````````
+`
+end
newraw = realloc(rawimage, oldsize + size);
if (!assert(newraw != NULL))
{
- free(rawimage);
- rawimage = NULL;
free(tmp);
- continue;
+ size = 0;
+ break;
}
rawimage = newraw;
memcpy(rawimage + oldsize, tmp, size);
NULL
};
#endif
+ static const char *fileset11[] = {
+ "test_compat_tar_directory_1.tar",
+ NULL
+ };
static const struct files filesets[] = {
{0, fileset1}, /* Exercise bzip2 decompressor. */
{1, fileset1},
#if HAVE_ZSTD_H && HAVE_LIBZSTD
{0, fileset10}, /* Exercise zstd decompressor. */
#endif
+ {0, fileset11},
{1, NULL}
};
test_fuzz(filesets);
char tmpfilename[] = "largefile";
int tmpfilefd;
FILE *f;
- unsigned int i;
size_t used;
/* Create a new archive in memory. */
assert((ae = archive_entry_new()) != NULL);
archive_entry_copy_pathname(ae, "file");
archive_entry_set_mode(ae, S_IFREG | 0755);
- for (i = 0; i < sizeof(buff2); i++)
- buff2[i] = (unsigned char)rand();
+ fill_with_pseudorandom_data(buff2, sizeof(buff2));
archive_entry_set_size(ae, sizeof(buff2));
assertA(0 == archive_write_header(a, ae));
archive_entry_free(ae);
int file_count;
int match_count;
int r;
+#if defined(O_PATH) || defined(O_SEARCH) || \
+ (defined(__FreeBSD__) && defined(O_EXEC))
+ const char *ignore_traversals_test4;
+
+ ignore_traversals_test4 = getenv("IGNORE_TRAVERSALS_TEST4");
+#endif
assertMakeDir("lock", 0311);
assertMakeDir("lock/dir1", 0755);
if (r == ARCHIVE_FAILED) {
#if defined(O_PATH) || defined(O_SEARCH) || \
(defined(__FreeBSD__) && defined(O_EXEC))
- assertEqualIntA(a, ARCHIVE_OK, r);
+ if (ignore_traversals_test4 == NULL)
+ assertEqualIntA(a, ARCHIVE_OK, r);
#endif
/* Close the disk object. */
archive_read_close(a);
assert((ae = archive_entry_new()) != NULL);
archive_entry_copy_pathname(ae, "file");
archive_entry_set_mode(ae, S_IFREG | 0755);
- for (i = 0; i < FILE_BUFF_SIZE; i++)
- file_buff[i] = (unsigned char)rand();
+ fill_with_pseudorandom_data(file_buff, FILE_BUFF_SIZE);
archive_entry_set_size(ae, FILE_BUFF_SIZE);
assertA(0 == archive_write_header(a, ae));
assertA(FILE_BUFF_SIZE == archive_write_data(a, file_buff, FILE_BUFF_SIZE));
--- /dev/null
+begin-base64 600 LICENSE2.txt
+VEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIOKAnEFTIElT4oCdLCBXSVRIT1VUIFdBUlJBTlRZIE9G
+IEFOWSBLSU5ELCBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQg
+VE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJ
+Q1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
+QVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFN
+QUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNU
+LCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElP
+TiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBT
+T0ZUV0FSRS4K
+====
--- /dev/null
+/*-
+ * Copyright (c) 2023 Martin Matuska
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#include "test.h"
+
+DEFINE_TEST(test_read_filter_uudecode_raw)
+{
+ struct archive_entry *ae;
+ struct archive *a;
+
+ const char *name = "test_read_filter_uudecode_raw.uu";
+
+ assert((a = archive_read_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_raw(a));
+ copy_reference_file(name);
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_open_filename(a, name, 670));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualString("LICENSE.txt", archive_entry_pathname(ae));
+ assertEqualInt((AE_IFREG | 0755), archive_entry_mode(ae));
+ assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
+
+ assertEqualInt(ARCHIVE_OK, archive_read_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+}
+
+DEFINE_TEST(test_read_filter_uudecode_base64_raw)
+{
+ struct archive_entry *ae;
+ struct archive *a;
+
+ const char *name = "test_read_filter_uudecode_base64_raw.uu";
+
+ assert((a = archive_read_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_raw(a));
+ copy_reference_file(name);
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_open_filename(a, name, 670));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualString("LICENSE2.txt", archive_entry_pathname(ae));
+ assertEqualInt((AE_IFREG | 0600), archive_entry_mode(ae));
+ assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
+
+ assertEqualInt(ARCHIVE_OK, archive_read_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+}
--- /dev/null
+begin 755 LICENSE.txt
+M5$A%(%-/1E1705)%($E3(%!23U9)1$5$(.*`G$%3($E3XH"=+"!7251(3U54
+M(%=!4E)!3E19($]&($%.62!+24Y$+"!%6%!215-3($]2($E-4$Q)140L($E.
+M0TQ51$E.1R!"550@3D]4($Q)34E4140@5$\@5$A%(%=!4E)!3E1)15,@3T8@
+M34520TA!3E1!0DE,2519+"!&251.15-3($9/4B!!(%!!4E1)0U5,05(@4%52
+M4$]312!!3D0@3D].24Y&4DE.1T5-14Y4+B!)3B!.3R!%5D5.5"!32$%,3"!4
+M2$4@05542$]24R!/4B!#3U!94DE'2%0@2$],1$524R!"12!,24%"3$4@1D]2
+M($%.62!#3$%)32P@1$%-04=%4R!/4B!/5$A%4B!,24%"24Q)5%DL(%=(151(
+M15(@24X@04X@04-424].($]&($-/3E1204-4+"!43U)4($]2($]42$525TE3
+M12P@05))4TE.1R!&4D]-+"!/550@3T8@3U(@24X@0T].3D5#5$E/3B!7251(
+M(%1(12!33T945T%212!/4B!42$4@55-%($]2($]42$52($1%04Q)3D=3($E.
+/(%1(12!33T945T%212X*
+`
+end
#define open _open
#endif
+#define __LIBARCHIVE_BUILD
+#include <archive_crc32.h>
+
/*
* Extract a non-encoded file.
* The header of the 7z archive files is not encoded.
/* Verify regular file1. */
assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
- assertEqualInt((AE_IFREG | 0666), archive_entry_mode(ae));
+ assertEqualInt((AE_IFREG | 0644), archive_entry_mode(ae));
assertEqualString("file1", archive_entry_pathname(ae));
assertEqualInt(86401, archive_entry_mtime(ae));
assertEqualInt(60, archive_entry_size(ae));
}
/*
+ * Extract multi files.
+ * Like test_extract_all_files, but with zstandard compression.
+ */
+static void
+test_extract_all_files_zstd(const char *refname)
+{
+ struct archive_entry *ae;
+ struct archive *a;
+ char buff[128];
+
+ extract_reference_file(refname);
+ assert((a = archive_read_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_read_open_filename(a, refname, 10240));
+
+ /* Verify directory dir1. Note that this comes before the dir1/file1 entry in recent versions of 7-Zip. */
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualInt((AE_IFDIR | 0755), archive_entry_mode(ae));
+ assertEqualString("dir1/", archive_entry_pathname(ae));
+ assertEqualInt(2764801, archive_entry_mtime(ae));
+ assertEqualInt(archive_entry_is_encrypted(ae), 0);
+ assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
+
+ /* Verify regular file1. */
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualInt((AE_IFREG | 0644), archive_entry_mode(ae));
+ assertEqualString("dir1/file1", archive_entry_pathname(ae));
+ assertEqualInt(86401, archive_entry_mtime(ae));
+ assertEqualInt(13, archive_entry_size(ae));
+ assertEqualInt(archive_entry_is_encrypted(ae), 0);
+ assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
+ assertEqualInt(13, archive_read_data(a, buff, sizeof(buff)));
+ assertEqualMem(buff, "aaaaaaaaaaaa\n", 13);
+
+ /* Verify regular file2. */
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualInt((AE_IFREG | 0644), archive_entry_mode(ae));
+ assertEqualString("file2", archive_entry_pathname(ae));
+ assertEqualInt(86401, archive_entry_mtime(ae));
+ assertEqualInt(26, archive_entry_size(ae));
+ assertEqualInt(archive_entry_is_encrypted(ae), 0);
+ assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
+ assertEqualInt(26, archive_read_data(a, buff, sizeof(buff)));
+ assertEqualMem(buff, "aaaaaaaaaaaa\nbbbbbbbbbbbb\n", 26);
+
+ /* Verify regular file3. */
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualInt((AE_IFREG | 0644), archive_entry_mode(ae));
+ assertEqualString("file3", archive_entry_pathname(ae));
+ assertEqualInt(86401, archive_entry_mtime(ae));
+ assertEqualInt(39, archive_entry_size(ae));
+ assertEqualInt(archive_entry_is_encrypted(ae), 0);
+ assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
+ assertEqualInt(39, archive_read_data(a, buff, sizeof(buff)));
+ assertEqualMem(buff, "aaaaaaaaaaaa\nbbbbbbbbbbbb\ncccccccccccc\n", 39);
+
+ /* Verify regular file4. */
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualInt((AE_IFREG | 0644), archive_entry_mode(ae));
+ assertEqualString("file4", archive_entry_pathname(ae));
+ assertEqualInt(86401, archive_entry_mtime(ae));
+ assertEqualInt(52, archive_entry_size(ae));
+ assertEqualInt(archive_entry_is_encrypted(ae), 0);
+ assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
+ assertEqualInt(52, archive_read_data(a, buff, sizeof(buff)));
+ assertEqualMem(buff,
+ "aaaaaaaaaaaa\nbbbbbbbbbbbb\ncccccccccccc\ndddddddddddd\n", 52);
+
+ assertEqualInt(5, archive_file_count(a));
+
+ /* End of archive. */
+ assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
+
+ /* Verify archive format. */
+ assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0));
+ assertEqualIntA(a, ARCHIVE_FORMAT_7ZIP, archive_format(a));
+
+ /* Close the archive. */
+ assertEqualInt(ARCHIVE_OK, archive_read_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+}
+
+/*
+ * Extract file from an archives using ZSTD compression with and without BCJ.
+ */
+static void
+test_extract_file_zstd_bcj_nobjc(const char *refname)
+{
+ struct archive_entry *ae;
+ struct archive *a;
+ char buff[4096];
+ uint32_t computed_crc = 0;
+ uint32_t expected_crc = 0xbd66eebc;
+
+ extract_reference_file(refname);
+ assert((a = archive_read_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_read_open_filename(a, refname, 10240));
+
+ /* Verify regular file: hw. */
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualInt((AE_IFREG | 0775), archive_entry_mode(ae));
+ assertEqualString("hw", archive_entry_pathname(ae));
+ assertEqualInt(1685913368, archive_entry_mtime(ae));
+ assertEqualInt(15952, archive_entry_size(ae));
+ assertEqualInt(archive_entry_is_encrypted(ae), 0);
+ assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
+
+ for (;;) {
+ la_ssize_t bytes_read = archive_read_data(a, buff, sizeof(buff));
+ assert(bytes_read >= 0);
+ if (bytes_read == 0) break;
+ computed_crc = crc32(computed_crc, buff, bytes_read);
+ }
+ assertEqualInt(computed_crc, expected_crc);
+
+ assertEqualInt(1, archive_file_count(a));
+
+ /* End of archive. */
+ assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
+
+ /* Verify archive format. */
+ assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0));
+ assertEqualIntA(a, ARCHIVE_FORMAT_7ZIP, archive_format(a));
+
+ /* Close the archive. */
+ assertEqualInt(ARCHIVE_OK, archive_read_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+}
+
+/*
* Extract last file.
* The header of the 7z archive files is encoded with LZMA.
*/
/* Verify regular file1. */
assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
- assertEqualInt((AE_IFREG | 0666), archive_entry_mode(ae));
+ assertEqualInt((AE_IFREG | 0644), archive_entry_mode(ae));
assertEqualString("ppmd_test.txt", archive_entry_pathname(ae));
assertEqualInt(1322464589, archive_entry_mtime(ae));
assertEqualInt(102400, archive_entry_size(ae));
assertEqualInt(ARCHIVE_OK, archive_read_free(a));
}
+DEFINE_TEST(test_read_format_7zip_zstd)
+{
+ struct archive *a;
+
+ assert((a = archive_read_new()) != NULL);
+
+ /* Extracting with libzstd */
+ if (ARCHIVE_OK != archive_read_support_filter_zstd(a)) {
+ skipping(
+ "7zip:zstd decoding is not supported on this platform");
+ } else {
+ test_extract_all_files_zstd("test_read_format_7zip_zstd.7z");
+ }
+
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+}
+
+DEFINE_TEST(test_read_format_7zip_zstd_solid)
+{
+ struct archive *a;
+
+ assert((a = archive_read_new()) != NULL);
+
+ /* Extracting with libzstd */
+ if (ARCHIVE_OK != archive_read_support_filter_zstd(a)) {
+ skipping(
+ "7zip:zstd decoding is not supported on this platform");
+ } else {
+ test_extract_all_files_zstd("test_read_format_7zip_solid_zstd.7z");
+ }
+
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+}
+
+DEFINE_TEST(test_read_format_7zip_zstd_bcj)
+{
+ struct archive *a;
+
+ assert((a = archive_read_new()) != NULL);
+
+ /* Extracting with libzstd */
+ if (ARCHIVE_OK != archive_read_support_filter_zstd(a)) {
+ skipping(
+ "7zip:zstd decoding is not supported on this platform");
+ } else {
+ test_extract_file_zstd_bcj_nobjc("test_read_format_7zip_zstd_bcj.7z");
+ }
+
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+}
+
+DEFINE_TEST(test_read_format_7zip_zstd_nobcj)
+{
+ struct archive *a;
+
+ assert((a = archive_read_new()) != NULL);
+
+ /* Extracting with libzstd */
+ if (ARCHIVE_OK != archive_read_support_filter_zstd(a)) {
+ skipping(
+ "7zip:zstd decoding is not supported on this platform");
+ } else {
+ test_extract_file_zstd_bcj_nobjc("test_read_format_7zip_zstd_nobcj.7z");
+ }
+
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+}
+
DEFINE_TEST(test_read_format_7zip_empty)
{
test_empty_archive();
assertEqualInt(ARCHIVE_OK, archive_read_free(a));
}
+static void
+test_arm_filter(const char *refname)
+{
+ struct archive *a;
+ struct archive_entry *ae;
+ char buff[7804];
+ uint32_t computed_crc = 0;
+ uint32_t expected_crc = 0x355ec4e1;
+
+ assert((a = archive_read_new()) != NULL);
+
+ extract_reference_file(refname);
+
+ assert((a = archive_read_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
+
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_read_open_filename(a, refname, 10240));
+
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualInt((AE_IFREG | 0755), archive_entry_mode(ae));
+ assertEqualString("hw-gnueabihf", archive_entry_pathname(ae));
+ assertEqualInt(sizeof(buff), archive_entry_size(ae));
+ assertEqualInt(sizeof(buff), archive_read_data(a, buff, sizeof(buff)));
+ computed_crc = crc32(computed_crc, buff, sizeof(buff));
+ assertEqualInt(computed_crc, expected_crc);
+
+ assertEqualInt(1, archive_file_count(a));
+
+ assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
+
+ assertEqualInt(ARCHIVE_OK, archive_read_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+}
+
+DEFINE_TEST(test_read_format_7zip_zstd_arm)
+{
+ struct archive *a;
+
+ assert((a = archive_read_new()) != NULL);
+
+ if (ARCHIVE_OK != archive_read_support_filter_zstd(a)) {
+ skipping(
+ "7zip:zstd decoding is not supported on this platform");
+ } else {
+ test_arm_filter("test_read_format_7zip_zstd_arm.7z");
+ }
+
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+}
+
+DEFINE_TEST(test_read_format_7zip_lzma2_arm)
+{
+ struct archive *a;
+
+ assert((a = archive_read_new()) != NULL);
+
+ if (ARCHIVE_OK != archive_read_support_filter_lzma(a)) {
+ skipping(
+ "7zip:lzma decoding is not supported on this platform");
+ } else {
+ test_arm_filter("test_read_format_7zip_lzma2_arm.7z");
+ }
+
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+}
+
DEFINE_TEST(test_read_format_7zip_ppmd)
{
test_ppmd();
}
+
+static void
+test_arm64_filter(const char *refname)
+{
+ struct archive *a;
+ struct archive_entry *ae;
+ char buff[70368];
+ uint32_t computed_crc = 0;
+ uint32_t expected_crc = 0xde97d594;
+
+ assert((a = archive_read_new()) != NULL);
+
+ extract_reference_file(refname);
+
+ assert((a = archive_read_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
+
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_read_open_filename(a, refname, 10240));
+
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualInt((AE_IFREG | 0775), archive_entry_mode(ae));
+ assertEqualString("hw-arm64", archive_entry_pathname(ae));
+ assertEqualInt(sizeof(buff), archive_entry_size(ae));
+ assertEqualInt(sizeof(buff), archive_read_data(a, buff, sizeof(buff)));
+ computed_crc = crc32(computed_crc, buff, sizeof(buff));
+ assertEqualInt(computed_crc, expected_crc);
+
+ assertEqualInt(1, archive_file_count(a));
+
+ assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
+
+ assertEqualInt(ARCHIVE_OK, archive_read_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+}
+
+DEFINE_TEST(test_read_format_7zip_lzma2_arm64)
+{
+#ifdef HAVE_LZMA_FILTER_ARM64
+ struct archive *a;
+
+ assert((a = archive_read_new()) != NULL);
+
+ if (ARCHIVE_OK != archive_read_support_filter_lzma(a)) {
+ skipping(
+ "7zip:lzma decoding is not supported on this platform");
+ } else {
+ test_arm64_filter("test_read_format_7zip_lzma2_arm64.7z");
+ }
+
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+#else
+ skipping("This version of liblzma does not support LZMA_FILTER_ARM64");
+#endif
+}
+
+DEFINE_TEST(test_read_format_7zip_deflate_arm64)
+{
+ struct archive *a;
+
+ assert((a = archive_read_new()) != NULL);
+
+ if (ARCHIVE_OK != archive_read_support_filter_gzip(a)) {
+ skipping(
+ "7zip:deflate decoding is not supported on this platform");
+ } else {
+ test_arm64_filter("test_read_format_7zip_deflate_arm64.7z");
+ }
+
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+}
+
+DEFINE_TEST(test_read_format_7zip_win_attrib)
+{
+ struct archive *a;
+
+ assert((a = archive_read_new()) != NULL);
+
+ if (ARCHIVE_OK != archive_read_support_filter_lzma(a)) {
+ skipping(
+ "7zip:lzma decoding is not supported on this platform");
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+ return;
+ }
+
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
+
+ // This archive has four files and four directories:
+ // * hidden directory
+ // * readonly directory
+ // * regular directory
+ // * system directory
+ // * regular "archive" file
+ // * hidden file
+ // * readonly file
+ // * system file
+ const char *refname = "test_read_format_7zip_win_attrib.7z";
+ extract_reference_file(refname);
+
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_read_open_filename(a, refname, 10240));
+
+ struct archive_entry *ae;
+
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualString("hidden_dir/", archive_entry_pathname(ae));
+ assertEqualInt((AE_IFDIR | 0755), archive_entry_mode(ae));
+ assertEqualString("hidden", archive_entry_fflags_text(ae));
+
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualString("readonly_dir/", archive_entry_pathname(ae));
+ assertEqualInt((AE_IFDIR | 0555), archive_entry_mode(ae));
+ assertEqualString("rdonly", archive_entry_fflags_text(ae));
+
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualString("regular_dir/", archive_entry_pathname(ae));
+ assertEqualInt((AE_IFDIR | 0755), archive_entry_mode(ae));
+ assertEqualString(NULL, archive_entry_fflags_text(ae));
+
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualString("system_dir/", archive_entry_pathname(ae));
+ assertEqualInt((AE_IFDIR | 0755), archive_entry_mode(ae));
+ assertEqualString("system", archive_entry_fflags_text(ae));
+
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualString("archive_file.txt", archive_entry_pathname(ae));
+ assertEqualInt((AE_IFREG | 0644), archive_entry_mode(ae));
+ assertEqualString(NULL, archive_entry_fflags_text(ae));
+
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualString("hidden_file.txt", archive_entry_pathname(ae));
+ assertEqualInt((AE_IFREG | 0644), archive_entry_mode(ae));
+ assertEqualString("hidden", archive_entry_fflags_text(ae));
+
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualString("readonly_file.txt", archive_entry_pathname(ae));
+ assertEqualInt((AE_IFREG | 0444), archive_entry_mode(ae));
+ assertEqualString("rdonly", archive_entry_fflags_text(ae));
+
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualString("system_file.txt", archive_entry_pathname(ae));
+ assertEqualInt((AE_IFREG | 0644), archive_entry_mode(ae));
+ assertEqualString("system", archive_entry_fflags_text(ae));
+
+
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+}
--- /dev/null
+begin 664 libarchive/test/test_read_format_7zip_deflate_arm64.7z
+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
+3`#)5M-E?M]D!%08!`""`_8$`````
+`
+end
--- /dev/null
+begin 664 test_read_format_7zip_lzma2_arm.7z
+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
+D80!B`&D`:`!F````&0`4"@$```-.&5"<V0$5!@$`((#M@0``
+`
+end
--- /dev/null
+begin 664 libarchive/test/test_read_format_7zip_lzma2_arm64.7z
+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
+C`'(`;0`V`#0````9`!0*`0`R5;397[?9`14&`0`@@/V!````
+`
+end
/* Verify regular file1. */
assertEqualIntA(a, ARCHIVE_OK,
archive_read_next_header(a, &ae));
- assertEqualInt((AE_IFREG | 0666), archive_entry_mode(ae));
+ assertEqualInt((AE_IFREG | 0644), archive_entry_mode(ae));
assertEqualString("a.txt", archive_entry_pathname(ae));
assertEqualInt(1576808819, archive_entry_mtime(ae));
assertEqualInt(4, archive_entry_size(ae));
/* Verify regular file2. */
assertEqualIntA(a, ARCHIVE_OK,
archive_read_next_header(a, &ae));
- assertEqualInt((AE_IFREG | 0666), archive_entry_mode(ae));
+ assertEqualInt((AE_IFREG | 0644), archive_entry_mode(ae));
assertEqualString("b.txt", archive_entry_pathname(ae));
assertEqualInt(1576808819, archive_entry_mtime(ae));
assertEqualInt(4, archive_entry_size(ae));
--- /dev/null
+begin 664 test_read_format_7zip_solid_zstd.7z
+M-WJ\KR<<``1&(FS)O@`````````B`````````$V+D*,HM2_]`$@!``!0*DT8
+M!````"$````HM2_]((+%```P80IB8V0*!X"P/JZA4J4;TS.X,9C'`#4``($S
+M!ZX/T5NC)*"0H'?;G=XO-Y<-`+"F*K87M`OOZ1+1#31#M/`2YN,FY:(1).I)
+M(B(+;9$W4?0*8=3V5N;BSZ)(0UGD/'LOSN"0&#DNX!A2*5\#&8IP$1G=7-]@
+MP\EE$]Z;/%6NU^\_,X:MD?57P#S>.+BINH?CHRX,::[Q5P*!X\DH````%P8V
+?`0F`B``'"P$``2,#`0$%70`0```,@-H*`9/CZP``````
+`
+end
--- /dev/null
+begin 644 test_read_format_7zip_win_attrib.7z
+M-WJ\KR<<``0:MZ25^0`````````B`````````,/QN>$!`!IA<F-H:79E:&ED
+M9&5N<F5A9&]N;'ES>7-T96T```"!,P>N#\_\\&P/Z^J<OS8]_GH-_C9=&O:;
+MN?AF5PM%@/8R"MH"PK!D-+92R@HB57B\_G7B9D`HLH<G4Z@!).&WAAA(R4U?
+M%0%=EB_VM=2[WZJHK$/PHCG(E(Y#O[W'JQD2%>%U\S6&7C"[<$<2GL2\B,**
+MW`0[F2;R)EO2:N)4RB6G.3+R6%97BQ]K"X),-'`E&./R#`2A\R&D1#U8FUC&
+MANR65$7S:?$CR7DS8<)L'MR%.5Y)T-;62DU\S8W?$4=U2972R-0]5J81R3E/
+M\K&`%O\H:/`E4``7!A\!"8#:``<+`0`!(P,!`05=`!````R!C@H!`M-R5@``
+`
+end
--- /dev/null
+begin 664 test_read_format_7zip_zstd.7z
+M-WJ\KR<<``2QPP_C,`$````````C``````````+H!E<HM2_]`$@!``!0*DT8
+M!````!$````HM2_](`U%```080H!``80`BBU+_T`2`$``%`J31@$````%```
+M`"BU+_T@&ET``"!A"F(*`@#`H`'8*+4O_0!(`0``4"I-&`0````6````*+4O
+M_2`G;0``,&$*8@IC"@,4``@8V2BU+_T`2`$``%`J31@$````&0```"BU+_T@
+M-(4``$!A"F(*8PID"@04``@8(QL``($S!ZYMP-,)%[KY0NUS!EQ9<T<AN:R"
+M7Z^`KZ24FV4LJ?"A)\MX&!"$=31!F6U\W/D!@*G'-=Z@#"&#>8R#*L]U;J=*
+M@K`Q6]^1F4MZF33TE2LJK8X@%5MY%P.#1*EM98=_,9"?K'$*_A0YVC)]1ML=
+MK-5-,X82B;/_L`I&FQ!5HP#H````%P:`J`$)@(@`!PL!``$C`P$!!5T`$```
++#(#Z"@%\$`,4````
+`
+end
--- /dev/null
+begin 644 test_read_format_7zip_zstd_arm.7z
+M-WJ\KR<<``0IIN38A`D```````!R``````````1RSP4HM2_]`$@!``!0*DT8
+M!````&\)```HM2_]8'P=+4L`REV0%$E@''(._[5GFW&YEVY]?G/)^,\9+2"B
+M(\1H-(@DHJ*L)A?\C,G6FR3?/D.:6QDP<&`QFLOCXM`%J_](<>7+QU&E6E:N
+M9=5-A,@4*0%(`38!`-3GD[<=6PPVGV</-O5)9%/+G)7MT/SVF2%"[?YY9?YU
+MQOSKV/[5+O_IT#_2EO]=G'^=-?^YMW]5Z!^I;:@BQ:G]/U%1=T.&V5/O?8'$
+M1_>GC_)87GYQ_BZ,9+G<6(:EL+AFM]/OESN[+<?BJN+OQ,!I;>)245575._@
+M^RPCV7?'7IB-7R_..I.<?_RR2]YGMM,\B7QASI_N3>8;"%/NJ_\?\/_!_P<:
+M^G3XSS-DOP`414SD%5U,'70<P:9LB=\F,5F\?(8L*B"#5:97+^5R9HG.9OS"
+MQ!96@'QA!=NI[<^M__^U_7E!?>-F?MS1VK_/VO^C&^I_1SA*^_=)^^5T\.;Z
+M_W0/7Z?^[E_7Q03P`7[I>3]\I]RK_U^TYO^=_E7>+WWZ>^_CU12)<EV_^4?G
+MR'7]]O5_"I3K>L[N?\MU#>?H_X-28WKB?Y#2_H5D[#04WF9R/8>-46ZIY]4H
+M_[E-HI8CI(5G.6PHP["KW.$%T24@`CT?H"YM4.#W#_7_$LP0H8J@_5G9\>QI
+M=PPFO9L77'W,=3WH<A+Y(B62E*$]&2G_PJ-_(0+A_PLGG.V81D:R`=M*5Z/!
+MU6XCX&IET$AFM3.2M$&+%6\)F%-88<=J)PG3OY#Y+^R_JOT#S?9Q,8X9"8UD
+M%7A&IQ6/@M*_T,._<,>_D`?:4S&I@D;2#5JL<FIIE`GCF)',Z*R@8Z5#0??_
+M2__"LC-U_=P*ZB,Q6_]D:`Q1MAA,Z;/'$/CLP03\_P3_0AQN8^!J-RQP]7]<
+M!PJJV2[]-RUCCA\Y'\&X+V;;3#U^<(+Z_)L6S[]I/9W`&=.V!DZ<IY,X:A@7
+M5W:8&%3^/UQN.7_:C64XR9>=/]U?I!=OW1=F+M]/KEY>S4[+:QQ[<3#6#>,P
+MS":???N<_*[T7VSG+Y+E_%NEE]<%?4YB^.=!@="D_R`W:7)EGJC+VO<>:,/(
+M\K[_V5!^"/W92(#84!'B?5"@#>*'Y&'/_Q;Q1/_;[`_]<+/84PFV[WO2M)[4
+M2L^_FUK-[[<=1DVMEU-2?3DI7H!^/\D=^=X'_6[Q0?]$0Q)M_T)1>VH1],7_
+M:W`1HJNG<KWO=Y334X+4S.>_IVY`DR(,_?O^G7K_0[6:5[\H)=H)`=>"@'Z4
+M/Q^33T_=]2CA&;)S@F?<`77FZ')IJEE:`V4.V`!0HUVT@RG1%MK`':0"J3LH
+M;^^*.CNZ+Q*?<OM?).NR_]]4_`--3:<%1*:U:6U:,&SVN(G,L#2$("5%E<NE
+M2M0[]Q],\_\'_H>D\+1^+8/_W\ID\V-J^^W(_,#XTKIH4:O2Q$CO2S"#\-CA
+M&,ZPD*+'A="2":C_L9T"_Q\,^!YD:/"1%93KNHT#)91V>Q/YSKVS/7:72SFY
+M/DTCU^_RU_K)=\G&8JW27=_9ODYWQ=HJKB_/Z_K=Z?9U_0XS87=>?^:Q_-*S
+M"V+N2S$Z%FO75]*LDE@556Q?8@N_3>3:C+]6M\OQ^LS9[?&KG#N]/I+M2S%Z
+M_9?"XGK^W[ITD\=OVVFN5=7&K)++=,MY&[O/=K9U:1H)Q:>NHHI<G&L*P_&H
+MQ:^*45I75/REJK"*61R,_#DW9DWQ*:SBUI'S3ZYARO[&+^?\Q9;+9LO=)3M[
+MO=C<8Y>+L?/,\I=I;=WNPLREG'QGD^7T+/>6PRQ2AK\"@C2H$C.5*65$1$1$
+M)$F2-`9""D@*96%02N8^$J#D.`MT#".12:(@2<HJU-B:`WL`""01MII[1KW]
+M.:P7R=+&`+BTZ1F7\S?[C@SB[IQG[ZA[Q/@?MO<?.^4Z.6E&^E"NC6X[H>)#
+M4:BMMH#O(,3N\SNY98ID=!W0;%:X'+'JB96]?7)D)*]C(/`75J#"!K*H?_US
+MA4W\/A]*S]-7_2]IAM/+/`B("R[9CK@UI^F_L_F\S3TLEF]4;-9K"D.FI-BN
+MV;3B7IH,H:X*!VQF'5DKMS(QWD"?M;I7HLYJC5@4O84-JXI4]\ANPCC,Z6V!
+MH1<1&1[VBD<[;N__]';,59N\AQ^&]#"-.ERL<TH!+^^O:-90UN(2?41R,7YG
+MC=D)1;Z7Q%]M-0-KZ?NVGSM/-)/9WE[9=:\@3"'BI0G5?07Z*O=+2,O@T055
+M`]'KHF?3P7&^LM$=DZ'I%RJ9[,2",X=RL)#A?XC[#7TWG0*WTBO_91+R"@77
+M5JX1_+=H.<UDB7I[WVT+H8+N1^8>W77^#-%@[(V?&%>E1@EGMLCHLB@IEGBO
+MR^7F7VZ4^<_*:H]3M2!41<$&Q+=RB)TZU2K(ZASM'+S$FS<U`,,R=?`BY2`5
+M#*1PHK!T/N@X9_BI-U$V`IL%#F'N=A\HG/UR9PGA@4+>C)$0QJJE7#\<..?\
+M5<-K!(&!>!\SDU,3G@>GQG!HY@,:VA83.3UV:[8,/#IFAAR>4[SNQD@#X(ZP
+MSB1KCH5,N!*?N?=.*K&"L:.#>WPGFRQ?G!MXSQ%MC#G3I!&A'&2-D>2,A/-E
+MECT8^7<1UPS%/*;,`34&^-#OCIS.QE_GW3XH<S`Y<]E[>G\@9&@Y?L((/T]`
+M)T;C<[`:OL9XFC,(CGNQ:L7!)HW!FUD*LUE../[1_FDQ56O"(#?<^P\D9Y8S
+M\B>"887TP=S,B&&5FXH0#40E'^VT-J)ZZC$8F8IXY#3.]BBD/Y!W$_ZW_PF!
+M]O@GGFKZK7B;%/:O*>@EBKE4E'Z,8L,CF729$*JA:H"9A4<-W536[#+GLD*,
+MA1`PA]/73?\?687^X]/J)UG5TW%7:20ZKXIC[MVDJ)')G',2BOU+XJ+MC.)<
+M.2`Z'M=W?='`QE[.OF=_/FV="Y,I[]N:M1/U6>W;\;-N"M*]+K<S"VM!.5`7
+M8H9W)EDHM[D#]C..3VI`)!.?FH80X:%M%"!>&L1B*%65/ZC8$_36I;+/=_@$
+M3FB?WK+IOVATX0C;5Y*=[>\S4F1(V)J!O?<A_6Y4"P(JCG3]$BG<;7:X.L8-
+M.5R.-,-0NA&D)4Y:]3E;M@@=Y>?36$$TKF(S2@FLJ\FLP*@EGBB:2%'/9-Z8
+M8Q,_6=Z>;B0PSV4-O0H-CLX!^O0EGI6A1BSB-+@-^M_[_W@_H7<<>.R8P"(#
+M;W9GXI=Q",^;'>9$=#]CA-$DQL\_IE\_^00T'^]Z\9A<H(3D5@4!!`8``0F)
+MA``'"P$``B0$]Q$!!0$%`P``!`,#!0$!``R>?)Y\``@*`>'$7C4```4!&0H`
+M````````````$1L`:`!W`"T`9P!N`'4`90!A`&(`:0!H`&8````9`!0*`0``
+166S@9)S9`14&`0`@@.V!````
+`
+end
--- /dev/null
+begin 664 test_read_format_7zip_zstd_bcj.7z
+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
+@=P```!D$`````!0*`0``'';'*9?9`14&`0`@@/V!````
+`
+end
--- /dev/null
+begin 664 test_read_format_7zip_zstd_nobcj.7z
+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
+3```<=L<IE]D!%08!`""`_8$`````
+`
+end
assertEqualInt(ARCHIVE_OK, archive_read_close(a));
assertEqualInt(ARCHIVE_OK, archive_read_free(a));
}
+
/*
* Check mtree file with non-printable ascii characters
*/
assertEqualInt(ARCHIVE_OK, archive_read_close(a));
assertEqualInt(ARCHIVE_OK, archive_read_free(a));
}
+
+/*
+ * Check mtree file with tab characters, which are supported but not printable
+ */
+DEFINE_TEST(test_read_format_mtree_tab)
+{
+ static char archive[] =
+ "#mtree\n"
+ "\ta\ttype=file\n";
+ struct archive_entry *ae;
+ struct archive *a;
+
+ assert((a = archive_read_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_read_support_filter_all(a));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_read_support_format_all(a));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_read_open_memory(a, archive, sizeof(archive)));
+
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualString(archive_entry_pathname(ae), "a");
+ assertEqualInt(archive_entry_filetype(ae), AE_IFREG);
+
+ assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
+ assertEqualInt(1, archive_file_count(a));
+ assertEqualInt(ARCHIVE_OK, archive_read_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+}
assertEqualInt(DATA_SIZE, archive_entry_size(ae));
assertA(DATA_SIZE == archive_read_data(a, buff, DATA_SIZE));
assertA(ARCHIVE_EOF == archive_read_next_header(a, &ae));
- verify_data(buff, 0, DATA_SIZE);
+ assertA(1 == verify_data(buff, 0, DATA_SIZE));
EPILOGUE();
}
assertEqualString("test1.bin", archive_entry_pathname(ae));
assertEqualInt(DATA_SIZE, archive_entry_size(ae));
assertA(DATA_SIZE == archive_read_data(a, buff, DATA_SIZE));
- assertA(verify_data(buff, 1, DATA_SIZE));
+ assertA(1 == verify_data(buff, 1, DATA_SIZE));
assertA(0 == archive_read_next_header(a, &ae));
assertEqualString("test2.bin", archive_entry_pathname(ae));
assertEqualInt(DATA_SIZE, archive_entry_size(ae));
assertA(DATA_SIZE == archive_read_data(a, buff, DATA_SIZE));
- assertA(verify_data(buff, 2, DATA_SIZE));
+ assertA(1 == verify_data(buff, 2, DATA_SIZE));
assertA(0 == archive_read_next_header(a, &ae));
assertEqualString("test3.bin", archive_entry_pathname(ae));
assertEqualInt(DATA_SIZE, archive_entry_size(ae));
assertA(DATA_SIZE == archive_read_data(a, buff, DATA_SIZE));
- assertA(verify_data(buff, 3, DATA_SIZE));
+ assertA(1 == verify_data(buff, 3, DATA_SIZE));
assertA(0 == archive_read_next_header(a, &ae));
assertEqualString("test4.bin", archive_entry_pathname(ae));
assertEqualInt(DATA_SIZE, archive_entry_size(ae));
assertA(DATA_SIZE == archive_read_data(a, buff, DATA_SIZE));
- assertA(verify_data(buff, 4, DATA_SIZE));
+ assertA(1 == verify_data(buff, 4, DATA_SIZE));
/* There should be no more files in this archive. */
assertEqualString("test1.bin", archive_entry_pathname(ae));
assertEqualInt(DATA_SIZE, archive_entry_size(ae));
assertA(DATA_SIZE == archive_read_data(a, buff, DATA_SIZE));
- assertA(verify_data(buff, 1, DATA_SIZE));
+ assertA(1 == verify_data(buff, 1, DATA_SIZE));
assertA(0 == archive_read_next_header(a, &ae));
assertEqualString("test2.bin", archive_entry_pathname(ae));
assertEqualInt(DATA_SIZE, archive_entry_size(ae));
assertA(DATA_SIZE == archive_read_data(a, buff, DATA_SIZE));
- assertA(verify_data(buff, 2, DATA_SIZE));
+ assertA(1 == verify_data(buff, 2, DATA_SIZE));
assertA(0 == archive_read_next_header(a, &ae));
assertEqualString("test3.bin", archive_entry_pathname(ae));
assertEqualInt(DATA_SIZE, archive_entry_size(ae));
assertA(DATA_SIZE == archive_read_data(a, buff, DATA_SIZE));
- assertA(verify_data(buff, 3, DATA_SIZE));
+ assertA(1 == verify_data(buff, 3, DATA_SIZE));
assertA(0 == archive_read_next_header(a, &ae));
assertEqualString("test4.bin", archive_entry_pathname(ae));
assertEqualInt(DATA_SIZE, archive_entry_size(ae));
assertA(DATA_SIZE == archive_read_data(a, buff, DATA_SIZE));
- assertA(verify_data(buff, 4, DATA_SIZE));
+ assertA(1 == verify_data(buff, 4, DATA_SIZE));
assertA(ARCHIVE_EOF == archive_read_next_header(a, &ae));
EPILOGUE();
EPILOGUE();
}
+DEFINE_TEST(test_read_format_rar5_window_buf_and_size_desync)
+{
+ /* oss fuzz 30442 */
+
+ char buf[4096];
+ PROLOGUE("test_read_format_rar5_window_buf_and_size_desync.rar");
+
+ /* Return codes of those calls are ignored, because this sample file
+ * is invalid. However, the unpacker shouldn't produce any SIGSEGV
+ * errors during processing. */
+
+ (void) archive_read_next_header(a, &ae);
+ while(0 < archive_read_data(a, buf, 46)) {}
+
+ EPILOGUE();
+}
+
DEFINE_TEST(test_read_format_rar5_arm_filter_on_window_boundary)
{
char buf[4096];
EPILOGUE();
}
+
+DEFINE_TEST(test_read_format_rar5_sfx)
+{
+ struct archive *a;
+ struct archive_entry *ae;
+ int bs = 10240;
+ char buff[32];
+ const char reffile[] = "test_read_format_rar5_sfx.exe";
+ const char test_txt[] = "123";
+ int size = sizeof(test_txt) - 1;
+
+ extract_reference_file(reffile);
+ assert((a = archive_read_new()) != NULL);
+ assertA(0 == archive_read_support_filter_all(a));
+ assertA(0 == archive_read_support_format_all(a));
+ assertA(0 == archive_read_open_filename(a, reffile, bs));
+
+ assertA(0 == archive_read_next_header(a, &ae));
+ assertEqualString("test.txt.txt", archive_entry_pathname(ae));
+
+ assertA(size == archive_read_data(a, buff, size));
+ assertEqualMem(buff, test_txt, size);
+
+ EPILOGUE();
+}
+
+DEFINE_TEST(test_read_format_rar5_decode_number_out_of_bounds_read)
+{
+ /* oss fuzz 30448 */
+
+ char buf[4096];
+ PROLOGUE("test_read_format_rar5_decode_number_out_of_bounds_read.rar");
+
+ /* Return codes of those calls are ignored, because this sample file
+ * is invalid. However, the unpacker shouldn't produce any SIGSEGV
+ * errors during processing. */
+
+ (void) archive_read_next_header(a, &ae);
+ while(0 < archive_read_data(a, buf, sizeof(buf))) {}
+
+ EPILOGUE();
+}
+
+DEFINE_TEST(test_read_format_rar5_bad_window_size_in_multiarchive_file)
+{
+ /* oss fuzz 30459 */
+
+ char buf[4096];
+ PROLOGUE("test_read_format_rar5_bad_window_sz_in_mltarc_file.rar");
+
+ /* This file is damaged, so those functions should return failure.
+ * Additionally, SIGSEGV shouldn't be raised during execution
+ * of those functions. */
+
+ (void) archive_read_next_header(a, &ae);
+ while(0 < archive_read_data(a, buf, sizeof(buf))) {}
+ (void) archive_read_next_header(a, &ae);
+ while(0 < archive_read_data(a, buf, sizeof(buf))) {}
+
+ EPILOGUE();
+}
+
+DEFINE_TEST(test_read_format_rar5_read_data_block_uninitialized_offset)
+{
+ const void *buf;
+ size_t size;
+ la_int64_t offset;
+
+ PROLOGUE("test_read_format_rar5_compressed.rar");
+ assertA(0 == archive_read_next_header(a, &ae));
+
+ /* A real code may pass a pointer to an uninitialized variable as an offset
+ * output argument. Here we want to check this situation. But because
+ * relying on a value of an uninitialized variable in a test is not a good
+ * idea, let's pretend that 0xdeadbeef is a random value of the
+ * uninitialized variable. */
+ offset = 0xdeadbeef;
+ assertEqualInt(ARCHIVE_OK, archive_read_data_block(a, &buf, &size, &offset));
+ /* The test archive doesn't contain a sparse file. And because of that, here
+ * we assume that the first returned offset should be 0. */
+ assertEqualInt(0, offset);
+
+ EPILOGUE();
+}
--- /dev/null
+begin 644 test_read_format_rar5_bad_window_size_in_multiarchive_file.rar
+M4F%R(1H'`0`]/-[E`@$`_R`@1#[Z5P("`PL`("`@@"(`"?\@("#___\@("`@
+M("`@("`@("`@4X`J]`,"YR(#$($@("`@``$@("`@@<L0("`@("`@("`@("`@
+M("`@(""LCTJA`P$%`B`@`2!3@"KT`P+G(@,@("`@_P,!!B`@(/___R`@(('+
+5$"`OX2`@[.SL[.S_("`@("`@("`@
+`
+end
--- /dev/null
+begin 644 test_read_format_rar5_decode_number_out_of_bounds_read.rar
+M4F%R(1H'`0!3@"KT`P+G(@(0("`@@`L!!"`@("`@(($D_[BJ2"!::7!)210V
+M+0#ZF#)Q!`+>YPW_("`@("``_R````````````````````````````!__P``
+M``````!T72`@/EW_(/\@("`@("`@("`@("`@("`@("`@("`@("`@(/\@("`@
+M("`@("#_("`@("`@("`@("`@("`@("`@("`@("`@("#_("`@("`@("`@_R`@
+M("`@("`@("`@("`@("`@("`@("`@("`@_R`@("`@("`@(/\@("`@("`@("`@
+M("`@("`@("`@("`@("`@(/\@("`@("`@("#_("`@("`@("`@("`@("`@("`@
+E("`@("`@("#_("`@("`@("`@_R`@("`@("`@("`@("`@("`@(```
+`
+end
--- /dev/null
+begin 644 -
+M35J0``,````$````__\``+@`````````0```````````````````````````
+M````````````````````$`$```X?N@X`M`G-(;@!3,TA5&AI<R!P<F]G<F%M
+M(&-A;FYO="!B92!R=6X@:6X@1$]3(&UO9&4N#0T*)`````````!B8/>3)@&9
+MP"8!F<`F`9G`DIUHP"L!F<"2G6K`JP&9P)*=:\`^`9G`N*%>P"0!F<`=7YK!
+M,`&9P!U?G<$U`9G`'5^<P0H!F<`O>1K`+`&9P"]Y"L`C`9G`)@&8P"L`F<"Q
+M7YS!%P&9P+%?F<$G`9G`M%]FP"<!F<"Q7YO!)P&9P%)I8V@F`9G`````````
+M``!010``3`$&`/\IPV```````````.```@$+`0X``!0#``#F`P``````\.X!
+M```0````,`,```!````0`````@``!0`!```````%``$```````!`!P``!```
+M``````(`0,$``!```!``````$```$````````!`````PR`,`-````&3(`P`\
+M`````#`&`-#?`````````````````````````!`'`'PB``#`J@,`5```````
+M``````````````````````````````A5`P!`````````````````,`,`8`(`
+M`,2]`P`@`0```````````````````````"YT97AT````NA,#```0````%`,`
+M``0``````````````````"```&`N<F1A=&$``"*F````,`,``*@````8`P``
+M``````````````!```!`+F1A=&$````H-P(``.`#```0````P`,`````````
+M````````0```P"YD:61A=```C`$````@!@```@```-`#````````````````
+M`$```,`N<G-R8P```-#?````,`8``.````#2`P````````````````!```!`
+M+G)E;&]C``!\(@```!`'```D````L@0`````````````````0```0@``````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````````````````````````````````+FP#D0`Z61.``#,
+MS,S,S,RY4`]$`.F<70``S,S,S,S,N>@.1`#HD[X``&A@(T,`Z"#:`0!9P\S,
+MS,S,S,S,S,QH<"-#`.@*V@$`6</,S,S,Z`'R``"CT(%$`,/,S,S,S+G@@40`
+MZ6$&`0#,S,S,S,RY>&I%`.CAW```:(`C0P#HT-D!`%G#S,S,S,S,S,S,S+F"
+MVT4`Z,'<``!HD"-#`.BPV0$`6</,S,S,S,S,S,S,N7+$1`#HH=P``&B@(T,`
+MZ)#9`0!9P\S,S,S,S,S,S,RY>,5$`.A]2@``:+`C0P#H<-D!`%G#S,S,S,S,
+MS,S,S%6+[('L6`0``%-65XM]%(VUJ/O__[L``@``A?]T05-7B\90Z!GP``"+
+MQE#H8R<"`%F-M:K[__^--$:-A:C[__^+SBO(B\/1^2O!4%=6Z._O``!6Z#LG
+M`@!9C31&@\8"C86H^___B\XKR(O#T?DKP5!HH@```.A"SP``4%;HP.\``%;H
+M#"<"`%F-C:C[__^--$:#Q@*+QBO!T?@KV%-HL#5#`%;HF>\``%;HY28"`#/)
+M:EAFB4Q&`HU%J%Y645#H/>0!`(M%"(/$$(I=&(M]$(E%K*'0#D0`B46PC86H
+M^___B46TBT4,B478C46HB76HB7W$QT7(``@``,=%W`P(`0!0A-MT"/\5/"!&
+M`.L&_Q5$($8`B_"%]G4L_Q5`($8`/0(P``!U'3/`9HD'C46H4(3;=`C_%3P@
+M1@#K!O\51"!&`(OPA?9?7@^5P%N+Y5W"%`!5B^R!["P"``"-1?Q0_Q6(($8`
+MA<!T!#+`ZV:+10@SR8E%W(V%U/W__XE%Y(M%#(E%Z(U%W%90B4W@QT7L00``
+M`(E-\(E-]/\5C"!&`(OPA?9U!#+`ZRE7_W405O\5D"!&`(M-_(OX5E&+$8MR
+M%(O._Q5@,D,`_]8SP(7_7P^5P%Z+Y5W"#``/MD0D#%#_="0,_W0D#/\59"%&
+M`%#_%6`A1@#"#``/MD0D#/?8&\"#X`E0_W0D#/]T)`S_%60A1@!0_Q5L(48`
+MP@P`58OL@WT,,'19@7T,$`$``'5=BD4@N>@.1``D`0^VP%#_=1C_=0CH/<H`
+M`/9%(`%T/O]U"/\56"%&`(7`=#%H(3```%#_%60A1@"%P'0A]D4@"'0;:+0U
+M0P!0_Q5<(48`ZPW_=0BYZ`Y$`.C2R0``,L!=PAP`5O]T)`B+\3/`B0:)1@2)
+M1@B)1@R(1A#H5@,``(O&7L($`+AW'T,`Z*C1`0!145-6B_&)=?#H_(,``#/;
+MQP:X-4,`C8XH$```B5W\Z`=,``"-CN@@``#&1?P!Z$RV``"-CH`B``")GM`A
+M``")GM0A``#H2P$``(V.T$4``.A``0``.5T(QD7\!`^4P(F>O"$``(B&N"$`
+M`(3`="-H\((``.CMT`$`68E%[,9%_`6%P'0)B\CH-9X``.L'B\/K`XM%"(F&
+MO"$``(J`H6$``(..P"$``/^#CL0A``#_@X[((0``_VI`B$8BC88((@``4U#'
+MAK!L```"````B9ZT;```B9ZX;```B9[`;```B9[0(0``B9[4(0``B)Z\;```
+M9HF>Q&P``(F>V"$``(F>H&P``(F>I&P``(F>J&P``(F>K&P``.@IX0$`:C2-
+MAD@B``!34.@:X0$`:B"-AI!%``!34.@+X0$`BTWT@\0DB9[8;```,\")GN!L
+M``")GN1L``")GNAL``")GNQL``")GO!L``")GO1L``!FB8;Z;```B\:(GM9L
+M``"(GOAL``"(GN`A``!>6V2)#0````"+Y5W"!`!1,\")#"2)@2@0``")@2P0
+M``")@3`0``")@300``"(@3@0``")@4`0``")@400``")@4@0``")@4P0``")
+M@5`0``")@500``"+P5G#5E>+\;BT-4,`:@A9B_[SJVH@,_^-1B!74.A%X`$`
+MBT0D&(/$#(E^0(E^1(E&2(O&7U["!`!5B^QDH0````!J_VB!'T,`4&2))0``
+M``!6B_&#/@!T&(!^$`!T"O]V"/\VZ.'9``#_-NBE(@(`68M-]&2)#0````!>
+MB^5=PU6+[&2A`````&K_:($?0P!09(DE`````%:+\8,^`'0;@'X0`'0-BT8(
+M`\!0_S;HE]D``/\VZ%LB`@!9BTWT9(D-`````%Z+Y5W#5HOQ@+ZX(0```,<&
+MN#5#`'0@5XN^O"$``(7_=!2+S^CDG```:/""``!7Z,/.`0!965^-COA5``#H
+M,O___XV.J#(``.@G____C8[H(```Z"BT``"-CB@0``#H\4D``(O.7NDW@0``
+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
+MBT<8BW<<*\8/A`T&``"%T@^/!08``'P(.\@/A_L%``"-+`Z+SXEL)"CH<:<`
+M`"MO'(OPB\(SR8E$)"2)3"0@#XS6!0``?PB%[0^"S`4``(-[!`$/A8(```"#
+M_@%U?87`=7F+S\9#'@'H,J<``(E$)!RH`70OB\_H(Z<``(O("\IT'HM,)!B+
+MB:!L```#R(M$)!B+@*1L```3PHE+((E#)(M$)!RH`G0KB\_H\*8``(O("\IT
+M'HM,)!B+B:!L```#R(M$)!B+@*1L```3PHE+,(E#-(M,)""+1"0D@WL$`G0*
+M@WL$`P^%&P4``(7`#X<3!0``<@F#_@</AP@%``"#[@$/A*<#``"#[@$/A'<#
+M``"#[@$/A/$!``"#[@$/A(L!``"#[@$/A`0!``"#[@%T.X/N`0^%S00``(-[
+M!`-U#XM'&"M$)"B#^`%U`X/%`8VS*!```%6+SN@8_?__5?\VB\_HFZ4``.F;
+M!```B\_H+:8``(O(B40D','I`HVK""$``(#A`8B+!B$``(O(P>D#@.$!B(L'
+M(0``QH,((@```,9%``"H`70EB\_H\:4``(OPN/\````[\'("B_!658O/Z#VE
+M``"+1"0<Q@0N`*@"=">+S^C(I0``B_"X_P```#OP<@*+\%:-JP@B``"+SU7H
+M#J4``,8$+@"`NP8A````=`V+S^B8I0``B8,((P``@+L'(0```'0-B\_H@J4`
+M`(F##",``,:#!2$```'IUP,``(O/Z&FE``"+SXF#`!$``.A<I0``)`&+SXB#
+M!"$``.A-I0``B_#&A"3``````('^_Q\``',85HV$),0```"+SU#HC:0``,:$
+M-,``````:``@``"-A"3$````4%#H4)L``&@`"```C8,$$0``4(V$),@```!0
+MZ%OS``#I60,``(7)#XQ1`P``?PF#_0$/@D8#``"+S^C8I```B\_HT:0``(7`
+M#X0P`P``4&AT-D,`C40D.,:#\Q````%J%%#H6QL``(/$$(U$)#!H``@``%"-
+M0RA0Z+_<``#I_`(``(7)#XST`@``?PF#_04/@ND"``"+S^A[I```B$0D$R0!
+MBDPD$XK1B$0D%(#B`HA4)!5T-8O/A,!T%>A7HP``:@!0C8M`$```Z/+K``#K
+M$NB$HP``4E"-BT`0``#H'>P``(I,)!.*1"04@.$$B$PD%G0MB\^$P'05Z!FC
+M``!J`%"-BT@0``#HM.L``.L2Z$:C``!24(V+2!```.C?ZP``BD0D$XK(@.$(
+MB$PD%W0T@'PD%`"+SW05Z-JB``!J`%"-BU`0``#H=>L``.L2Z`>C``!24(V+
+M4!```.B@ZP``BD0D$X!\)!0`#X00`@``J!`/A`@"``"`?"05`'0GB\_HDZ(`
+M`+W___\_O@#*FCLCQ3O&<QIJ`%"-BT`0``#HV^<``.L*O?___S^^`,J:.X!\
+M)!8`=!N+S^A;H@``(\4[QG,.:@!0C8M($```Z*WG``"`?"07``^$HP$``(O/
+MZ#6B```CQ3O&#X.2`0``:@!0C8M0$```Z(/G``#I?P$``(O/Z!&C``"%P`^%
+M<`$``&H@C8-T$```QX-P$````P```%#IL?S__XO/Z.JB``"%P'0L4&A4-D,`
+MC40D.&H44.A_&0``BTPD*(U$)$"#Q!!0C4,H4.@5&0``Z2$!``"+S^BSH@``
+MBLC1Z(#A`20!B(O!$```B\^(@\H0``#H2J$```^VP(F#[!```(/X&'8G4&A<
+M-D,`C40D.&H44.@B&0``BTPD*(U$)$"#Q!!0C4,H4.BX&```:A"-@Z$0``"+
+MSU#HM*$``&H0C8.Q$```B\]0Z*2A``"`N\$0````#X2$````:@B-L\(0``"+
+MSU;HAZ$``&H$C40D,(O/4.AYH0``C40D6%#HR]0``&H(5HU$)&!0Z`35``"-
+M1"0P4(U$)%Q0Z+[3``!J!(U$)#10C40D-%#HEMD!`(/$#/?8&L#^P(-[!`.(
+M@\$0``!U&FH(:&@V0P!6Z'39`0"#Q`R%P'4&B(/!$```QH.@$````<>#G!``
+M``4```#&@YL0```!BTPD*(E/'(M'&"O!@_@"#X/*^?__7EU;7X'$L"```,(,
+M`%6#[%RXR1]#`.C9O0$`N"0@``#HJ[X!`%-6B]F-32174XE=(.C3GP``,\EJ
+M!XE-'(E-_%\XB[QL``!T<(N3P&P``#/``]<3P3F#I&P``'Q<?P@YDZ!L``!V
+M4HO+QD5?`>B3%0``BP.-311J"%&+<`R+SO\58#)#`(O+_]:#^`AU/3/)C444
+M45%145"+@[PA``"-LR@0```%)%```%!J!%&+SNBU.0``B75$ZP.(35]7C4TD
+MZ$^A``"#?3P`=0R+R^C'%@``Z;()``"-323H<)\```^WP(U-)(F#Y"$``,:#
+M]"$```#H0)\``(U-)`^V\.A-GP``#[?`C4TDB8/L(0``P>@.)`&(@_0A``#H
+M,9\```^WR(F+\"$``(FSZ"$``#O/<PR+R^@[]___Z4P)``"#[G-T,X/N`70B
+M@^X&=!&#[@%U+L>#Z"$```4```#K(L>#Z"$```,```#K%L>#Z"$```(```#K
+M"L>#Z"$```$```"+@^@A``")@]PA``"#^'5U!&H&ZQ*#^`%U"?:#["$```)U
+M[HU!^5"-323H9J```/^S\"$``(O+Z"GP__^+BZ!L```#R(N#I&P``(F+J&P`
+M`(N+Z"$``(/0`(F#K&P``(E-4(/Y`0^$'0<```^.[08``(/Y`P^.C````(/Y
+M!0^%VP8``(V[D$4``(VSY"$``/.EBH.810``BY.810``)`&(@ZQ%``"+RHO"
+MT>G!Z`*`X0'!Z@,D`8#B`8B+K44``(B#KD4``(B3KT4``(3)=`Z-323H+IX`
+M`(F#I$4``("[KT4````/A&`'``"-323HWIT```^WP(F#J$4``(F#V&P``.E$
+M!P``,\"#^0)J``^5P(UX_X'GL-S__X''T$4```/[B\^)?4CH&(0``&H%68VS
+MY"$``#/2\Z6+=4A"BWU0BD8(BTX((L*(AI@0``"+P='H(L*(AID0``"+P<'H
+M`B+"B(:;$```B\'!Z`HBPHB&H!```(/_`G4+]L$0=`:+PC/2ZP0STHO"B(;P
+M$```@_\"=`KVP1!T!3/`0.L"B\*(AOH0``"XX````"/(.\@/E,"(AO$0``"!
+M^>````!U!XO"BU8(ZQ*+5@BX```!`(O*P>D%@^$'T^")AO00``"-322+PL'J
+M"\'H`X#B`20!B);S$```B(;R$```Z`>=``"-322)1A3H_)P``(U-)(E%5.BD
+MG```C4TDB$88QX9P$````@```.C<G```C4TDB89T$```Z,Z<``"-322)11CH
+M=IP```^VR(E.'(U-).AHG```+#"-322(1B#H<YP```^WP(U-)(E%3.B:G```
+MBU8<B458B48D@_H4<PNH$'0'QH;Q$````3/)B8Z<$```.(Z;$```=$.#Z@UT
+M-$J#Z@%T(H/J!701@^H&=`S'AIP0```$````ZR+'AIP0```#````ZQ;'AIP0
+M```"````ZPK'AIP0```!````BD88QX;\$````@```#P#=!`\!70,/`9S$HF.
+M_!```.L*QX;\$````0```(F.`!$``#P#=2*+15@E`/```#T`H```=1,SP,>&
+M`!$```$```!FB88$$0``@_\"=`HY3B1]!3/`0.L"B\&(AO@0``"+1@C!Z`@D
+M`8B&^1```'0LC4TDZ*B;``"-322+^.B>FP``@WU4_XO0=0R#^O]U!S/`0#/)
+MZQ$SR8O!ZPN#?53_B]&+^0^4P(B&FA```#/``T84B898$```$_DSP`-%5(F^
+M7!```!/1B89@$```@+Z:$````(F69!```'01N/___W^)AF`0``")AF00``"+
+M14R__Q\``(E]5#O'<P6+^(E%5%>-A=#?__]0C4TDZ'&;```SP(-]4`*(A#W0
+MW___=78SR8U^*&:)#_=&"``"``!T/XU-`.@O/@``C870W___4.CW"P(`BU54
+M0%D[T'8@:``(``!7B\HKR%&-C=#?__\#P5"+P8U-`%)0Z`L^```SP&8Y!W44
+M:@%H``@``%>-A=#?__]0Z-#0``!6B\OHP_+__^E6`0``C48H:``(``!0B450
+MC870W___4.@@Z0``BWX,*WU,@^\@]T8(``0``'0#@^\(A?\/C@8!``"-AB@0
+M``!7B\B)15CH&?+__U?_MB@0``"-323HEYH``&@X-D,`C7XH5^C\"@(`65F%
+MP`^%T0```(.^+!```!0/@L0```"+15B+.`^V1PN9B\B+\@^V1PH/I,X(F<'A
+M"`/(#[9'"1/RF0^DS@C!X0@#R`^V1P@3\ID/I,X(P>$(`\B+P1/RB\X/I,$)
+MP>`)B8/`(0``BP.)B\0A``"+<!2+SO\58#)#`(O+_]:+\HOX5E?_L\0A``#_
+ML\`A``#H=L\``%97:@!HR````%97B8/((0``B458Z!:W`0`#@\`A```3D\0A
+M``!24.A*SP``BTU8BW5(BWU0.\%^#HU!`8F#R"$``.L#C7XH:#`V0P!7Z!8*
+M`@!9687`=0?&@[9L```!]T8(``0``'01:@B-AJ$0``!0C4TDZ'R9``#_=1B-
+MCD`0``#H6.```/=&"``0```/A-X```"-323HPI@```^WR(V#P#(``(E%!(V#
+MR#(``(E%"(V#T#(``(E%##/`B_")11"+P8EU3(E%6&H#62O.B]C`X0+3Z_;#
+M"`^$@0```(-\M00`='J%]G02C4TDZ**8``"+3+4$4.CDWP``BTRU!(U%T%#H
+M`=X``/;#!'0#_T7D,\F)3>B#XP-V+VH#6"O#P>`#B448B_"-323H%Y@``(O.
+M#[;`T^"#Q@B+3>@+R(E-Z(/K`77ABW5,:\%DBTRU!(E%Z(U%T%#HX=\``(M%
+M6$:)=4R#_@0/C%W___^+72"+=4@SP%!0_[9<$```_[98$```_[.L;```_[.H
+M;```Z!$.``")@ZAL``"-322)DZQL``"*AO(0``"(12#_=2#HD9@```^WP#D&
+M#X0:`0``:@&Y4`]$`,:#Q&P```'HF#\``(!]7P`/A?T```!7C4,D4&H<Z#H]
+M``#I[````/>#["$```"````/A-\```"-323HCY<```&#J&P``(.3K&P```#I
+MQ0```(V[""(``(O/Z$A^``!J!5F-L^0A``#SI8U-).@HEP``C4TD9HF#'"(`
+M`.A.EP``BHL0(@``B]"`X0&)DR`B``"(B[5L``"+BQ`B``#!Z0.`X0&(B[1L
+M``"+BQ`B``"+P<'H`B0!B(.W;```B\'!Z`8D`8B#NVP``(O!P>@')`&(@[QL
+M``"%TG4+,\!F.8,<(@``=`,SP$"(@[AL``"+P='H)`&(@R0B``"+P<'H""0!
+MP>D$@.$!B(.Y;```B(NZ;```:@=?:@"-323H7Y<```^WP#F#Y"$```^$G@``
+M`(N#Z"$``(/X>0^$CP```(/X=@^$A@```(/X!753@+NN10```'1*BP.+<!2+
+MSO\58#)#`(O+_]:+,S/)*\=1&]&+3A!24/\58#)#`(O+_U80QD5>`8O+Z%UI
+M``#VV!K`]M`B15Z(15Z#[P%UZ(3`=2YJ`[E0#T0`QH/$;````>CR/0``@'U?
+M`'05C4,D4%!J!.B8.P``QH/%;````>L&BT4\B44<C4TDZ-'C__^+3?2+11Q?
+M7EMDB0T`````C65@7<-5@^QHN-L?0P#H0+,!`+AH(```Z!*T`0!35HO9C4TP
+M5U/H/94``#/)B4U@B4W\.(N\;```#X10`0``BY/`;```,\"#P@@3P3F#I&P`
+M``^,-P$``'\,.9.@;```#X8I`0``BP.-31AJ$%'&16H!BW`,B\[_%6`R0P"+
+MR__6@_@0#X47`0``BX.\(0``@+@D40```'4-Z,_C``#&16L`A,!T!,9%:P&+
+MR^BS"@``C44H,\E04?^S8"(``(U%&%"+@[PA``"-NV0B``!7!210``"-LR@0
+M``!0:@51B\[HXRX``("[7"(```!T?8V#="(``&H(4(U%*%#HF<T!`(/$#(7`
+M=&2`?6L`C4,D4%!U7FB`````Z%4Z``"+B[PA``"!P210``#HU+H``(O+Z#`*
+M``"-12@SR5!1_[-@(@``C4484(N#O"$``%<%)%```%!J!5&+SNAL+@``@+M<
+M(@```(V#="(``'6)B750ZR)J!NCZ.0``:@NY4`]$`,:#Q6P```'H+SP``.F$
+M!@``B$UJ:@>-33#HUY4``(/X!W,,B\OH4`L``.EF!@``C4TPQH/T(0```(V[
+MY"$``.@AE```:@2-33")!^B!E0``C4TPB_#H"Y4``(O("\H/A"H&``"%]@^$
+M(@8``(U._8/&!`/P`\B)=60/B`\&``"#_@</@@8&``!1C4TPZ&25```Y=4AR
+MC8U-,.BGE```C4TPB_#HO90``(U-,(F#Z"$``.BOE```B8/L(0``P>@")`$Y
+M-XB#]"$``(M%9(F#\"$``(N#Z"$``(F#W"$```^5P(A%:X3`=#B+R^AEZ___
+M:@.Y4`]$`,:#Q&P```'H.3L``(!]:@!T&(U#)%!0:@3HWS@``,:#Q6P```'I
+M=04``#/`]H/L(0```8E%6(E%5'0HC4TPZ"R4``"+R(E55#/`B4U8.]!R$@^'
+M004``#N+\"$```^#-04``/:#["$```*+\(EU9(E%7'00C4TPZ/.3``"+\(E%
+M9(E57/^S\"$``(O+Z#[D__^+BZ!L``!J`%I24O]U7`/(BX.D;```5A/"4%'H
+MSP@``(F#J&P``#/`B9.L;```0(N3Z"$``#O0#X0%!```#XZ\!```@_H##XXZ
+M`0``@_H$=#V#^@4/A:4$``!268V[D$4``(VSY"$``/.EC4TPZ&R3```D`8B#
+MK$4``#/`9HF#KD4``(B#K44``.EQ!```:@59C;M((@``C;/D(0``\Z6-33#H
+M-Y,``(7`="A0:$`V0P"-10!J%%#HS0D``(/$$(U%`(O+4(U#)%#H9@D``.D[
+M!```C4TPZ`.3```D`8U-,(B#7"(``.BFD0``#[;`B8-@(@``@_@8=@A0:$@V
+M0P#KL&H0C8-D(@``4(U-,.@ND@``@+M<(@```'1?:@B-LW0B``!6C4TPZ!22
+M``!J!(U%9%"-33#H!I(``(U%C%#H6<4``&H(5HU%C%#HD\4``(U%"%"-18Q0
+MZ$_$``!J!(U%"%"-1610Z"G*`0"#Q`SWV!K`_L"(@UPB``#&@[QL```!Z7D#
+M```SP(/Z`FH`#Y7`C7C_@>>PW/__@<?010```_N+SXE]+.AQ=P``:@59C;/D
+M(0``\Z6+@^@A``"-33"+=2R)16"+162)AE@0``"+15S&AOD0```!B89<$```
+MZ/N1``"-33")AI00``#H[9$``(F&8!```(N&E!```,'H`R0!B99D$```B(::
+M$```=!&X____?XF&8!```(F&9!```(N.7!```(N^9!```(N&6!```(N68!``
+M`#O/?`9_"#O"=P2+PHO/B8YL$```C4TPB89H$```Z(.1``#VAI00```"B48D
+M=!:-33#H;Y```&H`4(V.0!```.@*V0``@Z9P$````/:&E!````1T&(U-,,>&
+M<!````(```#H/Y```(F&=!```(.F`!$```"-33#H*I$``(O(B45DP>D'@.$'
+MB$X@B\B#X3^#P3*)3AR#^3)T!\=&'`\G``"-33#H_9```(U-,(A&&.CRD```
+MBXOL(0``,]+!Z09"B_C'AOP0```"````BD88(LJ(CO@0```ZPG4(B9;\$```
+MZPN$P'4'@Z;\$````(M."(O!P>@#(L*(AI@0``"+P<'I!<'H!"+*(L*(COH0
+M``"#?6`"BTUDB(:9$```=0GVP4!T!(O"ZP(SP(B&\!```(J&E!```"+"P>D*
+MB(;Q$```@^$/#[;`N@```@#3XO?8&\#WT"/"B8;T$```#[:&FQ```/?8&\"#
+MX`6)AIP0``"X_Q\``#OX<@*+^%>-A8S?__]0C4TPZ'V/``#&A#V,W___`(V%
+MC-___V@`"```C7XH5U#H8MX``(M-6(O!"T54=`U648U%,(O+4.CJY___BT5@
+M@_@"=1!6B\OH"^?__XM%8(/X`G08:#`V0P!7Z)G_`0!9687`=0?&@[9L```!
+M@'UK``^$S@```%>-0R10:ASH+S0``.F]````C8L((@``Z&EU``!J!8OWC;L(
+M(@``6?.EC4TPZ'R/``"+T#/`0(K*(LB(B[5L``"+RL'I`B+(B(NT;```B\K!
+MZ00BR(O"B(NW;```,\G!Z`-!(L&(B[IL``"(@[ML```SP(B#N&P``/;"`G05
+MC4TPZ"B/``")@]AL```SR3/`0>L&B8/8;```@+NU;````'0(.8/8;```=`*+
+MR(B+N6P``(M-6(O!"T54=!.-@P@B``!048U%,(O+4.CBYO__BT5(B45@ZP>+
+MR^B_Y?__C4TPZ*;;__^+3?2+16!?7EMDB0T`````C65L7<-7B_F`O\5L````
+M=`0SP%_#BP=6BW`4B\[_%6`R0P"+S__6B8>@;```,\F+A[!L``!(B9>D;```
+M7H/H`70.@^@!=4&+S^B,]___ZP>+S^CJ[/__B\B%R70KBX>L;```.X>D;```
+M?QE\#HN'J&P``#N'H&P``'<)B\_H)>7__S/)A<EU"L>'W"$``/\```"+P5_#
+MN/`?0P#HB*H!`+C@Y@``Z%JK`0!6B_&`OL1L````=!R-1B10:AWH5#(``&H#
+MN5`/1`#HP30``.E4`@``@+[P10``!0^'/`(``#/`@[ZP;````P^5P$B#X!6#
+MP!TYANQ%```/AQT"``"+ABA6```+ABQ6``!U#SB&:58``'4'L`'I#0(``%.-
+MGN@@``!7B\OHU(\``%.-C109___H,.```#/;C8T4&?__4_^VQ%8``(E=_.@E
+M\P``BWT(.5T,=5,YGC16``!\'G\,@;XP5@```````780C48D4&H>Z)\Q``#I
+MCP$``(7_=0G&AA$A```!ZR#_MC!6``"+S^CXX____[8P5@``C8[H(```_S?H
+M)I```#B>:U8``'1:BY:\(0``.)HD40``#X1(`0``#[:.<%8``(V&DE8``%"-
+MAIM6``#WV5#_MKQ6``"-AH%6```;R5"-AG%6```CR(V")%```%%0_[9L5@``
+MC8[H(```4^A?CP``:@'_MD!6``"-CJ`A``#H+W```(N&*%8``(V.Z"```/]U
+M#(F&""$``(N&+%8``%:)A@PA``"(GA`A``#H9X\``(I%$(V.Z"```(B&$2$`
+M`(J&:58``(B&-R$``(V&T$4``(E!.(E9/(N&,%8``(N6-%8``(F%7&7__XF5
+M8&7__XB==&7__SB>\$4``'4*4E!1Z*Q7``#K$E/_MNQ%``"-C109___H;NX`
+M``^VEII6``"-AIM6``#WVHV.H"$``!O2(]"-AD!6``!24.A!;P``A,!U*XV&
+M^$4``%"-1B10:A_H5S```&H#N5`/1`#HDS(``(7_=`N+S^BF````ZP*S`8V-
+M%!G__^BNX```7XK#6^L-C48D4&H>Z.\O```RP(M-]%YDB0T`````B^5=P@P`
+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
+M9@]N;"0$#RC@9@]RT`QF#W+T%&8/[^!F#VY$)"AF#V+H#RA$)%AF#V+I9@_^
+M[V8/_NQF#^_%#RC89@]RT`AF#W+S&&8/[]@/*--F#W#;.68/_M8/*,)F#^_$
+M#RC(9@]RT`=F#W+Q&68/[\AF#W#"3F8/[\5F#W#)DV8/[T0D:&8/[]EF#^]<
+M)#@/*0"+10B+@/0````/*5@0,\"+Y5W""`!6BW0D"%>#O@`!``!`=D6+AO@`
+M``"#`$"+CO@```"#.4`;P/?8`4$$_[;P````5N@HZ?__BX[P````@X8``0``
+MP/^V``$``(U!0%!1Z%V@`0"#Q`R+AO@```"+E@`!```!$(N.^````#D1&\#W
+MV`%!!("^!`$```!T"HN&_````(-(!/^+AOP````S_X,(_[B`````BXX``0``
+M*\%0BX;P`````\%74.BBG@$`@\0,_[;P````5NBAZ/__BTPD$(N&]````(L$
+M!XD$#X/'!(/_('SL7U[""`"#/="!1``"?!P/*`50-T,`#RD%D.Y#``\H!4`W
+M0P`/*06@[D,`5HMT)`B+SNB)`P``,]*+CO0```"+@B`W0P")!`J#P@2#^B!\
+MZ8N&]````($P(``(`HN.]````(M$)`PQ00B+CO0```"+1"00#0`@``#!X!`Q
+M00Q>P@P`45>+?"04A?\/A+(```!358ML)!A6BW0D&(N.``$``+N`````BX;P
+M````*]D#P8E\)!`[^W9F4U50Z!R?`0"+AO@```"#Q`P!G@`!``"#`$"+CO@`
+M``"#.4`;P/?8`4$$@SW0@40``O^V\````%9\!^AH[/__ZP7HC.?__XN.\```
+M`&I`C4%`4%'HS)X!`(.&``$``,"#Q`PK^^L75U50Z+:>`0`!O@`!``"#Q`R+
+M7"00,_\#ZX7_#X5<____7EU;7UG"#`"![``!``!35597B[PD%`$``(UL)!`S
+M]HO?BX=("P``.\9V&BO&@_A`=@-J0%A0C8=("0```\904^C^_O__55/HH_W_
+M_X/&0(/%(('#"`$``('^``(``'+!:@B!QT`(``"-="046VH@5E?HS?[__X/&
+M((/K`77O_[0D&`$``%?H9/W__U]>75N!Q``!``#""`!355:+="00,^U7:``"
+M``!5C89("0``4.B)G`$`@\0,B:Y("P``C89`"```:@%54.C[_?__B_V+WE57
+M4^CO_?__1X'#"`$``(/_"'+L7\:&1`D```'&ACP(```!7EU;P@0`@^QX4XN<
+M)(0```!5BZPDA````%:^``(``%>+A4@+```K\(N\))0```")1"0<B70D((7`
+M=%`[_G),5@5("0```\534.A<G0$`@\0,C;U("0``:@A>:D!75>CM_?__@\=`
+M@<4(`0``@^X!=>F+O"24`````UPD("M\)"`A="0<BZPDC````(E<)!2!_P`0
+M``!S!3/V1NL3B[50"P``@_X&=`6#_@=U`VH$7C/`B40D&(-D)!``A?9T>FG0
+M"`$``(O(P>$&`]4#RXE4)"2-7"0HB4PD((/X"'-6B7L(B4L$B1.#_@%V$XN-
+M3`L``%-HL#]``.@JL```ZP>+R^@1Y?__BT0D&(/##(M,)"!`BU0D)(/!0('"
+M"`$``(E$)!C_1"00B4PD((E4)"0Y="00<J6+7"04BXU,"P``A<ET">@DL@``
+MBT0D&(/X"`^"8?___XOW@>;_`0``*_X#WXM\)!R%]G035HV'2`D```/%4U#H
+M,IP!`(/$#(T$-U]>B85("P``75N#Q'C"#`!6:/````"+\6H`5NBLF@$`@Z8`
+M`0```(/$#,:&!`$```!>P[A(($,`Z/.)`0!15HOQB77PZ`!7``"#9?P`C8X<
+MHP``Z.JE``"-CGRC``#&1?P!Z-NE``"-CMRC``#&1?P"Z,RE``"-CCRD``#&
+M1?P#Z+VE``"-CIRD``#&1?P$Z*ZE``"+SL9%_`7HB0$``(M-](O&7F2)#0``
+M``"+Y5W#Z3"Z__^!P3RD``#II*4``+@$(```Z$**`0!35597:@!J`/^T)"@@
+M``#HT5@``(N,)!@@``"+V.A!I@``O0`(``#IH@```(U$)!!0Z$EB``"+\`^W
+M#E'HSEX``("\)!P@````=`N$P'0;,\!FB0;K%(3`=!!5:+`U0P"-1"084.BQ
+MI```:@!J`(U$)!B+^U#H:U@``(OP9H,^*G4Z#[=.`E'H@UX``(3`="QJ+EAJ
+M7&:)A"04$```6%5FB80D%A```(V$)!@0``!34.B.I```C;PD$!```/^T)"@@
+M``!75NB=4@``A,!U)XN,)!@@``"-1"0055#H1J4``(3`#X5$____7UY=6X'$
+M!"```,(4`+`!Z^]5B^Q6:@;_=1"+\?]U"/]U#(V&?*,``%#HX/[__X3`=`2P
+M`>LP@'T4`'0H@[[THP```'0?:@;_=1"-AMRC``#_=0C_=0Q0Z++^___VV!K`
+M_L#K`C+`7EW"$`"!P3RD``#IR*0``%:+\>@Q5@``,\"-CARC``!FB8;Z@@``
+M9HF&&I,``&:)AO""``")AO2"``"(AOB"``#HN:0``(V.?*,``.BNI```C8[<
+MHP``Z*.D``"-CIRD``#HF*0``(V./*0``.B-I```C8YP80``7ND>X/__45%3
+M55:+="0H5XOYA?9T#(-\)#``=@4SP&:)!HM,)!PSVT-3:@"*@?$0``"-:2B(
+M1"08B\__="08B6PD(%7HZO[__X3`=32!QQRC``"+SXE\)!#H/Z0``(O/ZQ3_
+M="0D55?H-%$``(3`=1N+3"000^B5HP``B_B%_W7A,\!?7EU;65G"&`"+;"0@
+MA>UT$_]T)!17Z+*B``#WV!K`_L"(10"%]G0+_W0D,%=6Z,>B``"+P^O)4U56
+M5VBP[D,`B]GH)`$``+JP\D,`O@`!``"+B@#\__^+^FH'70^VP<'I"#,,A;#N
+M0P")#XV_``0``(/M`77F@\($@^X!==-?7EV+PUO#58OLBU4,4XM="%:+=1"%
+M]G0@]L('=!L/M@H/ML,SR,'K"#,<C;#N0P!"B54,@^X!=>"#_@@/@H<```!7
+MB_[![P,S&H/N"(M2!(O*P>D8B\+!Z!`/ML"+#(VP[D,`,PR%L/)#`(O"P>@(
+M#[;`,PR%L/9#`(O#P>@8,PR%L/Y#`(O#P>@0#[;`,PR%L`)$`(O#P>@(#[;`
+M,PR%L`9$``^VPHM5#(/""(E5##,,A;#Z0P`/ML,S#(6P"D0`B]F#[P%U@%^%
+M]G08#[8*#[;#,\C!ZP@S'(VP[D,`0H/N`77H7HO#6UW"#`"+5"0$,\DY2@1U
+M)U9J"(O!7J@!=`G1Z#4@@[CMZP+1Z(/N`77LB02*08'Y``$``'+;7L($`+B"
+M($,`Z'.%`0!14U97:!!A0`!HD&!``&H$B_EH+`$``%>)??#H7(8!`&@084``
+M:)!@0`!J!&AX`0``C;>T!```,]M6B5W\Z#J&`0"-CYP*``#&1?P!Z/R```!H
+ML`0``%-7B9^8"@``Z*R5`0!HX`4``%-6Z*"5`0!H``0``(V'I`L``(F?L`0`
+M`%-0B9^4"@``Z(*5`0"+3?2#Q"2+QV2)#0````!?7EN+Y5W#S,S,S,S,S,S,
+MS,S,45:+\8ET)`3HOHP``(O&7EG#58OL9*$`````:O]H@1]#`%!DB24`````
+M5E>+^6BP!```5^@*CP``:.`%``"-M[0$``!6Z/F.``!H$&%``&H$:'@!``!6
+MZ-J%`0!H$&%``&H$:"P!``!7Z,B%`0"+3?1?9(D-`````%Z+Y5W#S,SI>HP`
+M`(/L)%-55HMT)#0SVVH@78,^`G5#BT8$5U-34U.)1"0@C40D)%!J!(U$)"A0
+M5?]T)%SHI`8``(E>!(O3B_L/MD04%(O*@^$#P>$#T^`S^$([U7+JB7X$7X,^
+M`W4G4U-34XU$)""#Q@105595_W0D6.AF!@``58U$)!105NB[E0$`@\0,7EU;
+M@\0DP@@`BX&8"@``@\#\@_@!=Q?_="0$@<&<"@``_W0D#/]T)`SHM8,``,((
+M`('L@`$``%-65XN\))@!``"+V8"_``$````/A+L```"+M"24`0``A?8/A*P`
+M``!5O8````")LY@*``!5C40D%(O/4.@%C```58V$)!0!``!0C40D&%#HB[8`
+M`(/N!'0^@^X!=53_M"2P`0``C40D%(O+_[0DL`$``/^T)+`!``#_M"2P`0``
+M_[0DL`$``%!7_[0DL`$``.@T`P``ZQO_M"2@`0``C40D%(O+4%?_M"2@`0``
+MZ#````!5C80D%`$``%#H1(T``&@``0``C40D%%#H-8T``+`!7>L",L!?7EN!
+MQ(`!``#"(`"![!@"``!358O95E>)7"04,_^-LRH!``#_M"0P`@``C8[6_O__
+MZ+F*``"$P'0Q@[PD.`(```!U!8`^`.L<@#X`=!UJ"/^T)#P"``"-1MA0Z)6=
+M`0"#Q`R%P`^$/0(``$>!QBP!``"#_P1RK6@(`0``C80D)`$``%#_M"0\`@``
+MZ+&U``#_M"0T`@``Z$+5`0"+Z`/M@[PD/`(```!9=!YJ"/^T)#P"``"-C"0H
+M`0```\U1Z.B3`0"#Q`R#Q0B-1"1@4.BBE0``,]M5C80D)`$``%"-1"1H4.A=
+ME@``B\.(7"00P>@(B$0D$8O#P>@0B$0D$HU$)!!J`U"-1"1H4.B7E0``]\/_
+M/P``=2]J&%F-1"0X4(V$),0```"-="1DC;PDQ````/.E4.AVE```BD0D2(O+
+MP>D.B$0,*$.!^P``!`!RAHU$)$Q0C40D9%#H490``(M<)!0STFH078UT)!@#
+M\C/)BT043-/H@\$(B`9&@_D@<N^#P@0[U7+@:;NP!```+`$``(NT)#`"``!J
+M0%D#^_.E,\DYC"0X`@``#Y7!9J5I@[`$```L`0``B(P8*@$``(#Y`74C:8.P
+M!```+`$``&H(_[0D/`(```4"`0```\-0Z,B2`0"#Q`Q5C40D'%!I@[`$```L
+M`0``!0H!```#PU#HJ)(!`&F#L`0``"P!``"#Q`QJ`&H!!0H!``!5`\-0Z`:*
+M``!5C40D+%!I@[`$```L`0``!1H!```#PU#H;)(!`(N#L`0``(/$#$"#X`.)
+M@[`$``"-A"0@`0``:`@!``!0Z,J*``"-1"0H4&B`````C40D(%#_M"0X`@``
+MC8N<"@``Z"!_``!5C40D'%#HGHH``%6-1"0L4.B3B@``7UY=6X'$&`(``,(0
+M`&H0:?<L`0``C8,*`0``754#QE"-1"0@4.CFD0$`@\0,C40D&&H`:@!54.A1
+MB0``C8,:`0```\954(U$)#!0Z,"1`0"#Q`SI<?___X'L9`(``%.+G"2``@``
+MB\&)1"0$@_L8#X??`0``558S[8VPM`0``%>+_3F>-`$``'4R_[0D?`(``(O.
+MZ+R'``"$P'0@:A#_M"2(`@``C88"`0``4.BIF@$`@\0,A<`/A*(!``!'@<9X
+M`0``@_\$<KJ^``(``(U$)'164/^T)(@"``#H_;(``#/`B\M`T^!0C40D.%"-
+M1"1<4(U$)"!0:A#_M"28`@``C80DC````%#HM-(!`%E0C80DD````%#HGP,`
+M`%:-1"1X4.AMB0``BU0D$(NT)'P"``!J0(N*E`H``(V:M`0``(O!@^`#:<!X
+M`0```]B-00&)@I0*``"+^XN$))`"``!9B8,T`0``C8,"`0``\Z5J$/^T)(@"
+M``!09J7HDI`!`&H@7U>-1"0D4(VS$@$``%;H?9`!`%>-1"104(V#.`$``%#H
+M:Y`!`%>-1"1\4(V#6`$``%#H69`!`(/$,%5J`5=6Z,F'```YK"20`@``=!57
+MC40D6%#_M"28`@``Z#&0`0"#Q`R+M"24`@``A?9T*&H(55;HNHX!`(/$#(I$
+M+#2+S8/A!S`$,44[[W+O5XU$)#A0Z'Z(``"#O"2(`@```'0G_[0DB`(``(M,
+M)!2-1"08:``!``!0_[0DA`(``('!G`H``.C$?```5XU$)!A0Z$*(``!?7EU;
+M@<1D`@``PB``:B!?5XV&$@$``%"-1"0<4.B=CP$`@\0,C40D%%555U#H"H<`
+M`%>-AC@!``!0C40D/%#H>X\!`%>-AE@!``!0C40D:%#H:8\!`(/$&.D5____
+M@>R\`0``4XN<),@!``!55E=J0%\[WW8]C80D9`$``%#HCI,``%/_M"34`0``
+MC80D;`$``%#HOY,``(U$)%10C80D:`$``%#H=I(``&H@C40D6%OK!XN$)-`!
+M``"+K"3D`0``B40D$(7M=!R+E"3H`0``@#H`=!!J&EF+]8V\))0```#SI>MA
+M,]*%VW0:B_"-1"04*_"-3"04`\J*!`XT-D*(`3O3<NX[WW,6B\>-3"04*\,#
+MRU!J-E'H0XT!`(/$#(V$))0```!0Z.62``!7C40D&%"-A"2<````4.@8DP``
+MBY0DZ`$``(7M=!:`.@!U$6H:68VT))0```"+_?.EQ@(!_[0DW`$``(V$))@`
+M``#_M"3<`0``4.C<D@``C40D=%"-A"28````4.B3D0``BZPD[`$``(7M=!R+
+MA"3P`0``@#@`=!!J&EF+]8V\)/P```#SI>MFA=MT'HM4)!"-1"04*]`S]HU,
+M)!0#SHH$"C1<1H@!._-R[H/[0',7:D!8*\.-3"044`/+:EQ1Z'",`0"#Q`R-
+MA"3\````4.@2D@``:D"-1"084(V$)`0!``!0Z$22``"+A"3P`0``A>UT%H`X
+M`'41:AI9C;0D_````(O]\Z7&``%J((U$)'A0C80D!`$``%#H#Y(``/^T).`!
+M``"-A"0``0``4.C$D```7UY=6X'$O`$``,(D`%6-;"2H@>R0`0``4U:+=6Q7
+M:D!8._!S`HO&4/]U:(U%N%#H+XT!`(/$#,=$-;@````!,\!04%!0C44<4(U&
+M!%"-1;A0_W5D_W5@Z*;]__]J(%M3C44<4(U%_%#H]HP!`(M%?(/$#$C&158`
+MB45(,_;&15<`:A!8B45,B450BT5PB44\BT5TB45`BT5XB45$BWPU2(7_=$^-
+M15=0C84P____4(U%5E"-A<C^__]0C4684%.-11Q0_W5D_W5@Z#3]__]3C468
+M4(U%'%#HAXP!`(/$##/)BD0-'#!$#?Q!.\MR\X/O`76Q4XU%_%#_=#4\Z&*,
+M`0"#Q@2#Q`R#_@QRD&I$C46X4.C/A```4XU%_%#HQ80``%.-11Q0Z+N$``!3
+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
+MP<-6BW0D"#/`5XOX9CD*````4U5J+H/&`C/;70^W1OY0Z)1)``"$P'1G
+M#[<&9H7`=%]0Z())``"$P'559CDN=1X/MT8"4.AO20``A,!U"C/`9CE&`G4*
+MZP(SP+,!ZP0SP(K89CDN=1YF.6X"=1@/MT8$4.A"20``A,!U"#/`9CE&!'4"
+ML`&$VW4%A,!U`4<SVX/&`F8Y7OYU@EU;B\=?7L($`+B?($,`Z&1S`0"XF#``
+M`.@V=`$`@#VS#D0``'4;:)`W0P#HMPH``&BX-T,`Z*T*``#&!;,.1``!4U97
+M:!@4``"-3=3H4J'__XMU$#/;:``(``")7?R-A@01``!0C86$[___4.CCC@``
+MC86$[___4.@IQ@$`:@2)1>B-O83O__^+QVCT-T,`4.B&Z`$`@\00]]@:P/[`
+MB47PA,!T-&H$C;V,[___B\=H`#A#`%#H8>@!`(/$#(7`=1AJ7%AFB86$W___
+MC;V2[___C86&W___ZP:-A83?__]74.@3Z`$`C86$W___4.BTQ0$`BWT,@\0,
+MB47LBT4(.)B780``=3PX7?`/A2\#``"-A@01``!0Z"I'``"$P`^%&P,``(V&
+M!!$``%!7C48H4/]U".AM!P``A,`/A/\"``"+10@/MH!'80``4&H!5^C`+@``
+M5^@^,```A,!T'5?H2#```%#HD#```%>$P'0'Z'XO``#K!>C*+P``.)[Q$```
+M#X6V````.)X$(0``#X6J````4VB`````:@%34V@```!`5_\5)#!#`(/X_W40
+M5[E0#T0`Z,'Z___I@@(``%#_%1@P0P"+A@`1``"#^`,/A8P```"+3=2+5>B+
+M1>P#PL<!`P``H(TT$F:)<0J-!$4,````9HE!!#/`B4$&C86$[___4(U!$%#H
+M[^8!`(U&`HMUU&:)1@R+1>P#P&:)1@Z-A83?__]0BT7H@\`)C01&4.C&Y@$`
+M@\00Z:$```!35_\5'#!#`(7`#X5X____5U-J%.A!^?__N5`/1`#IK0```(/X
+M`G0)@_@!#X72`0``BTW4BU7HBT7L`\+'`0P``*"--!)FB7$*C01%$````&:)
+M000SP(E!!HV%A.___U"-0110Z%7F`0"-1@*+==1FB48,BT7L`\!FB48.C86$
+MW___4(M%Z(/`"XT$1E#H+.8!`(M%\(/$$`^VP(/P`8E&$%-H```@`FH#4U-H
+M````P%?_%20P0P"+R(E-\(/Y_W4;OE`/1`!7B\[H;_G__XO.:@GHR_K__^DG
+M`0``4XU%T%`/MT8$4U.#P`A05FBD``D`4?\5$#!#`(7`=7;_=?#_%1@P0P!7
+M4VH5Z$SX____%0`P0P"#^`5T!STB!0``=1OHOHT``(3`=1)J&(U-A.A"H/__
+MC4V$Z+2;``"^4`]$`(O.Z*/Z__]J"8O.Z%+Z__^+=1!7.)[Q$```=`O_%2`P
+M0P#IG````/\5*#!#`.F1````C8U<S___Z"$B``#_=?"-C5S/___&1?P!Z/P&
+M``"+70B+=1"+B]AR``#WV8V&4!```!O)(\B-AD@0``!1BXO4<@``]]D;R2/(
+MC89`$```48N+T'(``/?9&\DCR%&-C5S/___H$2D``(V-7,___^AT(@``@+NH
+M80```'4)_W8D5^@I,```C8U<S___LP'HU2$``(U-U.B?G___BTWTBL-?7EMD
+MB0T`````B^5=P@P`N%,A0P#H$F\!`+A@$```Z.1O`0`SP%>)1>")1>2)1>B)
+M1>R(1?"+?0B+SU!0B47\C47@4.A1Q/__A,`/A,H```"`/;(.1```=29H:#=#
+M`.@X!@``A,!T!\8%L0Y$``%HD#=#`.@C!@``Q@6R#D0``8`]L0Y$``!6:@=>
+M=`-J#UY3BUW@4U;_=0S_%0`@1@"%P'5V:``(``"-A93O__]0_W4,Z'U!``"$
+MP'034U:-A93O__]0_Q4`($8`A<!U2_]U#(U')%!J4NAN]O___Q4`,$,`OU`/
+M1`"+\(O/Z.KX__^#_@5U&^C9BP``A,!U$FH8C4V4Z%V>__^-393HSYD``&H!
+MB\_H>?C__UM>C4W@Z'>>__^+3?1?9(D-`````(OE7<((`%6+[(/L3%;_=12+
+M=1!65NCO1P``5NC]*P``A,!U+/]U#&H6Z+WU__]J%XU-M.C_G?__C4VTZ'&9
+M``!J";E0#T0`Z!CX__\RP.M-BT4(4P^V@$=A``!0:@'_=0SH,RH``&H`5O]U
+M#/\5+#!#`(7`#Y7#A-MU'_]U#&H6Z&;U__^^4`]$`(O.Z!OX__]J"8O.Z,KW
+M__^*PUM>B^5=PA``N,H@0P#H4&T!`+C(8```Z")N`0!35HMU##/`5V8Y!G0M
+M9CE&`G4GOP((``"-A>SO__]7:&`W0P!0Z/F(``!75HV%[.___U#HPX@``.L3
+MOP((``"-A>SO__]75E#HUH@``(M="(V%?+___V@`"```4%/HC0$``&:#O7R_
+M__\Z=!U6C4,D4&I3Z.ST__]J`[E0#T0`Z"CW___I+`$``(!]$`!T+(V-+)__
+M_^@.'P``:@&-A2R?__\S_U!7B\N)??SH!,+__XV-+)___^GU````5XV%?+__
+M_U"-A>SO__]0Z"R(``"-C7S/___H,?C__S/_C85\S___5U!6Z,$M``"+C83?
+M__^(1?/VP0%T"H/A_E%6Z"<M``"-C<3?___HFQX``&H1C87L[___QT7\`0``
+M`%"-C<3?___H.2<``(3`=!]7C87$W___B\M05^AXP?__A,!T"XV-Q-___^@7
+M'P``C8U4K___Z%(>``"`??,`QD7\`G0S:@56C8U4K___Z-0A``"$P'0AC86T
+MW___4(V%K-___U"-A:3?__]0_[58K____Q44,$,`_[6$W___5NB*+```C8U4
+MK___Z#@>``"-C<3?___H+1X``(M-]%]>6V2)#0````"+Y5W"#`"+1"0,@[BP
+M;````W45!8`B``!0_W0D%/]T)`SH\/?__^L",L#"$`!5B^RX`"```.@F;`$`
+MBT4(5X.XL&P```*+B/A5``"+N/Q5``!U(8M%$-'O2#OX<@*+^%:+=0Q75E'H
+MTIP``#/`9HD$?E[K-KC_'P``._AR`HOX5U&-A0#@__]0Z/-\`0"#Q`S&A#T`
+MX/__`(V%`.#___]U$/]U#%#HSIP``%^+Y5W"#`!145-55E?_="0@Z,@_``"$
+MP`^%Y@```(M\)"A7Z+8_``"$P`^%U````(MT)"0SVXOKB5PD$&8Y'W1>:BZ#
+MQP2+PUEF.4_\=31F.4_^=2X/MP=0Z"5```"$P'4%9CD?=14Y7"00=`X/MT?Z
+M4.@,0```A,!T`46+1"00:BY9@\<"0(E$)!!F.5_\=;B%[7X*5NAT````A,!U
+M9?]T)"#H(/;__XE$)!2+1"0<!1(@``!0B40D%.A*O0$`B_A9A?]T)U?_="04
+M5NBMWP$`@\0,A<!U%8TT?NL#@\8"#[<&4.B:/P``A,!U\%;HU?7__SEL)!1\
+M!SO%?`,SVT.*P^L",L!?7EU;65G"$`!5B^RX2"```.B::@$`_W4(Z.6\`0!9
+MN0`(```[P7($L`'K?U91_W4(C84`\/__4.ATA0``C84`\/__4.BZO`$`68VT
+M1?[O___K2P^W!E#H(3\``(3`=#LSP(V-N-___V:)!N@I]?__:@&-A;C?__]0
+MC84`\/__4.BT*@``A,!T$H"]Q>___P!U'X"]Q.___P!T%H/N`HV%`/#__SOP
+M=ZLRP%Z+Y5W"!`"P`>OU5HMT)`Q7BWPD#("_`6(```!U*H"_E&$```!T(8V&
+M^$4``&@,.$,`4.A7O`$`65F%P'4*_W0D%%;HQOG__XV&^$4``&@4.$,`4.@V
+MO`$`65F%P'42#[:'`6(``%#_="085NA?^___7U["#`#"#`!65XOYBP>+<`B+
+MSO\58#)#`(O/_]:+1"0,B4<$7U["!`!5B^R#[!2-1?Q34&H@,]O_%0PP0P!0
+M_Q4(($8`A<!T2HU%\,=%[`$```!0_W4(QT7X`@```%/_%10@1@"%P'0A4U-3
+MC47L4%/_=?S_%0P@1@"%P'0,_Q4`,$,`A<!U`K,!_W7\_Q48,$,`BL-;B^5=
+MP@0`58OL@^Q,_W4(C4VTZ$68__^+3?2#^0AS,(M%#(E$C;2+3?1!B4WT@_D(
+M<QV+11")1(VTBTWT08E-](/Y"',*BT44B42-M/]%](U-M.A_DP``B^5=PA``
+MN.\@0P#HO&<!`%%14U:+\8EU\%>#)@"-7A"#9@0`B\OH>$P``(M]"#/`@V7\
+M`(E^"&:)AO8```!FB8;X$```(8;D````:.#F``#H-6<!`%F)1>S&1?P!A<!T
+M"E.+R.BAG0``ZP(SP(F&X````(O(_[?@@@``QD7\`.A`R```BTWTB\9?7EMD
+MB0T`````B^5=P@0`5E>+^8NWX````(7V=!2+SNBYGP``:.#F``!6Z`1G`0!9
+M68U/$%]>Z8%,``"+5"0$BT$$.T($=PUR!HL!.P)S!3/`0.L",\#"!`"+1"0$
+MBQ&+200[2`1W$W($.Q!W#3L0=04[2`1T!#/`ZP,SP$#"!`!35HMT)`R#OK!L
+M```#=0R#OIPB```R#Y?`ZPJ#OIPB```=#Y7`@+Z@(@````^4P_[+(MAT&O]T
+M)!"#QB2Y4`]$`%;HW_'__U9J).A@[O__#[;#7H/P`5O""`#H]"\``"T!!0``
+M]]@;P"4```P`!0``!`##N$@0``#H(6<!`%-55HOQ,]M7C4PD$(M&"(B>^"``
+M`&:+@/J"``!FB49<Z.7Q__^-OO8```"]``@``.LJ4XU$)!105^AL)P``A,!T
+M&HN$)!`0```!AI@```"+A"04$```$8:<````BTX(55?HS-W__X3`=<B+3@B!
+MP3RD``#HRH(``.M0.)DG40``=`N!P210``#H9FX``&:)GO(```"+SNAC!0``
+M@_@!=/13C40D%%!7Z/XF``"$P'0:BX0D$!````&&D````(N$)!00```1AI0`
+M``"+3@A55^A>W?__BTX(A,!UGSB9)U$``'0+@<$D4```Z`5N```YGN0```!U
+M/(M&"&:#N/J"``!)="^A4`]$`(/X"W0E.)[X(```=0U7:D3H%>W__Z%0#T0`
+MA<!U#&H*N5`/1`#H>>___U]>75N!Q$@0``##N`00``#HVF4!`%>+^8M'"("X
+M`6(````/A=0!``"`N*AA````4XN<)!`0```/E,!55@^VP(VW^!```/^SI"(`
+M`%!6Z&<C``"+Z(7M#X1!`0``5NC0(@``B$0D$X3`=$Y6Z-8B``!0Z!XC``"$
+MP'4R:@"-@\`R``!0_[/D,@``C40D'_^SX#(``%!H``@``%9J`/]W".@C%```
+M,L"(1"03ZP2*1"03A,`/A<$```"+1P@/MH!'80``4&H!5NCC(```BT<(_[.D
+M(@``@+BH80````^4P`^VP%!6Z-$B``"+Z(7M#X2K````5NA&.0``A,!U>8U#
+M)%!J<NCYZ___:``(``!6C40D'%#HV7\``&H!5NC[.@``5N@-(@``A,!T%%;H
+M%R(``%#H7R(``(3`=`2P`>L\,L"(1"03BT<(#[:`1V$``%!J`5;H6"```(M'
+M"/^SI"(``("XJ&$````/E,`/ML!05NA&(@``B^B*1"03A>UT((3`#X2!````
+MBT<(@+BH80```'4,_[.D(@``5NA9)```QH?W$````8"_]Q````!T3%93_W<(
+MZ*CZ__^+5PB-@]`R``"+BMAR``#WV1O)(\B-@\@R``!1BXK4<@``]]D;R2/(
+MC8/`,@``48N*T'(``/?9&\DCR%%6Z&0B``!>75M?@<0$$```P@@`5HU#)%!J
+M%.@?Z___O5`/1`"+S>BC[?__:@F+S>A2[?__Z7C___^X4!```.BY8P$`4U6+
+MZ;,!BT4(#[>0^H(``(/Z170)@_I8#X4B`0``@+@!8@````^%%0$``%97B[PD
+M9!```(VU^!```&H!C8_`,@``4?^WY#(``(U,)!__M^`R``!1:``(``!6_[0D
+MA!```%#H*A(``(3`#X7/````,MLX7"03#X7#````C4<DN5`/1`!64.@NZ___
+M5NAL(```A,!T)%;H=B```%#HOB```(3`=!1J8HU,)!CH9Y+__XU,)!3HV(T`
+M`%;H2C<``(3`=7R-1R10:G+H_>G__V@`"```5HU$)&A0Z-U]``!J`5;H_S@`
+M`(M%"`^V@$=A``!0:@%6Z(`>``!J`8V'P#(``%#_M^0R``"-1"0?_[?@,@``
+M4&@`"```5O^T)(00``#_=0CH:A$``(3`=`2S`>L/5HU')+E0#T0`4.AZZO__
+M7UY=BL-;@<10$```P@@`5HOQBT8(@+@D40```'4?!210``!0_W0D$&H!Z&F2
+M``"$P'0,BTX(QH$G40```;`!7L((`%%3BUPD&%56BW0D'%>+^5.+1P@%$B``
+M`%!6Z!I]``"+1P@SR042(```B4PD$&8Y"'0D4.@].@``#[<H5>C$-@``A,!U
+M$57HJ#4``(3`=0=35NBI+P``BT<(:CI9@[A<80``!`^WJ/J"``!U&8/]6'44
+M4>A\-0``A,!T"C/`QD0D$`%FB0:#_45T$XM'"(.X7&$```%T!U/_="0@ZPM3
+M_W0D(.CJ.0``4%;H8WP``(M'"("XHV$```!U!E;H"C<```^W!E#H])4``(!\
+M)!``#[?X=#IJ7UMF.5X"=1P/MT8$4.@?-@``A,!T#HU'OV:#^!EW!6HZ6.L1
+M9CD>=1!F.5X"=0IJ7%AFB09FB48"7UY=6UG"$`"X!"%#`.@]8`$`N$R=``#H
+M#V$!`%:+\8V-J&+___]V".APCO__@V7\`(V&]@```%"-C:AB___H3QL``(3`
+M#X0Y`0``:@&-C:AB___H:93__X3`=1%J`;E0#T0`Z$WJ___I%P$``("];<__
+M_P`/A0H!``!35S/;,_\XG5W/__]T>V@`"```C87,8O__4(V%\.___U#HC'L`
+M`#B=8L___^L3`[VH[___$YVL[___@+UBS___``^4P`^VP%!H``@``(V%\.__
+M_U#H\#8``(V-J-___^@VZ___:@"-A:C?__]0C87P[___4.C!(```A,!UL0&^
+MF````!&>G````(V%J&+__XO.4.B/````BT8(:DE:7P^WB/J"``!;@_E4=`5F
+M.\IU!\:``6(```&+1@AF.9#Z@@``=!J`N`%B````C8[V````40^4P`^VP%#H
+M%9```(V-J&+__^BYF/__C8VH8O__Z+^S__^-3?-14(V%J&+__XO.4.B$````
+MA,!UWHV-J&+__^B_C___BTWT,\!>9(D-`````(OE7<-35HOQBTPD#.C3$P``
+MB49H,]N+1@B)5FR)GN@```")GNP````XF"11``!U#>B8CP``A,!U!(O#ZP,S
+MP$"+SHB&]A```(A>7XB>]Q```,:&\0````&(GO0```#H\H<``%Y;P@0`N"0A
+M0P#H05X!`+B@40``Z!-?`0!3BUT(,])7B_F)?>"+1P@/MX#Z@@``B47H.54,
+M=2HX5U]T'%!2C4<04%/HL?\``(3`=1-J`;E0#T0`Z%[H__\RP.F3````,])6
+MB[/<(0``@_X"#X23````@_X#=1V`O_<0````#X03#```C8?X$```4%/_=PCH
+MGO3__X/^!0^%^@L``("[K$4````/A`$,``"+=>@SP%90C4<04%/H/_\``(3`
+M=1%J`;E0#T0`Z.SG___IVPL``(L#,\E1_[.D;```BW`0B\[_LZ!L``#_%6`R
+M0P"+R__6L`%>BTWT7UMDB0T`````B^5=P@P`B)?W$```.9/<,@``?Q9\"#F3
+MV#(``',,B9/8,@``B9/<,@``.9/D,@``?Q9\"#F3X#(``',,B9/@,@``B9/D
+M,@``BT\(.9%@80``=1N+@32C```YA^P```!R#8"_\0`````/A3X+``"^``@`
+M`(A5[5:-A52N__]04FH&C47M4(V#@"(``%#H)]7__X7`#Y7`B$7NA,!T#H!]
+M[0!U"#/`B(?Q````B\OH0I?__U:-A<3N__]0C8.H(@``4.@++```,\E!@+MS
+M,P```(E-Y'13BT<(BX#$<@``.\%T9(!][0!U7H7`#Y3`_L@@1>XSP%"-A<3N
+M__]0Z#4U``"+3PB+B<1R``!).\AU$C/)C87$[O__05%0Z!<U``#K)3/`B$7N
+MZQZ+R^BOE___A,!U$XM'"#/)03N(Q'(``!K`]M`@1>Z*@QDS``"(1U\SP(A'
+M8(N+J&P``"N+V#(``(LS4(N#K&P``!N#W#(``%!1BTX0_Q5@,D,`B\O_5A`S
+MTHK"BLJ(3?*(3=PX1>YU%HJ3M&P``(A5\HA5W(32#X3>"0``,]*+1PB+=>AJ
+M28J(`6(``%B$R70'9COPL`%U`HK"_W7<A,E0#Y3`#[;`4(V%Q.[__U#HL(P`
+M`(3`#X3)"0``:``(``"-A_@0``"+SU")1<B-A<3N__]04^CU^?__,\`X1?)U
+M%68YA_@0``!T#,9%\P$X@Q@S``!T`XA%\XM'"&I%66I8@+A780```%J)3<R)
+M5=!U"8"X6&$```!T=V8[\70%9COR=6V-C53.___HP>;__S/`4(V%5,[__U"-
+MA_@0``!0Z$L<``"$P'0VC8/`,@``4(V-9-[__^CG\___A,!T,H"]8-[__P!T
+M$%>-C63>___HL//__X3`=!DSP(A%\^L2BT<(@+A780````^5P/[(($7SC87$
+M[O__B\]04^C)\___A,!U(FH"N5`/1`#HX>3__XO+Z!J4__^`N[1L````#Y3`
+MZ0;]__^`NQLS````=!>-A<3N__^+SU!3Z+WX__^$P`^$W````(MW"(V]Q/[_
+M_VI`@<8D4```6?.E9J4/MHL@,P``C478BWW@,])0C8-+,P``B57\4/^S;#,`
+M`/?9C8,Q,P``4!O)C8,A,P``(\B-A<3^__]14/^S'#,``(U/$%+H)D```("[
+M&S,````/A),```"`NT$S````#X2&````:@B-1=A0C8-",P``4.C_=`$`@\0,
+MA<!T;8"[Q&P```!U9("_]A````"-A<3N__]0C4,D4'4X:(````#HJ>'__XM/
+M"('!)%```.@K8@``@TW\_XV-Q/[__^BI80``Z03____&A_@@```!Z;<'``!J
+M!NATX?__:@NY4`]$`.BPX___,\"(1?.#3?S_C8W$_O__Z'%A``"-C9S>___H
+MC0L``(N#@#,``,=%_`$```")1=1J4%J%P`^$C0```(/X!0^$A````(I-\XMU
+MZ(3)#X3]````9COR#X3K````BT<(@+@!8@````^%VP```#/`B$7OC8?X$```
+M4.CN%@``A,!T-8!][P!U.3/)C8/`,@``45#_L^0R``"-1>__L^`R``!0:``(
+M``"-A_@0``!04?]W".A*"```@'WO``^$A````#/`BLB(3?/K?HO+Z`B4__^$
+MP'10@'WS``^$G@```(M%Z&:#^%`/A)$```!J25EF.\$/A(4```!J15EF.\%T
+M?8M'"#/)03F(7&$``'1O_X?D````C87$[O__4%.+S^@B\___ZUB*3?.$R70B
+MC86<WO__B\]04^@K]?__BW7HBLB(3?/K`XI-\X3)=4SK`XMUZ("[M&P```!T
+M-C/`0%"(1?*(1?,SP%!0C87$[O__4.@2B0``A,!U(#/`B$7DC8V<WO__Z&$*
+M``"*1>3I7OK__X3)#X3$!0``BT<(@+@!8@```'00QH?W$````8"X`6(```!U
+M28I%\H3`=44SP&I0B$7O6&8[\'1`C8V<WO__Z$\-``"$P'0QC8?X$```4(US
+M)%9J.^B"W___C8?X$```N5`/1`!05NC4XO__ZPN*1?+&1>\!A,!U!O^'Y```
+M`/^'Z````(VS\#(``#/`C8_(````B8>`````B8>$````B8>(````B8>,````
+MBT<(_[#@@@``_S;H)QX``(M'"(V/H````/^PX((``/\VZ!$>``"+@]@R``"-
+M=Q"+B]PR``")1S"-A9S>__]0B4\TB\Y3Z%(]``"*5>\SR8I%\HA7.8A'.HE-
+MW(E-Y(32#X6=````.(O$;```#X61````B[/D,@``BY/@,@``._%\?G\(@?I`
+M0@\`=G2+B]@R``"+@]PR```/I,@*P>$*.\9\6'\$.\IV4C/`._!\(W\(@?H`
+MX?4%<AF+R^B$"P``.Y/<,@``?#-_"#N#V#(``'8I_[/D,@``C8V<WO___[/@
+M,@``Z)<-``"+@^`R``")1=R+@^0R``")1>2*1?(SR8UW$(M7"("ZH&$````/
+ME(6UWO__@'WO`'44A,!U$&I06&8Y1>AT!S/`0(K(ZP,SP$"#?=0`B$WPB$7L
+MB$7Q#X0)`0``B[.`,P``@_X$=&>#_@5T8COP=$*#_@)T/8/^`W0XC8?X$```
+M4(U#)%!J1^B]W?__,\F*P8A%\8I-\,9%[`"$R0^$N0```(3`#X2Q````,\!`
+MZ:L```"$R0^$A````(V'^!```%!3C4<04%+HX>G__^M@:``(``"-A52^__^+
+MSU"-@X0S``!04^CF\___BDWPA,ET3F:#O52^__\`=$2-A52^__]H``@``%"-
+MA_@0``!0@_X$=0K_=PCH&>?__^L2C4,DB\]0C86<WO__4.A>`P``B$7QA,`/
+MA%K___^*3?#K`XI%\8.[L&P```(/A4S___^$R0^%3/___^D[____,\"(A_<0
+M``#K?H"[&#,```!U=8"[H"(```!U%/^SY#(``/^SX#(``%;HQ0,``.M8#[:#
+M<#,``(N/X````%#_LW0S``#HT9T``(N'X````(N+X#(``(N3Y#(``(F(2$P`
+M`#/)B9!,3```B(A@3```#[:#<#,``(N/X````%#_LYPB``#H09H``(O+Z.>-
+M__^`NQDS````=3`/MI-*,P``C8-+,P``]]J-C\@````;TB/0C8/P,@``4E#H
+M!!L``(3`=`:Q`3/`ZP0SP(K(@+MP,P```'4(B(?T````ZR:`NZ`B````=!TY
+M@^0R``!\%7\(.8/@,@``=@N$R70'QH?T`````8!]\@"(1?!U7X!][`!T683)
+M=54XBQLS``!T*#B+03,``'0(.(O$;```=!B`O_0`````=0^-A<3N__]0C4,D
+M4&H$ZPV-A<3N__]0C4,D4&H#Z);;__]J`[E0#T0`QD7P`>C.W?__BD7P@WW4
+M`(I5\701@[N`,P``!'4(A-)T!+$!ZP(SR8!][P`/A4X!``"+=>AF.W70=`IF
+M.W7,#X4[`0``@WW4`'09A,EU%8.[@#,```4/A20!``"$T@^$'`$``(3`=!.+
+M1PB`N*!A````#X0(`0``BD7PA,D/A;X```"+5>0SR3O1BTW<=P2%R70?A,!U
+M$#F/B````'4(.9>,````=`N-C9S>___HR@T``(M7"(VST#(``(V[P#(``(N"
+MV'(``(N*U'(``/?8&\`CQO?94!O)C8/(,@``(\B+@M!R``#WV%$;P(V-G-[_
+M_R/'4.@F#```C8V<WO__Z(D%``#_=<B+1>!3_W`(Z*KI__^+1>"+2`B+@=AR
+M``#WV!O`(\90BX'0<@``C8V<WO__]]@;P"/'4.C>"P``BWW@BT<(@+BH80``
+M`'4L_[.D(@``C;?X$```5NCU$@``A,!U%E:-0R10:A'H(-K__[E0#T0`Z*;<
+M___&A_<0```!@TW\_XV-G-[__^A^!```@'WN`(I%\XI5\G0&_X?L````@']@
+M`'4DA,`/A6'T__\X@[1L``!U#(O+Z%F+___I3?3__X32#X5%]/__,L#I0/3_
+M_[A!(4,`Z)51`0"X/!```.AG4@$`4_]U&/]U%/]U%.B'*P``C8VX[___Z-,#
+M``#_=10SVXV-N.___XE=_.BA#```A,!U'/]U$/]U%/]U#&H2Z"WI____=0QJ
+M$^@MV?__ZT-H```0`(U-X.A=?___QD7\`>L,BTT(4/]UX.B:#```Z!UU``#_
+M=>2-C;CO____=>#H10D``(7`==J-3>"S`>AI@?__C8VX[___Z(P#``"+3?2*
+MPUMDB0T`````B^5=PA0`N%,A0P#HTU`!`(/L%%;H8NK__U"-3>#H[7[___]U
+MY(M-"/]UX(-E_`#HRS<``(OPA?9^1%.+71!7BWT,B\:9.]-_!GP&.\=R`HOW
+MA?9^$XM-"%;_=>#H@SD``(O&F2OX&]K_=>2+30C_=>#HB3<``(OPA?9_QE];
+MC4W@Z,N`__^+3?1>9(D-`````(OE7<(,`%-55E>+?"0DA?]T`\8'`(MT)!PR
+MVU;H4`X``(ML)!CK5X3;=0Q6_L/HJP```(3`=4$SP#+;A>T/E,!0_W0D-/]T
+M)#3_="0T_W0D,%;_="0LZ)]_``"%P'0C@_@!=#^#^`9U#VC_````N5`/1`#H
+MZ=C__U;H\PT``(3`=:4SVSA<)#0/E<.#PQ&%[70<4U:+S>@A`P``A,!T#[`!
+MZS2%_W0#Q@<!,L#K*8M$)!0/MH!'80``4&H!5N@K#```A>UT"U-6B\WH[0(`
+M`.L&5NA'#0``7UY=6\(D`+AH(4,`Z&I/`0"X+%```.@\4`$`4U:+=0B-A<B_
+M__]7NP`(``!34%;_%30P0P"%P`^$BP$``#O##X.#`0``4XV%R*___U!6_Q4P
+M,$,`A<`/A&P!```[PP^#9`$``(V%R+___U#H0"@``(E%\(V%R*___U#H,2@`
+M`(OX,]MF.1\/A#P!``!7_W7PZ%:$``"%P`^$*P$``%=6Z`PH``!0Z$&$``"%
+MP`^%%@$``&:)A?#O__^+^V:%P'5H:``(``!6C87P[___4.B&:@``5V@<.$,`
+M:``(``"-A?#O__]0Z,<G``!0Z,>H__^#Q!"-A?#O__]0Z)P,``"$P'0+,\!F
+MB87P[___ZP=FBX7P[___@\=[@?\0)P``?)QFA<`/A*````"_``@``(V%R,__
+M_U=64.@=:@``5_]U\(V%R,___U#HVR<``(V%\.___U"-A<C/__]0_Q4X,$,`
+MA<!T98V-R-___^AO````5HE=_.@C#```A,!U$&H25HV-R-___^A<`0``BMB-
+MA<C/__]0C87P[___4/\5.#!#`(3;=!:-C<C?___HZ0```(V-R-___^@E`@``
+MC8W(W___Z%,```"P`>L",L"+3?1?7EMDB0T`````B^5=P@0`@TD$_S/`QP$L
+M.$,`9HE!)(A!"(E!#(A!$(F!)!```&:)02&(02")012+P<=!&``!`0#'01P`
+M`0``PU6+[&2A`````&K_:($?0P!09(DE`````(-Y!/_'`2PX0P!T&(!Y$`!U
+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
+M``#HW/S__XB```+`!7L(,`%-65XM\)!"+\>F"````@+X`$````%=6=`]J
+M_^BJ````B88$$```ZPO_M@00``#HEP```(/X_W1I_[<($```B9]`$```Z&_\
+M____MP@0``"(APP0``#H=OS__XB'#1```%>(G@`0``#H`!<``(O8:$@X0P!3
+MZ".1`0!9687`=!%H3#A#`%/H$I$!`%E9A<!U&3/;B)]$$```9CD>#X5M____
+M,L!?7EO""`"P`>OV5F@`"```_W0D#(OQ5NA560``QH8`$````5["!`"X4!(`
+M`.@_/@$`4U56B[0D8!(``(U$)`Q7B[PD;!(``(/+_[T`"```4#OS=7#_M"1L
+M$@``_Q5D,$,`B_`[\P^%@````%6-A"1D`@``4/^T)'`2``#H'!```(3`=!F-
+M1"004(V$)&0"``!0_Q5D,$,`B_`[\W5._Q4`,$,`@_@"=`^#^`-T"H/X$G0%
+M,\!`ZP(SP(B'1!```.G0````5O\5:#!#`(7`=12+\_\5`#!#`(/X$@^5P(B'
+M1!```#OS#X2I````5?^T)&P2``!7Z'A8``!5C40D0%!7Z#H6``"+3"0L,\`#
+M1"0PB8<`$```BT0D$(/1`(F'"!```(M$)!2)AR@0``"+1"08B8<L$```BT0D
+M'(F',!```(M$)"")AS00``"+1"0DB8<X$```BT0D*(F'/!```(U$)"2)CP00
+M``"-CQ`0``!0Z+5G``"-1"044(V/&!```.BE9P``C40D'%"-CR`0``#HE6<`
+M`(.G0!````"+QE]>75N!Q%`2``#"#`"`?"0$`%:+\<9&"`!T'E>_`X```%?H
+M;SX!`%=J`%")1@SH8$P!`(/$$%_K!(-F#`"+QE["!`"`>0@`=0G_<0SH3CX!
+M`%G#5HOQ@WX,`'0/@'X(`'4)_W8,Z#4^`0!9BT0D"(E&#,9&"`%>P@0`BU$$
+M`U0D!(O"@^('P>@#`0&)403"!`#I`````%.+V597:@B+<PR+$UDK2P0/MCP6
+M#[9$%@'!YP@+^`^V1!8"P><("_C3[P^WQU]>6\,SP(E!"(D!B4$,B4$0B\'#
+MS,S,S,S,S,S,S,S,5HOQZ*X#``#_="0(B\[H'`$``(O&7L($`%.+7"0(5597
+M:$"J0`!J"&@(`0``B^E35>B6`0``C;5`"```B\[H<P,``(V#0`@``(O.4.C>
+M````C;-("0``N8````"-O4@)``#SI8N#2`L``(F%2`L``(N#3`L``(F%3`L`
+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
+MQ!SV1"0P'P^%E@```(M4)$@SP"%$)$@SR4$Y5(Q(<P:+5(Q(B\	(Q(`$&#
+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
+M1"0$BU$8.\)S#8L)@#P!`'T*0#O"<O4SP,($`"M$)`1`Z_914U6+Z58S]E<Y
+M=2!T<(MU!(O.BU48*\J+1"08B70D$#O!=E$KP8O-B]CWTT.#XP\#V%/H1DW_
+M_XM]%(M5``/64XL'4HMP#(O._Q5@,D,`B\__UHM-`(OP`TPD$%-1BTT@Z,>7
+M__^+SO?9&\DC3"08`4T8ZSB+\`/"B448ZR^+7"08A=MT)U/H\DS__XM]%(M5
+M&`-5`%.+!U*+<`R+SO\58#)#`(O/_]:+\`%U&%^+QEY=6UG"!`"XXB%#`.@?
+M&P$`45%35HOQ5XEU\(V.D````.C:W___,_^-CJ0```")??SHRM___XV.N```
+M`,9%_`'HN]___[O`$```QD7\`E/HFAH!`%F)1>S&1?P#A<!T"8O(Z$R5___K
+M`HO'4\9%_`*)1D#H=AH!`%F)1>S&1?P$A<!T"8O(Z"B5__^+^(O.B7Y$Z&\`
+M``"+3?2+QE]>6V2)#0````"+Y5W#4U:+\;O`$```5XM^0(7_=!"+S^B\E?__
+M4U?H6!H!`%E9BWY$A?]T$(O/Z*65__]35^A!&@$`65F-CK@```#H[=___XV.
+MI````.CBW___7XV.D````%Y;Z=3?__^#24C_,]*($8A1#(E1((E1),=!*`$`
+M``")44R(45")42R)43")41R)41B)431FB9',````B5%XB5%\B5%PB5%TB5%H
+MB5%LB5%@B5%DB5$XB5$\B9&(````B9&,````B9&`````B9&$````PU6+[(!]
+M"`!6_W4DB_'_=2#_=1S_=1C_=13_=1#_=0QT$HM.0&H!Z`F6__^(ALP```#K
+M$(M.1&H`Z/>5__^(ALT```!>7<(@`(M$)`2%P'0#B4$LBT0D"(7`=`.)03"#
+M24C_P@@`BT0D!(E!%(M$)`C&00P!B4$0P@@`58OL@'DH`'14BU$LA=)T35.+
+M70Q6B[&(````B\97B[F,````"\>+10AT#@.!@````!.9A````.L&BWT4BW40
+M5U934/^RY#(``/^RX#(``/]Q?/]Q>.C`20``7UY;7<(0`(/L$%-5BVPD((O9
+M5E>`N\T`````=`.#Y?"+3"0D,\")1"04B_")3"00A>T/A%H!``"+^8`[`(M3
+M+(E4)!QT'_]S!/]S"/]T)"SHDBH!`(MS!(/$##/`B4,$Z<(```"+2R0S_SOY
+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
+MC47\4.BW____A,!T$/]U#/]U_/]U".C^_O__L`&+Y5W""`!6B_	A0`Z)$[
+M__^#9A@`@V9<`%[#@V$4`,-5B^R#[!!35HUU\#/)N````(`/HHD&B5X$B4X(
+MB58,BW7P:@>!YO___W]8._!R'S/)#Z)7C7WPB0>)7P2)3PB)5PSV1?0@7W0%
+M:@58ZU&#_@%R2C/`C77P0#/)#Z*)!HE>!(E."(E6#/=%^```"`!T!&H$Z];W
+M1?@``@``=`1J`^O)]T7\````!'0$:@+KO/=%_`````)T!3/`0.L",\!>6XOE
+M7<-5B^R#[!!3,]MFQT7T``6-1?B)7?!04U-34U-3:"`"``!J(&H"C47P4/\5
+M&"!&`(O(B4W\A<ET(8U%_%#_=?A3_Q4L($8`_W7X]]@;P"%%_/\5'"!&`(M-
+M_#/`A<E;#Y7`B^5=PU6+[+@`$```Z,/B``!6O@`(``"-A0#P__]64/\5I#!#
+M`(7`=!Y6C84`\/__4/]U"%#HO[?__XV%`/#__U#_%:`P0P!>B^5=P@0`N,BS
+M``#H?.(``%-55E=H8#M#`#+__Q6`,$,`B_"%]G1D:'0[0P!6_Q6,,$,`BIPD
+MW+,``(OXA?]T&`^VR_?9&\F!X;0U0P!1B\__%6`R0P#_UVB(.T,`5O\5C#!#
+M`(OPA?9T(3/)A-L/E,%)@>$`^/__@<$`$```48O._Q5@,D,`_]:W`:&`X$,`
+M@\W_QT0D%*0[0P"^``@``,=$)!B\.T,`QT0D'-@[0P"`.'C'1"0@\#M#`,=$
+M)"0(/$,`QT0D*"`\0P#'1"0L.#Q#`,=$)#!0/$,`QT0D-&P\0P#'1"0X?#Q#
+M`,=$)#R0/$,`QT0D0*@\0P#'1"1$P#Q#`,=$)$C8/$,`QT0D3/`\0P#'1"10
+M!#U#`,=$)%0</4,`QT0D6#0]0P#'1"1<1#U#`,=$)&!@/4,`QT0D9'@]0P#'
+M1"1HD#U#`,=$)&RL/4,`QT0D<,0]0P#'1"1TW#U#`,=$)'CT/4,`QT0D?`P^
+M0P#'A"2`````*#Y#`,>$)(0```!`/D,`QX0DB````%@^0P#'A"2,````<#Y#
+M`,>$))````",/D,`QX0DE````*0^0P#'A"28````O#Y#`,>$))P```#@/D,`
+MQX0DH````/@^0P#'A"2D````$#]#`,>$)*@````@/T,`QX0DK````#P_0P#'
+MA"2P````5#]#`,>$)+0```!P/T,`QX0DN````(@_0P#'A"2\````I#]#`,>$
+M),````"T/T,`QX0DQ````,P_0P#'A"3(````Y#]#`,>$),P```#X/T,`QX0D
+MT````!!`0P#'A"34````*$!#`,>$)-@```!`0$,`QX0DW````%A`0P#'A"3@
+M````<$!#`,>$).0```",0$,`QX0DZ````*A`0P#'A"3L````Q$!#`,>$)/``
+M``#<0$,`QX0D]````/A`0P#'A"3X````$$%#`,>$)/P````P04,`QX0D``$`
+M`$1!0P#'A"0$`0``7$%#``^$S````%#H-&T!`(OX687_#X2[````5HV$)!03
+M``!0:@#_%7PP0P`SP%!0:@-0:@%H````@(V$)"@3``!0_Q4D,$,`B_`[]71\
+M:@!J`%=6_Q54,$,`.\=U;&H`C40D%%!H_G\``(V$).0S``!05O\52#!#`(7`
+M=$V+1"00T>@SR6@$`0``9HF,1-PS``"-A"0,`0``4(V$).`S``!0ZQN-A"0(
+M`0``4.@F_/__:`0!``"-A"0,`0``4%?H9O?__XOXA?]UVE;_%1@P0P"^``@`
+M`%:-A"04`P``4&H`_Q5\,$,`5HV$)!0#``!0Z`NW__]0C80DX",``%#HI?G_
+M_S/_,_;H4*?__ST`!@``<@O_=+04Z+O[___K`C/`A<!T(%5HO#M#`%7_=+0@
+M:`$0``!H``0``/\5J#!#`(/X`G4H:``(``#_=+08C80D&`,``%#H'+?__XV$
+M)!`#``!0_Q5<,$,`.\5U"$:#_@ARE>L$BWRT%(3_=38S]F@`"```_W2T.(V$
+M)!@#``!0Z.*V__^-A"00`P``4/\57#!#`#O%=0A&@_XU<M+K!(M\M#2%_P^$
+M!P$``(V$)!`#``!0Z(.V___HD*;__ST`!@``<F9H.#Q#`.CZ^O__:'A!0P#H
+M\/K__XV$)-@C``!0C80D%`,``%!7:/$```#H(=C__U"-A"0@$P``:&0(``!0
+MZ/$V__^#Q!AJ,&CP````Z/_7__]0C80D&!,``%!J`.C8F```Z8````"-A"38
+M(P``4(V$)!0#``!05VB004,`C80D(!,``&AD"```4.BE-O__@\08_Q6L,$,`
+MA<!T2_\5D#!#`%#_%;0P0P!J`(U$)!10C80D&!,``%#H:R\!`%E0C80D'!,`
+M`%!J]/\50#!#`%#_%;@P0P!H$"<``/\5G#!#`/\5L#!#`&H`_Q64,$,`7UY=
+M6X'$R+,``,($`%97Z`4-``#H!0T``+[_````OU`/1`"$P'0(5HO/Z.ID__^`
+M/5P/1```=`A6B\_HV63__VH!_Q68,$,`7U[#BT0D!%-55E>+\6I`7XD&.\=V
+M`HD^,^TSVT4Y'G4"B2Z)G@0!```Y/G8"B3Z-AB`#``"(GA0#``!0_Q7(,$,`
+M4U=34_\5[#!#`%-555.)AA@#``#_%>@P0P")AAP#```YGA@#``!T!(7`=1MH
+MN$)#`+]0#T0`5^A89/__65EJ`HO/Z$AD__]?B9X,`P``B\:)GA`#``")G@@!
+M``!>75O"!`!5B^QDH0````!J_VB!'T,`4&2))0````!35E>+\>BY`@``,__&
+MAA0#```!5VI`_[88`P``_Q7@,$,`.;X$`0``=AZ-7@3_,^BG````_S/_%1@P
+M0P!'C5L$.[X$`0``<N6-AB`#``!0_Q74,$,`_[88`P``_Q48,$,`_[8<`P``
+M_Q48,$,`BTWT7UYDB0T`````6XOE7<-6B_&#O@0!````=07HAP```(.^"`$`
+M`$!R!XO.Z"0"``"+C@P#``"+1"0(B83.#`$``(N.#`,``(M$)`R)A,X0`0``
+MBX8,`P``0(/@/_^&"`$``(F&#`,``%[""`!J__]T)`C_%>0P0P"#^/]U)U;_
+M%0`P0P!0:O]H4$)#`+Y0#T0`5N@48___@\00B\YJ`N@#8___7L($`%%35HOQ
+M,]LY'G9P55>-?@2-1"004&H`5FB@#$$`:````0!J`/\5P#!#`(OHA>UU)V@H
+M0D,`:%`/1`#HQ6+__UE9N5`/1`#H4V3__VH"N5`/1`#HJ&+__XDO_X8$`0``
+MH=B!1`"%P'0)4/\W_Q7$,$,`0X/'!#L><I=?75Y;6<-5B^Q148U%^%"-1?Q0
+M_Q4,,$,`4/\5O#!#`(7`=0-`ZQLSP#/)0%:+=?R+T(76=`%!`])U]UX[R'("
+MB\&+Y5W#Z+O___^#^`%S!#/`0,.#^$!V`VI`6,-7B_G_MQ@#``#HX?[__X"_
+M%`,```!T!#+`ZT56C;<@`P``5O\5S#!#`(N7$`,``(M,)`Q6BX37#`$``(D!
+MBX37$`$``(E!!(N'$`,``$"#X#^)AQ`#``#_%=`P0P"P`5Y?P@0`S,R+3"0$
+MZ`4````SP,($`%6+[%%15HU%^(OQ4.A[____A,!T25>-OB`#``#_=?R+3?C_
+M%6`R0P#_5?A7_Q7,,$,`@ZX(`0```74,_[8<`P``_Q78,$,`5_\5T#!#`(U%
+M^(O.4.@S____A,!UOU]>B^5=PU:+\8.^"`$```!T*_^V'`,``/\5W#!#`&H`
+M_[8(`0``_[88`P``_Q7@,$,`_[8<`P``Z.']__]>PXM$)`0!`8M$)`@1003"
+M"`"#[$A35597B_DSVU-J9/]W!/\WZ#[>``")1"08B50D'.AFH?__/0`&``!S
+M$HU$)!!0C40D'%#_%0`Q0P#K:XU$)#A0C40D'%#_%0@Q0P"-1"1(4(U$)#Q0
+M4_\5]#!#`(U$)!!0C40D3%#_%?PP0P"-1"0@4(U$)#Q0_Q7\,$,`BTPD%#/`
+M`TPD'"O#&TPD)"M$)"`;RP-$)!`3RP-$)!B)1"00$\N)3"04C40D*%"-1"04
+M4/\5"#%#`(MT)%PSVP^W1"0P0P^W3"0N#[=L)"H/MU0D*(E&#`^W1"0RB480
+M#[=$)#2)1A0/MT0D+(E&'(U!_XD6B6X$B4X(B48@.^MV(FH$NH3@0P!9@_DP
+M=Q"+`H/!!`%&((/"!$,[W7+K#[=4)"B#_0)V#5+H/P```(3`=`/_1B!J`&@`
+MRIH[_W<$_S?H@-T``%^)1AA>75N#Q$C"!`!J`&ID_W$$_S'H]=P``(M,)`2)
+M`8E1!,($`/9$)`0#=2.+1"0$:F296??YA=)U$(M$)`2YD`$``)GW^872=04S
+MP$#K`C/`P@0`58OL@^P85HU%Z(OQ4/\5\#!#`(U%^%"-1>A0_Q7\,$,`:@!J
+M9/]U_/]U^.AJVP``B0:)5@1>B^5=PU6+[(/L)(M5"(O"@^`?@V7T``/`B47P
+MB\+!Z`6#X#^)1>R+PL'H"X/@'XE%Z(O"P>@0@^`?B47DB\+!Z!6#X`_!ZAF)
+M1>"!PKP'``"-1=R)5=Q0Z`8```"+Y5W"!`!5B^R#[$A3BUT(5E>+\6:+`V:)
+M1=AFBT,$9HE%VF:+0PAFB47>9HM##&:)1>!FBT,09HE%XF:+0Q1FB47D,\!F
+MB47F9HE%W(U%\%"-1=A0_Q7\,$,`A<`/A(H```#H]9[__S/_/0`&``!S%HU%
+M^%"-1?!0_Q4$,4,`BT7\BTWXZU6-1<A0C47P4/\5"#%#`(U%N%"-1<A05_\5
+M^#!#`(U%^%"-1;A0_Q7\,$,`C47H4(U%R%#_%?PP0P"+1?PSR0-%]"O/&T7L
+M*TWH&\<#3?@3QP--\!/'5VID4%'H(MH``(D&B58$ZP<S_XD^B7X$BT,8`081
+M?@1?7EN+Y5W"!`!6:@!H`,J:._]T)!2+\?]T)!3H[-D``%)0B\[H!````%["
+M"`"+5"0$BT0D"('"``!J3(D1%0M[F:&)003""`!6:@!J9/]T)!2+\?]T)!3H
+ML-D``(D&B58$7L((`(M$)`16:@!J9/]P!(OQ_S#HDMD``(D&B58$7L($`%6+
+M[+@`%@``Z!S5``!6B_&+1DB#^'(/CR4"```/A!4"``"#^!8/C_H````/A.L`
+M``"#^!4/AW@"``#_)(6_$T$`_S9H`$-#`&H`Z,*?``"#Q`SI6P(``/\V:`!#
+M0P!H"$-#`.OE:@#H%9<``%GI0`(``/]V!&I[Z"G/__]0_S;KR?]V!&IZZ^__
+M=@1J?.OH_W8$:,H```#KWFIPZ`7/__]0:@#H:9\``%GKP?]V!&IRZ\7_=@1J
+M>.N^_S9HA0```.C@SO__4.N`_S9H!`(``.OO_W8$:(0```#KG/]V!&B#````
+MZY+_=@C_=@1HT@```.BPSO__4/\VZ!2?``"#Q!#IK0$``/]V!&IYZ6C_____
+M=@1HW````.E;_____S9HW0```.N;@_@X#X^Z````#X2M````@^@7@_@+#X=R
+M`0``_R2%%Q1!`&C>````Z4K___]HX0```.E`____:+0```#H0,[__U#_-NDV
+M____:FGK[VIJZ^O_=@1J:.GX_O__:&\$``#KVFAP!```Z]/_=@1H<00``.G=
+M_O___W8$:G'IT_[___]V!&C(````Z/3-__]0C84`_O__:``!``!0Z,4L____
+M=@B-A0#^__]0:`Q#0P#_-N@XG@``@\0@Z=$```!J9^EX____@^@Y=$"#Z`%T
+M-(/H`70B@^@)=!.#Z`$/A:T```!HA@```.E1____:$,#``#I1_____]V!&@&
+M!```Z5'^__]J;^DS____:(P```#I*?___VA6!```Z1____\]@````'5JZ)"\
+M``"#?@0`="3_=@1HR@```.A%S?__4(V%`.K__V@`"@``4.@6+/__@\00ZQQH
+M``H``&C)````Z!_-__]0C84`ZO__4.B7[?__:@!HE@```.@&S?__4(V%`.K_
+M_U#_-4R$1`#HW(T``%Z+Y5W#D%X100!($4$`;!%!`'D100"($4$`CQ%!`)81
+M00"@$4$`LA%!`+D100#`$4$`SQ%!`-@100#B$4$`N1-!`+D300"Y$T$`N1-!
+M`.P100"Y$T$`#!)!`!8200!.$D$`6!)!`&(200!T$D$`>!)!`'P200"&$D$`
+MC1)!`)0200"Y$T$`H1)!`*L200#IO\$``%6+[+@`%@``Z-?1``!35O]U"&B#
+M````Z$3,__]0O@`)``"-A0#J__]64.@4*___@\00C84`_/__N5`/1`!H``(`
+M`%#H%%K__X3`="96:!Q#0P"-A0#J__]0Z%_L__]6C84`_/__4(V%`.K__U#H
+M2^S___\5`#!#`&HU:)8```"+\.C:R___4(V%`.K__U#_-4R$1`#HL(P``(/X
+M!%8/E,/_%00P0P!>BL-;B^5=P@@`N``0``#H*M$``%-55HNT)!`0``!7:@)=
+MBX8P80``.\5U"#/`0.GV````@+Z(80````^%VP```(/X`0^$T@```(N<)!@0
+M``"-1"00OP`(``!74U#HW>O___^T)"P0``"-1"04_[0D+!```/^T)"P0``#_
+MM"0L$```5U#HS<```(OXA?]T!#O]=193Z`6/__\[_74,QX8P80```0```.M_
+M@_\#=0N)KC!A``#I<____X/_!'5:C40D$%#HSZC__XN\)!P0``"-3"005SO!
+MB\%04W4'Z"RI___K!>A7Z___4^B3C?__A,!T-O^T)"P0``#_M"0L$```_[0D
+M+!```/^T)"P0``!74U;H]/[__^L2B\?K#O^T)!@0``#H=H[__S/`7UY=6X'$
+M`!```,(<`%6+[/]U)/]U(/]U'/]U&/]U%/]U$/]U#/]U".B.P```7<(@`/]T
+M)`S_="0,:@#_="00Z*K```#"#`#IG)@``*!0A$0`PS+`PX!\)`0`_W0D"`^5
+MP(T$A50```!0Z$W!``#""`#IGL$``%-6BW0D$#/`5XM\)!BS`5=6:O__="0<
+M9HD&4%#_%10Q0P#WV!K`(L.%_W0',\EFB4Q^_E]>6\(,`%6+[(/L%%97C47L
+M,_905HOY_Q4,,4,`@WWL`0^7P(B'``$``%;_%1`Q0P"%P`^5P(@$/D:!_@`!
+M``!RZ%]>B^5=PU6+[%8S]CEU$'8HBU4(5XM]#"OZ#[9*`0^V`L'A"`/!9HD$
+M%V:%P'0)1H/"`CMU$'+B7XM%#%Y=P@P`BT0D#%-55HMT)!"-:/]7BWPD&+,!
+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
+M!G150P"+QE["!`"#800`B\P@`QT$$.$-#`,<!=%5#`,-6B_&-1@3'!FA5
+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
+M`0``4XO953/M5HN#4`8``$6`O"08`0```(NS1`8``%>+4`*-?"08=0Z#?@@`
+MC7PD'(E$)!AT9(N,)"`!``"%R70%BW8(ZR&+=@AF.2YT%HN#4`8``(M.!(H`
+MZP.#P08X`77YZP.-3@(Y40)U'(V$)!@!```[^`^#I@```(D/@\<$@WX(`'7`
+MZP.+<0*-1"08._AU!XO&Z8D````/MRZ-0@&*"HE$)!(SP$"(3"009COH=$,[
+ML]Q+``!V9XM&!.L#@\`&.`AU^0^V4`$/MTX"2BO-*\J-+!([Z7<+:\(%.\@;
+MP/?8ZPQKP0,ST@/)2`/%]_'^P.L#BD8#B$0D$8/O!(U$)!!0B\[_-U/HD58`
+M`(OPA?9T#8U$)!@[^'7@Z7+___\SP%]>75N!Q`@!``#""`!55HOQBXY$!@``
+MBY;<2P``.\IV)(N&Y$L``#O(=QIF@SD!=!HY401V#SE!!'<*5NBP5P``A,!U
+M#(/(_UY=PU;H;%8``+T`@```Z9P```"+CG!*``"+EGA*``"-!!$SP3T````!
+M<A([U7,Z]]F!X?]_``")CGA*``"+CHA*``#HTP(``(N.=$H``,&F>$H```C!
+MX0@+P<&F<$H```B)AG1*``#KJHN&1`8``/^&7`8``(M("(F.1`8``#N.W$L`
+M``^&<____SN.Y$L```^'9____P^W`3N&5`8``'3(5NA16```A,`/A$[___^+
+MEGA*``"+PHN.?$H```^OP0&&<$H``(N&@$H``"O!#Z_"B89X2@``@[Y0!@``
+M``^$+____X.^7`8```"+AE`&``!7#[8X=1F+0`([AMQ+``!V#HF&3`8``(F&
+M1`8``.L7B\[H/5(``("^;`H```!U!XO.Z,7\__^+CG!*``"+EGA*``"-!!$S
+MP3T````!<A([U7,Z]]F!X?]_``")CGA*``"+CHA*``#HOP$``(N.=$H``,&F
+M>$H```C!X0@+P<&F<$H```B)AG1*``#KJHO'7^E[_O__45-55HMT)!17B_F+
+MSNB$`0``B]C!Z`4D`8E$)!!T"XO.Z'`!``"+Z.L1@[^,2@```'4$,L#K9XML
+M)!#VPT!T#8O.Z$\!``"+3"0<B0%6C8]P2@``Z!X%``"`?"00`'0T@^,?C7,!
+M@_X0=@9K]@.#[B"-CXQ*``"#_@%U!^A7'0``Z["-10%0Z/`<``!6B\_H.AP`
+M`(._1`8````/E<!?7EU;6<((`%6+[(-]"!UT*8-]"#)U-(-Y'`%V$X"Y1$P`
+M``!U"O]U#.@4/0``ZQO_=0SHNS(``.L1@+E$3````'4(_W4,Z)`E``!=P@@`
+MBU0D!(N!6$P``('!9.8``%*)0ASH`Y3__\($`%56BW0D$%>+^0^V;#XI#[9$
+M/BH[Z'4&BT0D$.LU4XU&`5#HT/C__XO8A=MT(FO.#(MT)!115E/H9,L``(N$
+MK[@```"#Q`R)!HFTK[@```"+PUM?7EW""`!6BW0D"(V1@````#/`.S)R#4"#
+MP@2#^"!R\S/`ZQ.+A(&`````*\8[1"0,<@2+1"0,7L((`%:+\8M.!('YXG\`
+M`'X6B\[HZAT``(M.!('Y`(```'P$,\!>PXM&$`^V!`A!B4X$7L.#[`Q35HOQ
+M,]M7BX:P````.X:T````=`*(&(U$)`R+^U6)1"08C9:X````B40D%+W__P``
+MZRN+"HL!B0*-1"00B4$(BT0D%(E!!(M$)!2)2`B)3"049HDI#[9$/@1FB4$"
+M.1IUT4>#P@2#_R9\\XM4)!2-1"00.]!T2^LL#[=/`@^W0@(#R('Y```!`',H
+MBT\(BT<$B4$$BT\$BT<(B4$(9HM'`F8!0@(/MT(":_@,`_IF.2]TQHM2!(U$
+M)!`[T'7GBU0D%%WIB0```(M*"(M"!(E!!(M*!(M""(E!"`^W3P*!^8````!V
+M*(V1?____\'J!T)KPH`#R(N&3`$``(D'B;Y,`0``@<<`!@``@^H!=></MEP.
+M*0^V1!X$.\%T(0^V1!X#2XO1*]`KRFO)#(N$EK0````#SXD!B8R6M````(N$
+MGK@```")!XM4)!")O)ZX````C40D#(OZ.]`/A6G___]?7EN#Q`S#@^P84U6+
+MP5>)1"04Z&<6``"+;"0H,]LS_X7M='!6@_L@<W.+]3/2:B`K]UDKRXO&]_&Y
+M``!``(E$)!`[P7<&B\&)3"00._!R95;H?0H!`(E$)!A9A<!U#XO&P>@%*_`[
+M="00<^3K1U9J`%#HJ<<``(M,)"0#_HM$)""#Q`R)!)F)O)F`````0SO]<I)>
+M7UU;@\08P@0`._US\HU,)!SHCN[__V@$MT,`C40D(.L2C4PD'.AZ[O__:`2W
+M0P"-1"0@4.@KZ@``S(/L%%.+7"0<5XOYA=MU"KE0#T0`Z"5`__^X```$`#O8
+M<P:+V(E<)"`[G]CF```/AA,!``"`?"0D`'0E@[]`2P```'4)@+]$3````'03
+M@+]$3````,9$)`L!=`KI[P```,9$)`L`@+]$3````%5T!#/MZPU3Z(P)`0"+
+MZ%F%[75"@'PD#P`/A=P```"!^P````$/@M````"+AT!+``"%P'0.4.A9"0$`
+M@Z=`2P```%E3C8]$2P``Z'[^___&AT1,```!@+]$3````'5L4VH`5>A^Q@``
+M@\0,@'PD#P!T0H._V.8```%R.8U+_S/;B4PD$$-6BW=\BY?8Y@``*_.+AT!+
+M``!*(]8CSD.*!`*(!"F+3"04.Y_8Y@``=M>+7"0H7HN'0$L``(7`=`=0Z-`(
+M`0!9B:]`2P``C4/_B9_8Y@``B8?<Y@``75];@\04P@@`C4PD$.@2[?__:`2W
+M0P"-1"044.C#Z```C4PD%.CZ[/__:`2W0P"-1"084.BKZ```S(M$)`16B_%7
+M:@1?@V8$`(,F`(-."/^)1AB+3ACH_OO__XM.!,'A"`O(B4X$@^\!=>A?7L($
+M`%-6,]N+\5<X7"00=3>+^XF>Q.8``(F>U.8``#F>G.8``'8;BX:8Y@``:CC_
+M-+CHOK0``$=963N^G.8``'+EB9Z<Y@``B_LYGK#F``!V&XN&K.8``&HX_S2X
+MZ).T``!'65D[OK#F``!RY5^)GK#F``!>6\($`+B>(D,`Z(&T``!145-65XOY
+M,]LY7R!U&;X`!$``5N@'MP``5E-0B4<@Z/G$``"#Q!`Y7Q@/A;L```"+=QPS
+MR0/VNN1*``"+QHEU\/?B#Y#!]]D+R#/`@\$$#Y+`]]@+P5#HQ+8``%F)1>R)
+M7?R%P'0;:+`>00!HT!Q!`%:-6`2),&CD2@``4^@(M0``@TW\_VG&Y$H``(E?
+M&%!J`%/HA<0``(/$#(7V=$PSP(E%\(M?&`/8@[O42@```'4L:``,`P#'@]Q*
+M````00``Z`H'`0")@]1*``!9A<!U"KE0#T0`Z"X]__^+1?`%Y$H``(E%\(/N
+M`76YBTWT7UY;9(D-`````(OE7<-145-55E>+V3/`:)@```!0B40D'(V#N```
+M`(E<)!A0Z/W#``"+JZP```"#Q`R)JU`!``"+&XO#F8/B!P/",]+!^`-J#%GW
+M\3/2:_A4:@PKWXO#]_&-#"LSTD!K\`R+1"04B]@#]8F+7`$``(FP5`$``(FP
+ML````(O'7_?W:@1KP`Q:4ED#QHF#M````#/`0(A$`P-`@^H!=?9`B$0+!$&#
+MP`*#^0A\\T#K"(A$"P1!@\`#.\]\]$#K"(A$"P1!@\`$@_DF?/-JUS/`C7,J
+M7XB#J@```"O[O8`````/MDP#!#/2C00W.\B+1"04#YS"`\*(!D:)1"04@^T!
+M==]?7EU;65G#@>R(````C40D"%.+G"28````55:+M"2<````5VI`,_]74(D>
+MZ/7"``"+K"2H````@\0,B\^%VW00#[8$*8/@#_]$A!A!.\MR\(T$&XE\)!A0
+MC8:(#```5U#HP,(``(U61(E^!#/`B3J#Q`R+]T"+VHE$)!"+Z`-TK!AJ$%DK
+MS8O&T^`#]HE#Q(M$K!0#`T6)0P2-6P2#_1!RW&I`4HU$)&!0Z-?#``"+G"2P
+M````@\0,B[0DH````(O7BZPDG````(7;=""*!"HD#W04#[;(BT2,6&:)E$:(
+M#```0(E$C%A".]-RX('[*@$``'(<@?LK`0``=@B!^S(!``!U#,>&A`````H`
+M``#K"L>&A`````<```"+CH0````SP$"+T-/BB50D%(72=&^-KH@$``!J$%DK
+MCH0```"+U]/B@_@0<Q>-3@2-#($[$7()0(/!!(/X$'+SB40D$(B$/H@```"#
+M^!!S)"L4AFH062O(T^H#5(9$.]-S$F:+A%:(#```9HE%`(M$)!#K!C/)9HE-
+M`$>#Q0([?"04<I=?7EU;@<2(````P@P`@^P@BT0D)%-55HOQBXC42@``:X#8
+M2@``#%>)="04B4PD$`/!B40D'#O(#X/'````:@-;BX[<Y@``BY8\2P``B\(A
+M3GPK1GPCP3T$$```<S([5GQT+8O.Z"(9``"+AEQ,```[ADQ,```/C_($``!\
+M$HN&6$P``#N&2$P```^'W@0``(M,)!"#.0!U>&8Y601U)HN&V.8``(M6?(/H
+M!#O0<Q:+?"00BXY`2P``BT<(B00*@T9\!.LKBWPD$#/;BU9\(Y;<Y@``BXY`
+M2P``BD0?"(@$"O]&?$,/MT<$.]AVWFH#6XM$)!"#P`R)1"00.T0D'`^"//__
+M_[`!7UY=6X/$(,($`(,Y`0^%?@$``(M)"(M&:(M\)!")1FR+1F2)1FB+1F")
+M1F2)3F`/MT<$BTY\B^F)1G2+5P@KZHN&V.8```^W?P0%_.___SOH#X,!`0``
+M.\@/@_D```"+AD!+``"-'"B-+`B-!#F)1GP[UW-)@_\(<G*+S\'I`XH#@^\(
+MB$4`BD,!B$4!BD,"B$4"BD,#B$4#BD,$B$4$BD,%B$4%BD,&B$4&BD,'@\,(
+MB$4'@\4(@^D!=</K+H/_"'(IB\?!Z`.)1"08B_!J"%-5Z`K!``"#Q`R#PPB#
+MQ0B#[PB#[@%UYHMT)!2%_P^$\O[__XH#B$4`@_\!#X;D_O__BD,!B$4!@_\"
+M#X;5_O__BD,"B$4"@_\##X;&_O__BD,#B$4#@_\$#X:W_O__BD,$B$4$@_\%
+M#X:H_O__BD,%B$4%@_\&#X:9_O__BD,&B$4&Z8[^__^%_P^$B?[__XN>W.8`
+M`(N60$L``"/=BTY\18H$$X@$"HM&?(N>W.8``$`CPXE&?(/O`77:Z57^__\Y
+M&0^%AP$``(M1"(MLEF");"08A=)T$XUZ&(T\OHM'_(D'C7_\@^H!=?.);F`/
+MMT$$B49T#[=Y!(M.?(O9BX;8Y@``*]T%_.___SO8#X,$`0``.\@/@_P```"+
+MAD!+```#V(TL"(T$.8E&?#E\)!AS28/_"')RB\_!Z0.*`X/O"(A%`(I#`8A%
+M`8I#`HA%`HI#`XA%`XI#!(A%!(I#!8A%!8I#!HA%!HI#!X/#"(A%!X/%"(/I
+M`77#ZRZ#_PAR*8O'P>@#B40D&(OP:@A35>A]OP``@\0,@\,(@\4(@^\(@^X!
+M=>:+="04A?\/A&7]__^*`XA%`(/_`0^&5_W__XI#`8A%`8/_`@^&2/W__XI#
+M`HA%`H/_`P^&.?W__XI#`XA%`X/_!`^&*OW__XI#!(A%!(/_!0^&&_W__XI#
+M!8A%!6H#@_\,_?__BD,&B$4&Z0']__^%_P^$]_S__XNNW.8``(N60$L`
+M`"/KBTY\0XH$*H@$"HM&?(NNW.8``$`CQ8E&?(/O`77:Z<;\__^#.0(/A0$!
+M``"+?G2%_P^$M?S__XM.?(O9BX;8Y@``BU9@!?SO__\KVCO8#X.@````.\@/
+M@Y@```"+AD!+```#V(TL"(T$.8E&?#O7<U"#_P@/@@+___^+S\'I`XH#@^\(
+MB$4`BD,!B$4!BD,"B$4"BD,#B$4#BD,$B$4$BD,%B$4%BD,&B$4&BD,'@\,(
+MB$4'@\4(@^D!=</IN_[__X/_"`^"LO[__XO'P>@#B40D&(OP:@A35>@&O@``
+M@\0,@\,(@\4(@^\(@^X!=>;IA/[__X7_#X3M^___BZ[<Y@``BY9`2P``(^N+
+M3GQ#B@0JB`0*BT9\BZ[<Y@``0"/%B49\@^\!==KIO/O__X,Y!`^%MOO__XI!
+M!(A$)""+00B#P0R)1"0DB4PD$(I!!(A$)"R+00B+SHE$)"B-1"0@4.BMYO__
+MZ8+[__\RP.F2^___5E=J`8OQZ-+E__^+5@2+/HUT)`R#Q_#!X@0#^J6EI:5?
+M7L(0`(/L$%-55HMT)"`SVU>+?"0HB^F);"08B5\,.%X(=1V+A80```"#Z`<Y
+M!GX0Z`D0``"$P'4',L#I]````(M&!(O.]]B#X`=0Z(EO__^+SNB9;___P>@(
+MB\YJ"(E$)!CH<F___XM$)!0/MLB+P<'H`X/@`T")1"00@_@$=+F#X0>#P`)!
+MB4<,B4\$B\[H7&___\'H"(O.:@B)1"0@Z#5O__\Y7"00=CF+?"00B^N+SN@Y
+M;___P>@(B\W3X(/%"(M.!`/8@\$(B\�?!Z`,!!HE.!(/O`775BWPD*(ML
+M)!B+5"04B\O!^1"+P\'X"#+(B1\RRS+*@/%:.DPD'`^%,____XL&B4<(C4C_
+MBX6(`````\L[P7P"B\&)A8@```"*PL#H!B0!P.H'B$<0L`&(5Q%?7EU;@\00
+MP@@`4U97B_F-=P2+SNBH;O__BTX$B]`RV_?"`(```'0%L@%!ZPK!Z@ZS`2+3
+M@\$"B\&`\@'!Z`.#X0<!!HE.!(B78>8``(3;=`9?7C+`6\.+SU]>6^GJ````
+M5HMT)`A7B_F`?@@`=1:+AX0```"#Z!`Y!GX)Z(D.``"$P'1=4U:+S^A9````
+MBUPD%(O/5HE#!.A*````N0``0``[R!O)]]$CR(E+"(O.Z`AN___!Z`V+SFH#
+MB`/HXVW__X`[`'48B\[H[FW__\'H"XO._L!J!8A##.C&;?__L`%;7U[""`!3
+M5HMT)`R+SE?HQVW__XM6!(OX@\("P>\.B\HSV\'I`X/B!P$.B58$@\<!="]5
+MB^N+SNB>;?__P>@(B\W3X(/%"(M.!`/8@\$(B\�?!Z`,!!HE.!(/O`775
+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
+M&(O/Z`H```"+1"0075];P@P`BT0D#%:+\5</ME0P!(M$)!`/MGPP!"OZ:](,
+M#[9,-RD#5"0,#[9$,00[QW0<BX2.M````(D"B92.M`````^V3#$#:\$,`]`K
+M^0^V3#<I7XN$CK@```")`HF4CK@```!>P@P`BT0D!%-6B_$SVT-7B)YL"@``
+MB89@!@``Z-_\__]J"8V&;@@``&;'AFP(`````FH$4.A%K@``:/4```"-AG<(
+M``!J!E#H,JX``(/$&#/`B(0&;`<``$"#^`-\\XO(B]._``$``.L1B(P&;`<`
+M`(/J`74$0T&+TT`[QWSK:D"-AFP)``!J`%#H\*T``&C`````C8:L"0``:@A0
+MZ-VM``"#Q!C&AD(&```'7UY;P@0`5HMT)`A7B_G!YA0Y-W4$L`'K1%/H0P``
+M`&H,63/2B\;W\8/``FO8#%/H4O```(F'K````%F%P'4.N5`/1`#H=B;__S+`
+MZP^#P/2)-P/#B8=8`0``L`%;7U["!`"#.0!T#_^QK````(,A`.@,\```6<-3
+M,]M6B_$X7"0,=2MHE`$``(V&R.0``(B>8>8``%-0Z#BM``"#Q`S'AL3D```"
+M````B9Y<Y@``_W0D#(O.Z'[G__^(GD5,``!>6\($`(!\)`0`=0?&@6+F````
+MP@0`5C/25XOY.%0D#'56:A!2C4=@4.CFK```,\!HG$H``%")1W")1W2)1WB-
+MAZ````!0Z,FL``"+C]CF```STK@``$``B9>`````@\08B5=\.\AR`HO(BX?<
+MY@``(\&)ASQ+``!J%(E74(VWC````(E7"(E7!%)6B9=83```B9=<3```B9>$
+M````B9>(````Z&RL``"##O^#Q`PSP(O/B(=%3```_W0D#.CW_O___W0D#(O/
+MZ#G___]?7L($`%:+\5>+CH0```"+^8M&!"OX>00RP.MU/0!```!^((7_?A"+
+M3A`#P5=04>@TT0``@\0,@V8$`(F^A````.L"B_F+#K@`@```*\=0BT80`\=0
+MZ&Z"__^+T(72?@8!EH0```"`OD5,````BX:$````C4CBB8Z(````=`L%#/[_
+M_XF&B````#/`@_K_#Y7`7U[#5HOQ5XN.A````(OYBU8$*_IY!S+`Z;,```"+
+MAI0````KP@&&C````%,SVX'Z`$```'X@A?]^$8M.$%>-!!%04>B/T```@\0,
+MB5X$B;Z$````ZP*+^;@`@```._AT'(L.*\=0BT80`\=0Z,:!__^+V(7;?@8!
+MGH0```"`OD5,````BX:$````C4CBB8Z(````=`L%#/[__XF&B````(N.C```
+M`(M&!(F&E````(/Y_W052`/(BX:(````.\%\`HO!B8:(````@_O_6P^5P%]>
+MPU-5BVPD#(O95XM\)!0[_700QH-23````7,'QH-13````8"[1$P```!T1BO]
+M([O<Y@``=G.-@T1+``!65U6+R.BXX/__B_"-BT1+``!65>ANT___4(O+Z%P%
+M```#[HV#1$L``".KW.8``"O^=<Y>ZS<[_7,BBX/8Y@``*\50BX-`2P```\50
+MZ"P%``!7_[-`2P``B\OK#(N#0$L``"O]5P/%4.@0!0``7UU;P@@`@^P44U56
+M5XOY,]N+3WR+KX`````KS2./W.8``#F?L.8```^&SP$``(N'K.8``(L$F(E$
+M)!2%P`^$K0$``(!X"`!T"<9`"`#IG@$``(L0BT`$B[?<Y@``B40D'(O"*\6)
+M5"08(\8[P0^#?0$``#OJ=!Q258O/Z-G^__^+5"08B^J+3WR+M]SF```KRB/.
+MBT0D'#O!#X>2`0``C2P0(^Z);"0@.]5R+87M="F+M]CF``"-CV3F``"+AT!+
+M```K\E8#PE!J`.BM>O__5?^W0$L``%;K#%"+AT!+```#PE!J`(V/9.8``.B,
+M>O__BW0D%(O/@\805NCBWO__BT8@BW8DB40D%(N'K.8``&HXB70D%/\TF.AU
+MF```BX>LY@``65F-2P&#))@`B4PD'#N/L.8```^#B0```(ML)!B+AZSF``"+
+M=)@$A?9T;SDN=6N+1"00.48$=6*`?@@`=5Q0_W0D&(V/9.8``&H`Z`EZ__^#
+MQA"+SU;H8][__XM&((M<)!R+=B2)1"04BX>LY@``:CB)="04_S28Z/*7``"+
+MAZSF``!968,DF`"-0P&)1"0<.X>PY@``<H7K!(MT)!"+;"0@BP]6_W0D&.C1
+M@/__`;=83```BT]\@Y=<3````"O-(X_<Y@``QH=23````4,[G[#F```/@C'^
+M____=WR+SU7H4?W__XM'?(F'@````%]>75N#Q!3#BX>LY@``BP28A<!T"H!X
+M"`!T!,9`"`!#.Y^PY@``<N")KX````#KT(/L)%.+V3/)5597BZN`````B_&+
+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
+MMIC0X$,`@\<"A=MT)(U.!.C&3?__:A!9*\O3Z(M."`/X`\N+P<'H`P%&!(/A
+M!XE."(M.?(O9BX;8Y@``*]T%_.___XE^=#O8#X.B````.\@/@YH```"+AD!+
+M```#V(TL"(T$.8E&?#E\)!AS4(/_"`^"0??__XO/P>D#B@.#[PB(10"*0P&(
+M10&*0P*(10**0P.(10.*0P2(102*0P6(106*0P:(10:*0P>#PPB(10>#Q0B#
+MZ0%UP^GZ]O__@_\(#X+Q]O__B\?!Z`.)1"08B_!J"%-5Z%Z:``"#Q`R#PPB#
+MQ0B#[PB#[@%UYNG#]O__A?\/A,#T__^+CMSF``"+ED!+``"+PR/!BTY\0XH$
+M$(@$"HM&?(N.W.8``$`CP8E&?(/O`778Z8WT__^!^A`!```/@X'T__\/MIHU
+MX$,`#[:Z/>!#`$.%_W0CB\CHBDS__VH062O/T^B+3@@#V`//B\'!Z`,!1@2#
+MX0>)3@B+1FB)1FR+1F2)1FB+1F")1F2)7F"+5GR+^HN&V.8``"O[!?SO___'
+M1G0"````:@)=._AS(SO0<Q^+CD!+``"-0@*)1GR*!`^(!!&*1`\!B$01`>GS
+M\___BX[<Y@``BY9`2P``B\<CP8M.?$>*!!"(!`J+1GR+CMSF``!`(\&)1GR#
+M[0%UV.G`\___QH9@3````.L5B\_HR,C__X.F7.8```"+SNB+[?__7UY=6X/$
+M$,($`(/L(%-6B_%7B70D$("^4$P```#&AF!,```!=5?_="0PZ)7J__^+SNC8
+MZ___A,`/A#T&``"-OHP```"+SE>-7@13Z(3;__^$P`^$(P8``(V&H````(O.
+M4%=3Z!CA__^$P`^$"P8``("^8N8````/A/X%``"-5GQ5B50D'.F["0``C59\
+MBX;<Y@``(0*+10`[AH@```!\:HV^C````(N&E````$@#!SE%`'\-=4*+1@@[
+MAI````!\-X"^G``````/A:4%``!758O.Z/W:__^$P`^$FP4``(V&H````(O.
+M4%=5Z)'@__^$P'6SZ8(%``"+SN@/Z___A,`/A&P%``"-5GR+CCQ+``"+P2L"
+M(X;<Y@``/000``!S/CL*=#J+SNB:[O__BX9<3```.X9,3```#X\\!0``?!*+
+MAEA,```[ADA,```/AR@%``"`OE!,````#X7N"```B\WH7TK__XO0BX8D`0``
+M@>+^_P``.Y2&I````',J:A!9*\C3Z@^VC#(H`0```TT$B\'!Z`,!10"#X0>)
+M300/MYQ6*`4``.M;:@]?0#O'<Q>-2"F-#(X[$7(+0(/!!(/X#W+SZP*+^(M-
+M!`//B\�>)303!Z`,!10`KE+Z@````:A!9*\_3ZHN,ON0````#RCN.H```
+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
+MZ(M/!`/-B\�>)3P3!Z`,!!RM4KC!J$%DKS=/JBTRN=(ML)"`#RCM.,!O`
+M(\$/MXQ&N`P``+@``0``.\AS3(.^V$H```%V-8-[]`!U+P^W0_AJ`UIF.\)S
+M(T!FB4/X#[?`B$P8_/^.V$H``(M4)!B+1"0<BUPD$.F,_O__@R,`,\"(2PAF
+MB4,$Z^&!^08!```/@FT"``"-@?K^__^#^`AS!#/;ZQ*+V&H#P>L"62/!2X/(
+M!(O+T^"-:`*);"04A=MT)HO/Z/4Z__]J$%DKR]/HBT\$`^@#RXEL)!2+P<'H
+M`P$'@^$'B4\$B\_HSSK__XO0BX:@#P``@>+^_P``.Y2&(`\``',I:A!9*\C3
+MZ@^VC#*D#P```T\$B\'!Z`,!!X/A!XE/!`^WA%:D$P``ZUUJ#UM`.\-S&HV.
+M(`\``(T,@3L1<@M`@\$$@_@/<O/K`HO8BT\$`\N+P8/A!XE/!,'H`P$'*Y2>
+M'`\``&H062O+T^J+C)Y@#P```\H[CAP/```;P"/!#[>$1J0;```/M\"#^`1S
+M!#/;ZP^+V(/@`='K@\@"2XO+T^!`B40D)(OHA=L/A`@!``"#^P0/@MD```!V
+M+(O/Z)T3``!J)(OH62O+T^V+3P2#P?S!Y00#;"0D`\N+P<'H`P$'@^$'B4\$
+MB\_HRCG__XO0BX:,'@``@>+^_P``.Y2&#!X``',I:A!9*\C3Z@^VC#*0'@``
+M`T\$B\'!Z`,!!X/A!XE/!`^WA%:0(@``ZUUJ#UM`.\-S&HV.#!X``(T,@3L1
+M<@M`@\$$@_@/<O/K`HO8BT\$`\N+P8/A!XE/!,'H`P$'*Y2>"!X``&H062O+
+MT^J+C)Y,'@```\H[C@@>```;P"/!#[>$1I`J```/M\`#Z.LFB\_HQA(``&H@
+MB^A9*\O3[8M/!`-L)"0#RXO!P>@#`0>#X0>)3P2!_0`!``!V(XM$)!1`B40D
+M%(']`"```'820(E$)!2!_0``!`!V!4")1"04BT0D*(M,)!3'``$```!FB4@$
+MB6@(Z6@!```[R'5/C40D+(O-4%?H2LK__P^V1"0L9HE#!(M$)#")0PAJ!%J)
+M$XN&V$H``&O(#`..U$H``$")AMA*```/MD0D.&:)002+1"0TB1&)00CI%?W_
+M_X'Y`0$``'4+QP,"````Z0+]__]J`UB)`XV!_O[__XO/B4,(Z$`X__^+T(N&
+M>"T``('B_O\``#N4AO@L``!S*6H062O(T^H/MHPR?"T```-/!(O!P>@#`0>#
+MX0>)3P0/MX16?#$``.M=:@];0#O#<QJ-CO@L``"-#($[$7(+0(/!!(/X#W+S
+MZP*+V(M/!`/+B\�>)3P3!Z`,!!RN4GO0L``!J$%DKR]/JBXR>."T```/*
+M.X[T+```&\`CP0^WA$9\.0``#[?8@_L(<P6#PP+K.XOK:@/![0)8(]A-@\L$
+MB\W3XX/#`H7M="*+S^AV-___:A!9*\W3Z(M/!`/8`\V+P<'H`P$'@^$'B4\$
+MBT0D*&:)6`2+5"08BT0D'(M<)!"+;"0@Z8CZ___&AM-*```!6U]>78/$+,($
+M`,S,S,S,S,S,S,Q65XM\)`PS]CEW!'8=4XO>BP^-!`N+"5#HS_G__T:-F^1*
+M```[=P1RYUM?7L($`(/L*%97BWPD-(OQ@'\L`'4GC4<PQD<L`5"-1QA0C4<$
+M4.B)S/__A,!U#L:'T$H```$RP.GA!0``BT<DBT\8`\$Y1P1_Y5.+G\Q*``!5
+MC6G_@^L0`V\@B6PD%(E<)!");"0@.^M\!(E<)""-1P3K"(M<)!"+;"04BY;<
+MY@``(59\BP@[3"0@?#,[S0^/A04``'4,BT<(.T<<#XUW!0``.\M\#8"_TDH`
+M```/A+4(```[C\Q*```/C:D(``"+CCQ+``"+P2M&?"/"/000``!S,CM.?'0M
+MB\[H&MK__XN&7$P``#N&3$P```^/@P@``'P2BX983```.X9(3```#X=O"```
+MC6\$B\WHZ37__XO0BX>T````@>+^_P``.U2'-',V:A!9*\C3Z@^VC#JX````
+M`TT$B\'!Z`,!10"#X0>-1P2)2`0/MY17N`0``.M>BUPD$.DB____:@];0#O#
+M<Q>-2`V-#(\[$7(+0(/!!(/X#W+SZP*+V(M-!`/+B\�>)303!Z`,!10`K
+M5)\P:A!9*\O3ZHM,GW0#RCM/,!O`(\$/MY1'N`P``(U'!+D``0``.]%S%XM&
+M?(N.0$L``(@4`?]&?(U'!.FE_O__@?H&`0``#X(6!```C9KZ_O__@_L(<P0S
+M[>L0B^N#XP/![0*#RP1-B\W3XX/#`H7M="B+R.CQ-/__:A!9*\W3Z(M/"`/8
+M`\V-;P2+P<'H`P%%`(/A!XE-!.L#C6\$B\WHQC3__XO0BX>@#P``@>+^_P``
+M.Y2'(`\``',J:A!9*\C3Z@^VC#JD#P```TT$B\'!Z`,!10"#X0>)300/MX17
+MI!,``.M>:@]=0#O%<QJ-B,@#``"-#(\[$7(+0(/!!(/X#W+SZP*+Z(M/"`/-
+MB\�>)3PC!Z`,!1P0KE*\<#P``:A!9*\W3ZHN,KV`/```#RCN/'`\``!O`
+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
+M!RO(@^F`9HD,?O^&9`8``,:&;0H```'K78F.?$H```^W#'Z-02#!Z`<KR&:)
+M#'['AH!*````0```#[<$?L'H"L>&5`8```$````/MH!80T,`B898!@``#[9-
+M`(J&;`H``(B$,6P&``"#IE`&````QH9M"@```%]>75O"!`!358O9,])6BW0D
+M$%</MT,"B8:$2@``BX9X2@``][:$2@``,]*+>P2+R(N&=$H``"N&<$H``/?Q
+MB8YX2@``BY:$2@``B^@[ZGP',L#IDP````^V3P$[Z7U%C00)B8Z`2@``.\*)
+MOE`&``!J!`^7P(B&;0H```^VP`&&9`8``%@#R(A/`68!0P*#^7Q^"%:+R^@>
+M`P``@Z9\2@```.M$BX90!@``A<!THL:&;0H````/MQ-*ZP6#Z@%T,0^V1P>#
+MQP8#R#O-?NZ)CH!*```/MD<!*\A7B8Y\2@``B\M6Z(8$``"P`5]>75O"!`"+
+MAE`&```/M@"*A#!L"0``B(9N"@``BH9L"@``B8Y\2@``#[8/B(0Q;`8```^W
+M`X.F4`8```")AE0&``"-4/^*AFP*``"-?_H/M@^(A#%L!@``@^H!=>B+AH1*
+M``")AH!*``#KDH'L%`0``%-55HNT)"0$``"+V5>)7"0<#[<[*[Y4!@``5U;H
+MG0$``(M+!(U4)"2#Z0:)1"08B50D%#/MBI9L"@``@\$&#[8!.)0P;`8``'3Q
+M#[9!`8M4)!0#Z(M<)!R-A"0D!```B6PD(#O0#X,``0``B0J#P@2)5"04@^\!
+M=;P!KH1*```STHN&>$H``/>VA$H``#/2B\B+AG1*```KAG!*``#W\8F.>$H`
+M`(N.A$H``(OH.^D/C;8```"+1"0@C50D)(M\)"0[Z'U*#[9/`>L:@\($C80D
+M)`0``#O0#X..````BSH/MD<!`\@[S7[BB8Z`2@``#[9'`2O(B8Y\2@``BTPD
+M&.BC`P``5U:+R^A@`P``ZUB)AGQ*``"-5"0DB8Z`2@``#[<[*[Y4!@``@^H$
+M@\($C80D)`0``#O0<S*+`@^V"(J&;`H``(B$,6P&``"#[P%UVXM,)!AFBX:$
+M2@``9@$!#[<#B894!@``L`'K`C+`7UY=6X'$%`0``,($`%.+V597:@B+<PR+
+M$P^V/!8/MD06`0^V3!8#P><("_@/MD06`@^V5!8$P><("\?!X`@+P8M+!-/@
+M62I+!%_3ZEX+PEO#58OIN0`!``!6#[=%`&8[P71RBW0D$%.+7"005XOX,\`Y
+MLU0&```/MHPS:P<```^?P(T4B(M%"#/)#[<`*\<[\`^<P6O'"U^-%)$/MTT"
+M.\@;P(/@`@/0#[:#;@H```/0C323#[<&BDX"B]#3ZBO"9HD&,\"%T@^4P`/"
+MB8.$2@``6^L4BTPD#(VQ0`8``,>!A$H```$```"+QEY=P@@`@^P44U6+;"0@
+M5E>+^8NU4`8```^W!XE$)""-6/\[=P1T+(UN^HM%`(L.9HM6!(D&9HM%!&:)
+M1@2#[@:)30"-;?IFB54*.W<$==N+;"0HBT<$@$`!!#/`9H-'`@0/MDX!#[=7
+M`BO1.85<!@``#Y7`B40D&`/!BVPD&(U/`M'HB$8!#[;`9HD!#[9&!X/&!BO0
+M`\71Z(A&`0^VP&8!`8I&`3I&^W9*BP:+SHE$)!1FBT8$BVPD%&:)1"02BT'Z
+MB0%FBT'^9HE!!(/I!CM/!'0*B\7!Z`@Z0?MWX8M$)!2+;"08B0%FBT0D$F:)
+M002-3P*#ZP%UDXML)"A&.!YU>(UV^D.`/@!T]P^W!P/3*\,SVT-FB0=F.\-U
+M78MW!(L.9HM>!(E,)!C!Z0B*P='ZT.@JR(A,)!F#^@%^!HM,)!CKYHM$)""-
+M0`'1Z`^VC"BU2@``BX2-1$L``(D&BT0D&(FTC41+``"-3P*)C5`&``")`6:)
+M603K-HO"T?@KT`^W!V8!$8M,)"!!T>E`T>@[R'034%'_=P2-C8Q*``#H@<#_
+M_XE'!(M'!(F%4`8``%]>75N#Q!3"!`!358ML)`R+V5>+?"04B;U0!@``@$<!
+M!&:#0P($BD<!.D?[=C&+#V:+5P16C7?ZBP:)!V:+1@1FB4<$B0YFB58$B;50
+M!@``@'X!?%YV"%6+R^CV_?__7UU;P@@`BT0D"%:+="0(B890!@``@$`!!&:#
+M00($@'@!?'8&5NC,_?__BX9H!@``_H9L"@``B89D!@``7L((`(O1BDH"@/D'
+M<Q6`:@,!=0]FT2*P`]+@_L&(0@.(2@+#S,S,S,S,S,S,BT$$A<!U!;@D0T,`
+MP[@8(```Z"E?``!35597B[PD+"```(N'O"$``(E$)!B+A]PA``")1"0<@_@#
+M=0B-K]!%``#K"XVO@"(``(/X`G4-@+V9$````'0$L`'K`C+`BYPD,"```(A$
+M)!.%VW15A,!T48._L&P```-T#X-]'!1R0H.]=!```/]T.0^VC<H0``"-A<L0
+M``#WV1O)(\B-A7`0``!14(V+D````.BH)/__A,!U#XU%*%"-1R10:@7HP>7^
+M_XL'BW`4B\[_%6`R0P"+S__6B40D)(E4)""%VW03B\_HL!+__P&#@````!&3
+MA````(L'BW`(B\[_%6`R0P"+S__6O@`(``"-1R164(U$)#!0Z"MY__^`O[IL
+M````#Y3`#[;`4%:-1"0P4.BI-/__BT0D&,9$)!(`#[:(H6$``/?9&\F#X02)
+M3"044>F.````A=MT#H.CB`````"#HXP`````@'PD$@!U3;X`"```C4<D5E"-
+MA"0P$```4.C!>/__:@%6C80D,!```%#H2#3__XL'C8PD*!```/]T)!3&1"06
+M`5&+<`2+SO\58#)#`(O/_]:$P'5\BT0D&("XB&$````/A80```!H``@``(U$
+M)"Q0Z(&+__^$P'1Q_W0D%(L'C4PD+%&+<`2+SO\58#)#`(O/_]:$P`^$5/__
+M_V:#O"0X(```5(U')%`/E<`/ML!0Z&R-__]J`8O/Z'6/_O^`?"03`(O/=&O_
+M="0<Z"2U_O_K96@`"```C80D+!```%"-1"0P4.CX=___Z[&-1"0H4&I%Z/KC
+M_O^+!XU/)/]T)!11BW`$B\[_%6`R0P"+S__6BP=J`/]T)"2+<!"+SO]T)"S_
+M%6`R0P"+S__6,L#IGP```.BJL/[_@[_<(0```G4SB\_H7Y;^_XN/J&P``"N/
+MV#(``(N'K&P``(LW&X?<,@``:@!048M.$/\58#)#`(O/_U80A=MT6(-\)!P%
+M=0;&0T\`ZQN*A9D0``"(0T^+A5@0``")0R"+A5P0``")0R2+S^B/$/__@V-P
+M`(V+D````(-C=`")0UB+1"08B5-<_[#@@@``_[5P$```Z%DB__^P`5]>75N!
+MQ!@@``#"$`!6B_$SP&H04(E&&(E&'(U&(%#'!FA#0P#'1@2,0T,`QT8(R$-#
+M`,=&#`1$0P#'1A`@1$,`QT84`0```.B":P``@\0,B\9>PU%35HOQ,]MJ#(D>
+MB5X$B5X(B5X,B5X0B5X4Z'Y:``")1"0,687`=!+'`&A$0P#'0`0!````B7`(
+MZP*+PXE&&(O&B5X<B5X@9HE>)(A>)HE>*%Y;6<-5B^QDH0````!J_VB!'T,`
+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
+MP'014&H`:'(!``!J;%?_%<`@1@!J:%?_%60A1@!H``!``&H`:#4$``!0B47L
+M_Q4`(48`:``(``"-A8SN__]0Z#+G__]J9E?_%60A1@!F@SURI$0``(OPB77H
+MN7*D1`!U!HV-C.[__U%6_Q5<(48`5NA5[/__:#R$1`!H.(1$`&B0W$4`5\8%
+M8X1$``#H-/'__X3`=0:('5*$1`"#/3R$1```=@YJ!_\U.(1$`%?H10<``(`]
+MF.Q%``!U)VB_````Z%DG__]0:FM7_Q50(48`:+X```#H12?__U!35_\54"%&
+M`(,]/(1$```/AJL```!J`/\U.(1$`%?H^@8``*&$W$4`A<!T+H,];*1$``!U
+M)8L-0(1$`&H`:@!0_W7L_S74#D0`Z,+>____-83<10#HW7X``%DY'6RD1`!T
+M45?_%<@@1@`Y'6RD1`!T0H`]<:1$``!U.6H#_S4XA$0`5^B5!@``@SV0[$4`
+M`'0B:@!H8*]!`&H`:'Q00P#_-=0.1`#_%;0@1@"%P`^$X/C__U/_-3B$1`!7
+MZ%T&``"`/6.$1```#X6C````@SV$W$4```^%E@```(,];*1$```/A8D````S
+MP+ZJ````9HF%9&G__X'^J@```'4)@#V8[$4``'0_@?ZK````=0F`/9CL10``
+M=2YH`"```&B44$,`C85D:?__4.AT1O__:``@``!6Z`PF__]0C85D:?__4.A<
+M1O__1H'^L````'ZGBPU`A$0`C85D:?__:@!J`%#_=>S_-=0.1`#HH]W__XMU
+MZ(,];*1$``)U"6H`5O\58"%&`(`]:)1$``!T%&H`:F=7Z,M7_O]J`&IF5^C!
+M5_[_H6RD1`"%P'0D@#U0A$0``'4;:@!3:!$!``!7.\-U"/\5`"%&`.L&_Q6H
+M($8`@#U2A$0``'03:)````#H927__U!35_\54"%&`(O#BTWT7UY;9(D-````
+M`(OE7<(0`,S,S,S,S,S,S,S,N%`:``#HMBH``%.+G"1@&@``55:+M"1D&@``
+M,^U7B[PD9!H``%55:!A/0P#_M"1\&@``4U97Z&!7_O^$P'0(,\!`Z5`#``"!
+M[A`!``!T;H/N`0^%/0,``&H"#[?#7BO&="*#Z&IT4H/H`71(@^@!=#^#Z`%T
+M$8/H`70Q@^@!#X41`P``:@9>555H<0$``&IF5_\5P"!&`(7`=`=0_Q78($8`
+M5E?_%;@@1@#KDVH#Z]9J!.O2,_9&Z\Z+]>O*:FQ7_Q5D(48`4/\5Q"!&`+X`
+M"```C80D8`H``%;_M"1T&@``4.C:1/__5HV$)&0*``!04.CY`O__C80D8`H`
+M`%!J95?_%5`A1@!H``$``&BT`@``C80DM`<``%!5C80D<`H``%#_%8`@1@!5
+M_[0DL`<``&AP`0``:F97_Q7`($8`C80D7`$``%"-A"1D"@``4/\59#!#`(O8
+M@_O_#X0V`@``C40D$%"-A"1T`0``4/\5`#%#`(U$)!A0C40D%%#_%0@Q0P!J
+M,HU$)#1058U$)"10:@)>5F@`!```_Q5P,4,`:C*-A"28````4%6-1"0D4%5H
+M``0``/\5=#%#`(U$)#!0C80DF````%!HF0```.AK(___4&A,3T,`C80DO`,`
+M`&@``@``4.@V@O[_@\08C80DK`,``%!J:E?_%5`A1@!3_Q5@,$,`]H0D7`$`
+M`!!U9&HRC80D_````#/)`XPD@`$``%"+A"2``0``$\504>@KZ___:)@```#H
+M`2/__U"-A"3\````NP`"``!0:&!/0P"-A"2X`P``4U#HPX'^_X/$%(V$)*P#
+M``!0:FA7_Q50(48`ZP6[``(``%7_M"2P!P``:'`!``!J9U?_%<`@1@"+#62$
+M1`"-1"0H4.B@4/__C40D$%"-1"0L4/\5`#%#`(U$)!A0C40D%%#_%0@Q0P!J
+M,HU$)#1058U$)"105KX`!```5O\5<#%#`&HRC80DF````%!5C40D)%!55O\5
+M=#%#`(U$)#!0C80DF````%!HF0```.@V(O__4&A,3T,`C80DO`,``%-0Z`6!
+M_O^#Q!B-A"2L`P``4&IK5_\54"%&`/:$)%P!```0BPV,W$4`BQ6(W$4`=`:+
+MP@O!=$MJ,HV$)/P```!045+H`>K__VB8````Z-<A__]0C80D_````%!H8$]#
+M`(V$)+@#``!34.B>@/[_@\04C80DK`,``%!J:5?_%5`A1@`SP%]>75N!Q%`:
+M``#"$`"X`"```.@2)P``5E=H`!```(U$)`PS]E#_M"04(```Z'L___^+^(7_
+M#X3S````5;T`"```1H/^`0^$R````&:#?"0,+W0,9H-\)`PM#X6T````#[=$
+M)`Y0Z$1;__^#Z$0/A)````"#Z`%T:H/H"W14@^@##X6-````#[=$)!!0Z!U;
+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
+M@_Xh!0``:@!74_]U".A+"0``Z8<%``#&!9GL10`!9CF]^,K__P^$<P4`
+M`(V%^,K__U#H]U+__Z/\Y4,`Z5T%``"#^P$/A7L!``"-A;""__^_``@``%!7
+M_Q5D,4,`5XV%L(+__U#H"^S^_S/`B_!0ZP)&5O\U^.5#`(V%L(+__U!HM%)#
+M`%=H:I1$`.A]=_[_@\08:&J41`#H5-O^_X3`==!H:I1$`&IF_W4(_Q50(48`
+M9H.]^,K__P`/A-\$``"`/7IK10``#X72!```,\!FB87XZO__C87XRO__:BQ0
+MZ+5/``!9687`=5(STHOR9CF5^,K__W1%B\J-A?C*__]F@SA`=!-&C87XRO__
+MC0PV`\%F.1!UZ>LD:``"``"-A?K*__\#P5"-A?CJ__]0Z'XX__\SP&:)A'7X
+MRO__9H.]^.K__P!U,&@`$```C86H0O[_4(V%^,K__U#H4CC__V@``@``C86H
+M8O[_4(V%^.K__U#H.CC__XV%^,K__U#H?][__S/`9HF%^-K__XV%^.K__VHD
+M4(V%^,K__U#_=0CH<=C__X/X!@^$\P,``&H!_W4(,\#&!5"$1``!9J-JE$0`
+M_Q6X($8`@_L'#X70`P``@SULI$0``'4*QP5LI$0``@```,8%:)1$``'IL0,`
+M`(/[`W4I9CF]^,K__W02C87XRO__4.ANJ@``6:.4[$4`C44,4.B2Y/__HY#L
+M10#&!7MK10`!Z7<#``"#^P8/A6X#```SP&:)A?BR__\/MX6H0O[_4.A(G0``
+MO@`(``!95H/X4'0S@_A4C87XLO__=!1H@LM%`%#H1S?__\=%[!````#K+&B"
+MJT4`4.@S-___QT7L!P```.L8:(*[10"-A?BR__]0Z!DW___'1>P"````,\!F
+MB86H8O__9HF%^,+__XV%J&+^_U90C86PDO__4.CN-O__:B);9CF=L)+__W5/
+MOP`(``"-A:IB_O]74(V%L)+__U#HR3;__XV%LI+__U-0Z*5-``!9687`#X3U
+M````,\EFB0B#P`)H``0``%"-A?C"__]0Z)@V___IU@```(V%L)+__U#HR=C^
+M_X3`#X6]````B]^-M;"2__]F.9VPDO__#X2H````:B!9#[<&9CO!=`AJ+UIF
+M.\)U>8OX,\!FB0:-A;"2__]0Z(;8_O^$P'1:C86PDO__4.B*V/[_4.C2V/[_
+MA,!U1&HO6(O>9COX=1AFB87XPO__C48":/\#``!0C87ZPO__ZQ=J(%B#Q@)F
+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
+MPV:%TG0VB];'1"00(````&8Y*@^$B0$``(M4)!!F.11$`0``9H-\1@(O
+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
+M____N"`A1@#I.____[@<(48`Z3'___^X&"%&`.DG____N!0A1@#I'?___[@0
+M(48`Z1/___^X#"%&`.D)____N`@A1@#I__[__[@$(48`Z?7^__^X`"%&`.GK
+M_O__N/P@1@#IX?[__[CX($8`Z=?^__^X]"!&`.G-_O__N/`@1@#IP_[__[CL
+M($8`Z;G^__^XZ"!&`.FO_O__N.0@1@#II?[__[C@($8`Z9O^__^XO"!&`.F1
+M_O__N*`@1@#IA_[__[BD($8`Z7W^__^XJ"!&`.ES_O__N*P@1@#I:?[__[BP
+M($8`Z5_^__^XM"!&`.E5_O__N+@@1@#I2_[__[AH(48`Z4'^__^XP"!&`.DW
+M_O__N,0@1@#I+?[__[C(($8`Z2/^__^XS"!&`.D9_O__N-`@1@#I#_[__[C4
+M($8`Z07^__^XV"!&`.G[_?__N-P@1@#I\?W__[AH($8`Z0````!14E!HY+U#
+M`.BC!```6EG_X+AD($8`Z>7___^X6"!&`.G;____N$P@1@#IT?___[A0($8`
+MZ<?___^X5"!&`.F]____N&P@1@#IL____[A<($8`Z:G___^X8"!&`.F?____
+MN$0@1@#I`````%%24&@$OD,`Z#@$``!:6?_@N#P@1@#IY?___[A`($8`Z=O_
+M__]14E!H)+Y#`.@3!```6EG_X+@(($8`Z>7___^X#"!&`.G;____N``@1@#I
+MT?___[@4($8`Z<?___^X&"!&`.F]____N!P@1@#IL____[@L($8`Z:G___^X
+M!"!&`.F?____N!`@1@#IE?___[@H($8`Z8O___^X)"!&`.F!____N"`@1@#I
+M=____[B(($8`Z0````!14E!H1+Y#`.B``P``6EG_X+B0($8`Z>7___^XC"!&
+M`.G;____N'0@1@#IT?___[B$($8`Z<?___^X@"!&`.F]____N'P@1@#IL___
+M_[AX($8`Z:G___^X?"%&`.D`````45)0:&2^0P#H'P,``%I9_^"X>"%&`.GE
+M____N(0A1@#IV____[B`(48`Z='___^X="%&`.G'____]P5@54,``!```'0F
+MZ)X```"AX`Q&`$"CX`Q&`(/X`74,:.0,1@!J!.C4`0``Z7<"``##H=`,1@!3
+M,]M#.\-U!#+`6\.%P'0$BL-;PU9HC%1#`/\5@#!#`(OPA?9U!(OSZRIHJ%1#
+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
+M```/MGX-#[9"#2OX=!8SR87_#Y_!C0Q-_____X7)#X7&!@``#[9^#@^V0@XK
+M^'06,\F%_P^?P8T,3?____^%R0^%I`8```^V3@\/MD(/*\AT$C/`A<D/G\"-
+M#$7_____ZP(SR87)#X5^!@``BT80.T(0#X2`````#[9"$`^V?A`K^'04A?\/
+MG\&-#$W_____A<D/A5(&```/MGX1#[9"$2OX=!8SR87_#Y_!C0Q-_____X7)
+M#X4P!@``#[9^$@^V0A(K^'06,\F%_P^?P8T,3?____^%R0^%#@8```^V3A,/
+MMD(3*\AT$C/`A<D/G\"-#$7_____ZP(SR87)#X7H!0``BT84.T(4='\/MO@/
+MMD(4*_AT%(7_#Y_!C0Q-_____X7)#X7!!0``#[9^%0^V0A4K^'06,\F%_P^?
+MP8T,3?____^%R0^%GP4```^V?A8/MD(6*_AT%C/)A?\/G\&-#$W_____A<D/
+MA7T%```/MDX7#[9"%RO(=!(SP(7)#Y_`C0Q%_____^L",\F%R0^%5P4``(M&
+M&#M"&'1_#[;X#[9"&"OX=!2%_P^?P8T,3?____^%R0^%,`4```^V?AD/MD(9
+M*_AT%C/)A?\/G\&-#$W_____A<D/A0X%```/MGX:#[9"&BOX=!8SR87_#Y_!
+MC0Q-_____X7)#X7L!```#[9.&P^V0ALKR'02,\"%R0^?P(T,1?_____K`C/)
+MA<D/A<8$``"+1AP[0AQT?P^V^`^V0APK^'04A?\/G\&-#$W_____A<D/A9\$
+M```/MGX=#[9"'2OX=!8SR87_#Y_!C0Q-_____X7)#X5]!```#[9^'@^V0AXK
+M^'06,\F%_P^?P8T,3?____^%R0^%6P0```^V3A\/MD(?*\AT$C/`A<D/G\"-
+M#$7_____ZP(SR87)#X4U!```:B!9*]D#\0/1.]D/@U_[__\#\P/3@_L?#X<5
+M!```_R2=FA="`(M&Y#M"Y`^$@0````^V^`^V0N0K^'06,\F%_P^?P8T,3?__
+M__^%R0^%XP,```^V?N4/MD+E*_AT%C/)A?\/G\&-#$W_____A<D/A<$#```/
+MMG[F#[9"YBOX=!8SR87_#Y_!C0Q-_____X7)#X6?`P``#[9.YP^V0N<KR'02
+M,\"%R0^?P(T,1?_____K`C/)A<D/A7D#``"+1N@[0N@/A($````/MO@/MD+H
+M*_AT%C/)A?\/G\&-#$W_____A<D/A4P#```/MG[I#[9"Z2OX=!8SR87_#Y_!
+MC0Q-_____X7)#X4J`P``#[9^Z@^V0NHK^'06,\F%_P^?P8T,3?____^%R0^%
+M"`,```^V3NL/MD+K*\AT$C/`A<D/G\"-#$7_____ZP(SR87)#X7B`@``BT;L
+M.T+L#X2!````#[;X#[9"["OX=!8SR87_#Y_!C0Q-_____X7)#X6U`@``#[9^
+M[0^V0NTK^'06,\F%_P^?P8T,3?____^%R0^%DP(```^V?NX/MD+N*_AT%C/)
+MA?\/G\&-#$W_____A<D/A7$"```/MD[O#[9"[RO(=!(SP(7)#Y_`C0Q%____
+M_^L",\F%R0^%2P(``(M&\#M"\`^$@0````^V^`^V0O`K^'06,\F%_P^?P8T,
+M3?____^%R0^%'@(```^V?O$/MD+Q*_AT%C/)A?\/G\&-#$W_____A<D/A?P!
+M```/MG[R#[9"\BOX=!8SR87_#Y_!C0Q-_____X7)#X7:`0``#[9.\P^V0O,K
+MR'02,\"%R0^?P(T,1?_____K`C/)A<D/A;0!``"+1O0[0O0/A((````/MD+T
+M#[9^]"OX=!8SR87_#Y_!C0Q-_____X7)#X6&`0``#[9^]0^V0O4K^'06,\F%
+M_P^?P8T,3?____^%R0^%9`$```^V?O8/MD+V*_AT%C/)A?\/G\&-#$W_____
+MA<D/A4(!```/MD[W#[9"]RO(=!(SP(7)#Y_`C0Q%_____^L",\F%R0^%'`$`
+M`(M&^#M"^`^$@0````^V^`^V0O@K^'06,\F%_P^?P8T,3?____^%R0^%[P``
+M``^V?OD/MD+Y*_AT%C/)A?\/G\&-#$W_____A<D/A<T````/MG[Z#[9"^BOX
+M=!8SR87_#Y_!C0Q-_____X7)#X6K````#[9.^P^V0OLKR'02,\"%R0^?P(T,
+M1?_____K`C/)A<D/A84```"+1OP[0OQT=0^V^`^V0OPK^'02,\F%_P^?P8T,
+M3?____^%R75@#[9^_0^V0OTK^'02,\F%_P^?P8T,3?____^%R75"#[9^_@^V
+M0OXK^'02,\F%_P^?P8T,3?____^%R74D#[9._P^V0O\KR'02,\"%R0^?P(T,
+M1?_____K`C/)A<EU`C/)B\%?Z>8-``"+1N,[0N-T=0^V^`^V0N,K^'02,\F%
+M_P^?P8T,3?____^%R773#[9^Y`^V0N0K^'02,\F%_P^?P8T,3?____^%R76U
+M#[9^Y0^V0N4K^'02,\F%_P^?P8T,3?____^%R767#[9.Y@^V0N8KR'02,\"%
+MR0^?P(T,1?_____K`C/)A<D/A7'___^+1N<[0N</A($````/MO@/MD+G*_AT
+M%C/)A?\/G\&-#$W_____A<D/A43___\/MG[H#[9"Z"OX=!8SR87_#Y_!C0Q-
+M_____X7)#X4B____#[9^Z0^V0NDK^'06,\F%_P^?P8T,3?____^%R0^%`/__
+M_P^V3NH/MD+J*\AT$C/`A<D/G\"-#$7_____ZP(SR87)#X7:_O__BT;K.T+K
+M#X2!````#[;X#[9"ZROX=!8SR87_#Y_!C0Q-_____X7)#X6M_O__#[9^[`^V
+M0NPK^'06,\F%_P^?P8T,3?____^%R0^%B_[__P^V?NT/MD+M*_AT%C/)A?\/
+MG\&-#$W_____A<D/A6G^__\/MD[N#[9"[BO(=!(SP(7)#Y_`C0Q%_____^L"
+M,\F%R0^%0_[__XM&[SM"[P^$@0````^V^`^V0N\K^'06,\F%_P^?P8T,3?__
+M__^%R0^%%O[__P^V?O`/MD+P*_AT%C/)A?\/G\&-#$W_____A<D/A?3]__\/
+MMG[Q#[9"\2OX=!8SR87_#Y_!C0Q-_____X7)#X72_?__#[9.\@^V0O(KR'02
+M,\"%R0^?P(T,1?_____K`C/)A<D/A:S]__^+1O,[0O,/A($````/MO@/MD+S
+M*_AT%C/)A?\/G\&-#$W_____A<D/A7_]__\/MG[T#[9"]"OX=!8SR87_#Y_!
+MC0Q-_____X7)#X5=_?__#[9^]0^V0O4K^'06,\F%_P^?P8T,3?____^%R0^%
+M._W__P^V3O8/MD+V*\AT$C/`A<D/G\"-#$7_____ZP(SR87)#X45_?__BT;W
+M.T+W#X2"````#[9"]P^V?O<K^'06,\F%_P^?P8T,3?____^%R0^%Y_S__P^V
+M?O@/MD+X*_AT%C/)A?\/G\&-#$W_____A<D/A<7\__\/MG[Y#[9"^2OX=!8S
+MR87_#Y_!C0Q-_____X7)#X6C_/__#[9.^@^V0OHKR'02,\"%R0^?P(T,1?__
+M___K`C/)A<D/A7W\__^+1OL[0OL/A($````/MO@/MD+[*_AT%C/)A?\/G\&-
+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
+MMD[P#[9"\"O(=!(SP(7)#Y_`C0Q%_____^L",\F%R0^%,?7__XM&\3M"\0^$
+M@@````^V0O$/MG[Q*_AT%C/)A?\/G\&-#$W_____A<D/A0/U__\/MG[R#[9"
+M\BOX=!8SR87_#Y_!C0Q-_____X7)#X7A]/__#[9^\P^V0O,K^'06,\F%_P^?
+MP8T,3?____^%R0^%O_3__P^V3O0/MD+T*\AT$C/`A<D/G\"-#$7_____ZP(S
+MR87)#X69]/__BT;U.T+U#X2!````#[;X#[9"]2OX=!8SR87_#Y_!C0Q-____
+M_X7)#X5L]/__#[9^]@^V0O8K^'06,\F%_P^?P8T,3?____^%R0^%2O3__P^V
+M?O</MD+W*_AT%C/)A?\/G\&-#$W_____A<D/A2CT__\/MD[X#[9"^"O(=!(S
+MP(7)#Y_`C0Q%_____^L",\F%R0^%`O3__XM&^3M"^0^$@0````^V^`^V0ODK
+M^'06,\F%_P^?P8T,3?____^%R0^%U?/__P^V?OH/MD+Z*_AT%C/)A?\/G\&-
+M#$W_____A<D/A;/S__\/MG[[#[9"^ROX=!8SR87_#Y_!C0Q-_____X7)#X61
+M\___#[9._`^V0OPKR'02,\"%R0^?P(T,1?_____K`C/)A<D/A6OS__\/MG[]
+M#[9"_2OX=!8SR87_#Y_!C0Q-_____X7)#X5)\___#[9"_@^V?OXK^`^$4_?_
+M_S/)A?\/G\&-#$W_____Z3CW__^+30@/M@(/MC$K\'06,\"%]@^?P(T$1?__
+M__^%P`^%\0````^V<0$/MD(!*_!T%C/`A?8/G\"-!$7_____A<`/A<\````/
+MMG$"#[9"`BOP=!8SP(7V#Y_`C01%_____X7`#X6M````#[9)`P^V0@,KR'0.
+M,\"%R0^?P(T,1?____^+P>F,````BU4(BW4,#[8*#[8&*\AT$C/`A<D/G\"-
+M!$7_____A<!U:@^V2@$/MD8!*\AT$C/`A<D/G\"-!$7_____A<!U3`^V2@(/
+MMD8"ZYV+50B+=0P/M@H/M@8KR'02,\"%R0^?P(T$1?____^%P'4@#[9*`0^V
+M1@'I;O___XM%"`^V"(M%#`^V`.E=____,\!>6UW#B_^D"4(`P`U"``420@`[
+M%D(`(0E"`"D-0@!N$4(`I!5"`(H(0@"1#$(`UA!"``T50@#R!T(`^@M"`#\0
+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
+MBU`D4N@4````@\0(78M$)`B+5"00B0*X`P```,-35E>+1"0055!J_FA0-T(`
+M9/\U`````*%HYD,`,\10C40D!&2C`````(M$)"B+6`B+<`R#_O]T.H-\)"S_
+M=`8[="0L=BV--':+#+.)3"0,B4@,@WRS!`!U%V@!`0``BT2S".A)````BT2S
+M".A?````Z[>+3"0$9(D-`````(/$&%]>6\,SP&2+#0````"!>010-T(`=1"+
+M40R+4@PY40AU!;@!````PU-1NY#F0P#K"U-1NY#F0P"+3"0,B4L(B4,$B6L,
+M55%06%E=65O"!`#_T,-6Z._J__^+<`2%]G0)B\[H);?____6Z+$\``#,B_]5
+MB^R+10AFBPB#P`)FA<EU]2M%"-'X2%W#Z5M/``"+_U6+[%WIBD\``(O_58OL
+M7>EM4```B_]5B^R+50Q6BW4(5P^W.@^W#BO/=14K\F:%_W0.@\("#[<Z#[<,
+M%BO/=.U?7H7)>06#R/]=PS/`A<D/G\!=P\S,S,S,S,R+3"0$]\$#````="2*
+M`8/!`83`=$[WP0,```!U[P4`````C:0D`````(VD)`````"+`;K__OY^`]"#
+M\/\SPH/!!*D``0&!=.B+0?R$P'0RA.1T)*D``/\`=!.I````_W0"Z\V-0?^+
+M3"0$*\'#C4'^BTPD!"O!PXU!_8M,)`0KP<.-0?R+3"0$*\'#B_]5B^R![(0$
+M``"A:.9#`#/%B47\@WT8`(M%$%.+712)A:#[__]U&.C"4@``QP`6````Z)91
+M``"#R/_I$0$``(7;=`2%P'3@5E?_=1R-C7S[___HPP8``(M-"(V]D/O__S/`
+M,]*KJZNKB\&+O:#[__^#X`*)A8S[__\+PHF]D/O__XF=E/O__XF5F/O__W4*
+MB)6<^___A?]U!\:%G/O__P'_=2"-A9#[__^)A:#[__^-A8#[__]0_W48C86@
+M^____W4,45"-C:3[___HX04``(V-I/O__^C4"```B_"%_W1+BT4(,\F#X`$+
+MP70<A=MU!(7V=6^+A9C[__\[PW4JA?9X*3OS=B7K6XN%C/O__PO!=$V%VW05
+MA?9Y!(@/ZPV+A9C[__\[PW1-B`P'C8WD^___Z&<&``"`O8C[__\`=`V+C7S[
+M__^#H5`#``#]7XO&7HM-_#/-6^@3M/__B^5=PX7;=06#SO_KPXN%F/O__SO#
+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
+M%TB#Z`%T"X/H`W4<@TD@".L6@TD@!.L0@TD@`>L*@TD@(.L$@TD@`K`!PP^W
+M03*#Z"!T+8/H`W0B@^@(=!=(@^@!=`N#Z`-U'(-)(`CK%H-)(`3K$(-)(`'K
+M"H-)("#K!(-)(`*P`</H.0```(3`=1/H?$8``,<`%@```.A010``,L##L`'#
+MZ$0```"$P'43Z%U&``#'`!8```#H,44``#+`P[`!PXO_5FH`B_'H.0```(3`
+M=0)>PXU&&%`/MD8QC8Y(!```4.CF$```L`%>PXU1&,9!/`%2#[=1,H'!2`0`
+M`%+H#!$``+`!PXO_5HOQ5[\`@```BT8(BDXQQD8\``^VT8L`BP!FA3Q0=#B-
+M1AA048V.2`0``.B5$```BTX0B@&(1C&-00&`?C$`B480=13HO$4``,<`%@``
+M`.B01```,L#K`K`!7U["!`"`>3$J=`J-02A0Z)W[___#@T$4!(M!%(M`_(E!
+M*(7`>02#22C_L`'#9H-Y,BIT"HU!*%#HT/O__\.#010$BT$4BT#\B4$HA<!Y
+M!(-)*/^P`<.*03$\1G4:BP&#X`B#R``/A5$!``#'01P'````Z<0"```\3G4F
+MBP%J"%HCPH/(``^%,0$``(E1'.@810``QP`6````Z.Q#```RP,.#>2P`=></
+MOL"#^&H/C[X````/A*\```"#^$ET3X/X3'0^@_A4="V#^&@/A>L```"+01"`
+M.&AU$$#'02P!````B4$0Z=,```#'02P"````Z<<```#'02P-````Z;L```#'
+M02P(````Z:\```"+41"*`CPS=1B`>@$R=1*-0@+'02P*````B4$0Z8X````\
+M-G45@'H!-'4/C4("QT$L"P```(E!$.MU/&1T%#QI=!`\;W0,/'5T"#QX=`0\
+M6'5=QT$L"0```.M4QT$L!0```.M+@_AL="J#^'1T'(/X=W0.@_AZ=3?'02P&
+M````ZR['02P,````ZR7'02P'````ZQR+01"`.&QU#4#'02P$````B4$0ZP?'
+M02P#````L`'##[=!,H/X1G4:BP&#X`B#R``/A6(!``#'01P'````Z8@#``"#
+M^$YU)HL!:@A:(\*#R``/A4$!``")41SHK$,``,<`%@```.B`0@``,L##@WDL
+M`'7G@_AJ#X_-````#X2^````@_A)=%.#^$QT0H/X5'0Q:FA:.\(/A?P```"+
+M01!F.1!U$H/``L=!+`$```")01#IX@```,=!+`(```#IU@```,=!+`T```#I
+MR@```,=!+`@```#IO@```(M1$`^W`H/X,W499H-Z`C)U$HU"!,=!+`H```")
+M01#IF@```(/X-G469H-Z`C1U#XU"!,=!+`L```")01#K?X/X9'09@_AI=!2#
+M^&]T#X/X=70*@_AX=`6#^%AU8<=!+`D```#K6,=!+`4```#K3VIL6CO"="J#
+M^'1T'(/X=W0.@_AZ=3G'02P&````ZS#'02P,````ZR?'02P'````ZQZ+01!F
+M.1!U#X/``L=!+`0```")01#K!\=!+`,```"P`<.+_U6+[%%35HOQ,]M#,\D/
+MOD8Q@_AD?VP/A),```"#^%A_/G0W@_A!#X23````@_A#=#Z#^$1^'8/X1P^.
+M@````(/X4W4/B\[HH0L``(3`#X6?````,L#IS0$``%-J$.M7@^A:=!6#Z`=T
+M5DB#Z`%UY%&+SNA8"```Z]*+SNB]!```Z\F#^'!_370_@_AG?C&#^&ET'(/X
+M;G0.@_AO=;:+SN@1"P``ZZ6+SNB4"@``ZYR#3B`046H*B\[H.@D``.N,B\[H
+M/04``.N#B\[H!0L``.EW____@^AS#X1G____2(/H`730@^@##X5G____4>EI
+M____@'XP`'0'BL/I*`$``(M6(#/`5V:)1?R+^(A%_HO"P>@$A,-T)XO"P>@&
+MA,-T!L9%_"WK%H33=`;&1?PKZPR+PM'HA,-T!L9%_""+^XI.,8#Y>'0%@/E8
+M=0F+PL'H!83#=0(RVX#Y870)@/E!=`0RP.L"L`&$VW4$A,!T)\9$/?PP@/E8
+M=`F`^4%T!#+`ZP*P`83`#Y3`_L@DX`1XB$0]_8/'`HM>)"M>."O?]L(,=1:-
+M1AA04XV&2`0``&H@4.@3\___@\00_W8,C4884%>-1?R-CD@$``!0Z!@-``"+
+M3B"-?AB+P<'H`Z@!=!O!Z0+VP0%U$U=3C89(!```:C!0Z-+R__^#Q!!J`(O.
+MZ+,+``"#/P!\'8M&(,'H`J@!=!-74XV&2`0``&H@4.BG\O__@\00L`%?7EN+
+MY5W#B_]5B^R#[`RA:.9#`#/%B47\4U:+\3/;:D%::E@/MT8R68/X9']K#X22
+M````.\%_/G0V.\(/A)0```"#^$-T/X/X1'X=@_A'#XZ!````@_A3=0^+SNC8
+M"0``A,`/A:`````RP.GD`0``:@%J$.M7@^A:=!6#Z`=T5DB#Z`%UXU.+SNBK
+M!@``Z]&+SNCC`@``Z\B#^'!_370_@_AG?C&#^&ET'(/X;G0.@_AO=;6+SNC4
+M"```ZZ2+SNA7"```ZYN#3B`04VH*B\[H_08``.N+B\[H6@0``.N"B\[HR`@`
+M`.EV____@^AS#X1F____2(/H`730@^@##X5F____4^EI____.%XP#X5``0``
+MBU8@,\E7B\*)7?3!Z`1!9HE=^&H@7X3!="B+PL'H!H3!=`EJ+5AFB47TZQ2$
+MT70$:BOK\8O"T>B$P70&9HE]](O9#[=.,H/Y>'0(:EA89CO(=0V+PL'H!:@!
+M=`2T`>L",N2#^6%T#&I!7V8[SW0$,L#K`K`!:C!?A.1U!(3`=#!J6%AFB7Q=
+M]&8[R'0,:D%89CO(=`0RP.L"L`&$P`^4P/[().`$>&:89HE$7?:#PP*+?B0K
+M?C@K^_;"#'46C4884%>-AD@$``!J(%#H[/#__X/$$/]V#(U&&%!3C47TC8Y(
+M!```4.A8"P``BTX@C5X8B\'!Z`.H`70;P>D"]L$!=1-35XV&2`0``&HP4.BK
+M\/__@\00:@"+SN@'"@``@SL`?!V+1B#!Z`*H`7034U>-AD@$``!J(%#H@/#_
+M_X/$$%^P`8M-_%XSS5OH:*#__XOE7<.`>3$J=`J-0210Z-OS___#@T$4!(M!
+M%(M`_(E!)(7`>0>#22`$]UDDL`'#9H-Y,BIT"HU!)%#H"_3__\.#010$BT$4
+MBT#\B4$DA<!Y!X-)(`3W622P`<.+_U6+[(M%"(/X"W<9_R2%&4]"`&H$6%W#
+M,\!`7<-J`NOT:@CK\#/`7<.+_P%/0@`&3T(`"T]"``%/0@`/3T(`#T]"``%/
+M0@`!3T(`$T]"``%/0@`!3T(`#T]"`(O_4U:+\5>#1A0$BT84BWC\A?]T-HM?
+M!(7;="__=BP/MD8Q4/]V!/\VZ+/M__^#Q!")7C2$P`^W!W0+T>B)1CC&1CP!
+MZQ>)1CCK#L=&-+1>0P#'1C@&````QD8\`%]>L`%;PXO_4U:+\5>#1A0$BT84
+MBWC\A?]T-HM?!(7;="__=BP/MT8R4/]V!/\VZ)#M__^#Q!")7C2$P`^W!W0+
+MT>B)1CC&1CP!ZQ>)1CCK#L=&-+1>0P#'1C@&````QD8\`%]>L`%;PXO_58OL
+M45%6B_%7@TX@$(M&*(7`>1V*1C$\870-/$%T"<=&*`8```#K'<=&*`T```#K
+M%'42BD8Q/&=T!#Q'=0?'1B@!````BT8HC7Y`4[M=`0``B\\#PU#H..S__X3`
+M=0R+S^@5[/__*\.)1BB+AP0$``"%P'4"B\>#9?@`@V7\`(E&-(-&%`B+3A2+
+M0?B)1?B+0?R+SXE%_.C?Z___BY\$!```B\B%VW4"B]__=@@/OD8Q_W8$_S;_
+M=BA048O/Z.;L__]0B\_HL>O__U"-1?A34.A)3```BT8@@\0HP>@%6Z@!=!.#
+M?B@`=0W_=@C_=C3H'_'__UE9BD8Q/&=T!#Q'=1>+1B#!Z`6H`74-_W8(_W8T
+MZ$#P__]968M&-(`X+74(@TX@0$")1C2+5C2*`CQI=`P\270(/&YT!#Q.=03&
+M1C%SC7H!B@I"A,EU^2O7L`%?B58X7HOE7<.+_U6+[%%15E>+\6IG66I'@TX@
+M$(M&*%J%P'D@#[=&,H/X870.@_A!=`G'1B@&````ZR#'1B@-````ZQ=U%0^W
+M1C)F.\%T!68[PG4'QT8H`0```(M&*(U^0%.[70$``(O/`\-0Z-+J__^$P'4,
+MB\_HK^K__RO#B48HBX<$!```A<!U`HO'@V7X`(-E_`")1C2#1A0(BTX4BT'X
+MB47XBT'\B\^)1?SH>>K__XN?!`0``(O(A=MU`HO?_W8(#[Y&,O]V!/\V_W8H
+M4%&+S^B`Z___4(O/Z$OJ__]0C47X4U#HXTH``(M&((/$*,'H!5NH`703@WXH
+M`'4-_W8(_W8TZ+GO__]960^W1C)J9UEF.\%T"&I'668[P747BT8@P>@%J`%U
+M#?]V"/]V-.C1[O__65F+1C2`."UU"(-.($!`B48TBU8TB@(\:70,/$ET"#QN
+M=`0\3G4':G-89HE&,HUZ`8H*0H3)=?DKU[`!7XE6.%Z+Y5W#B_]6B_%7_W8L
+M#[9&,5#_=@3_-N@WZO__@\00C7Y`A,!T.8-&%`2+1A13BY\$!```#[=`_(7;
+M=0*+WU"+S^AOZ?__4(U&.%-0Z/([``"#Q!!;A<!T)<9&,`'K'XN/!`0``(7)
+M=0*+SX-&%`2+1A2*0/R(`<=&.`$```"+AP0$``"%P'0"B_B)?C2P`5]>P@0`
+MB_]5B^Q14U:+\5?&1CP!@T84!(M&%/]V+`^W6/P/MT8R4/]V!/\VZ-/I__^#
+MQ!"-?D"$P'4RBX\$!```B%W\B$7]A<EU`HO/BT8(4(L`_W`$C47\4%'H'SD`
+M`(/$$(7`>17&1C`!ZP^+AP0$``"%P'4"B\=FB1B+AP0$``"%P'0"B_B)?C2P
+M`5_'1C@!````7EN+Y5W"!`"+_U6+[%-6B_'_=BSHV?K__UF+V(O+@^D!='B#
+MZ0%T5DF#Z0%T,X/I!'07Z$<X``#'`!8```#H&S<``#+`Z0(!``"+1B"#1A0(
+MP>@$J`&+1A2+2/B+4/SK6(M&((-&%`3!Z`2H`8M&%'0%BT#\ZS^+2/PSTNL[
+MBT8@@T84!,'H!*@!BT84=`8/OT#\ZR$/MT#\ZQN+1B"#1A0$P>@$J`&+1A1T
+M!@^^0/SK!`^V0/R9B\A7BWX@B\?!Z`2H`707A=)_$WP$A<ES#??9@](`]]J#
+MST")?B"#?B@`7WT)QT8H`0```.L1@V8@][@``@``.48H?@.)1BB+P0O"=02#
+M9B#?_W4,_W4(@_L(=0M248O.Z#7I___K"%&+SNBVZ/__BT8@P>@'J`%T&H-^
+M.`!T"(M&-(`X,'0,_TXTBTXTQ@$P_T8XL`%>6UW""`"+_U:+\5>#1A0$BT84
+MBWC\Z()*``"%P'44Z`\W``#'`!8```#HXS4``#+`ZT3_=BSH:_G__UF#Z`%T
+M*X/H`70=2(/H`700@^@$=<Z+1AB9B0>)5P3K%8M&&(D'ZPYFBT889HD'ZP6*
+M1AB(!\9&,`&P`5]>PXM1((O"P>@%J`%T"8'*@````(E1(&H`:@CH)/[__\-J
+M`6H0QT$H"````,=!+`H```#H#/[__\.+_U-6B_%7@T84!(M&%(M^*(M8_(E>
+M-(/__W4%O____W__=BP/MD8Q4/]V!/\VZ/_F__^#Q!"$P'0:A=MU!\=&-+Q>
+M0P!7_W8TQD8\`>@=$@``ZQ2%VW4'QT8TM%Y#`%?_=C3HX!```%E97XE&.+`!
+M7EO#B_]35HOQ5X-&%`2+1A2+?BB+6/R)7C2#__]U!;____]__W8L#[=&,E#_
+M=@3_-NC,YO__@\00A,!T'(7;=0?'1C2\7D,`5_]V-,9&/`'HJA$``%E9ZQ6%
+MVW4'QT8TM%Y#`&H`5XO.Z`D```!?B48XL`%>6\.+_U6+[%97B_DS]HM7-#EU
+M"'XE4XH"A,!T'0^VR+L`@```BT<(BP"+`&:%'$AT`4)"1CMU"'S=6U^+QEY=
+MP@@`@SD`=1/H434``,<`%@```.@E-```,L##L`'#B_]5B^R+T8L*BT$(.T$$
+MBT4,=12`>0P`=`3_`.L#@PC_BP**0`SK%O\`BP+_0`B+`HL(BD4(B`&+`O\`
+ML`%=P@@`B_]5B^R+T8L*BT$(.T$$BT4,=12`>0P`=`3_`.L#@PC_BP**0`SK
+M&?\`BP+_0`B+`HL(9HM%"&:)`8L"@P`"L`%=P@@`B_]5B^R#[!"A:.9#`#/%
+MB47\4U:+\5>`?CP`=%V+1CB%P'Y6BWXT,]N%P'1E#[<'C7\"@V7P`%!J!HU%
+M]%"-1?!0Z!(W``"#Q!"%P'4F.47P="'_=@R-1AA0_W7PC47T4(V.2`0``.C&
+M````0SM>.'6[ZQZ#3AC_ZQC_=@R-1AA0_W8XC8Y(!```_W8TZ*````"+3?RP
+M`5]>,\U;Z)B6__^+Y5W"!`"+_U6+[%%14U:+\5>`?CP`=5:+1CB%P'Y/BUXT
+M,_^%P'1>,\!FB47\BT8(4(L`_W`$C47\4U#H0C0``(/$$(E%^(7`?AV-3AA1
+M_W7\C8Y(!```Z+W^__\#7?A'.WXX=<+K'H-.&/_K&/]V#(U&&%#_=CB-CD@$
+M``#_=C3HG@```%]>L`%;B^5=P@0`B_]5B^Q14597BWT4B\&)1?B+#X,G`(L`
+MB4W\BW`$.7`(=1B`>`P`=`J+31"+10P!`>M*BT40@PC_ZT4K<`A3BUT,._-R
+M`HOS5O]U"/\PZ`J>__^+3?B#Q`R+`0$PBP$!<`B+`8!X#`"+11!T!`$8ZPL[
+M\W0%@PC_ZP(!,%N+3?R#/P!U!H7)=`*)#U]>B^5=PA``B_]5B^Q145.+712+
+MP5>)1?B+"X,C`(L0B4W\BWH$.7H(=1B`>@P`=`J+31"+10P!`>M1BT40@PC_
+MZTPK>@B+10P[^'("B_A6C30_5O]U"/\RZ'2=__^+3?B#Q`R+`0$PBP%>`7@(
+MBP&`>`P`BT40=`>+30P!".L,.WT,=`6#"/_K`@$XBTW\@SL`=0:%R70"B0M?
+M6XOE7<(0`(O_58OL_W4@_W4<_W48_W44_W40_W4,_W4(Z$S?__^#Q!Q=PXO_
+M58OL_W4@_W4<_W48_W44_W40_W4,_W4(Z*3@__^#Q!Q=P\S,S,S,S,S,B_]5
+MB^R#[!"-1?A0_Q7P,4,`A<!T,XU%\%#_%;PQ0P"%P'0EBTWXB\&+5?P+PG09
+MBT7PHQ@11@"+1?2)#1`11@")%1011@#K$H/(_Z,0$48`HQ011@"C&!%&`*,<
+M$48`,\"+Y5W#B_]5B^R+10B+50Q6B_`K\@^W"F:)#!:-4@)FA<EU\5Y=PXO_
+M58OLBT40A<!U`EW#BTT,BU4(5H/H`705#[<R9H7V=`UF.S%U"(/"`H/!`NOF
+M#[<"#[<)*\%>7<.+_U6+[(M-$%>+?0B%R70MBU4,*]</MP0Z9HD'@\<"9H7`
+M=`6#Z0%U[(7)=!"#Z0%T"S/`T>GSJQ/)9O.KBT4(7UW#B_]5B^R+10@SR5-6
+M5V8Y"'0LBW4,#[<^B\YFA?]T%0^W&(O79CO3=!>#P0(/MQ%FA=)U\(/``C/)
+M9CD(==HSP%]>6UW#B_]5B^R+10B9,\(KPEW#B_]5B^Q14:%HYD,`,\6)1?R+
+M10Q7BWT0A<!U&(7_=!3HC#```,<`%@```.A@+P``,\#K<(M5%(72=.6#?1@`
+M=-]3C5__#Z_:5@/8ZTV+S]'IB4WX=%V+\8/G`74#C7'_BTT8#Z_R`_!6_W4(
+M_Q5@,D,`_U4865F%P'0EBU44>1&+10R+WBO:A?^+??AU#$_K"8M]^(T$%HE%
+M##O#=J\S]HO&7EN+3?PSS5_H@I+__XOE7<.%_W3GBTT84/]U"/\58#)#`/]5
+M&(OP]]Y9&_;WUB-U#%GKRLR+_U6+[%&A:.9#`#/%B47\BTT(4XM=##O9=FR+
+M11!65XT4`8ORB_D[\W<HZP.-20"+31175O\58#)#`/]5%(/$"(7`?@*+_HM%
+M$`/P._-VX(M-"(OPB],[^W0AA<!T'2O[B@*-4@&*3!?_B$07_XA*_X/N`77K
+MBT40BTT(*]B-%`$[V7>>7UZ+3?PSS5OHR)'__XOE7</,S,S,S,S,S,S,B_]5
+MB^R+10Q7BWT(._AT)E:+=1"%]G0=*_B-FP````"*"(U``8I4!_^(3`?_B%#_
+M@^X!=>M>7UW#S,S,S,S,S(O_58OL@>P<`0``H6CF0P`SQ8E%_(M-"(M5#(F-
+M_/[__U:+=12)M0#___]7BWT0B;T$____A<EU)(72="#HN"X``,<`%@```.B,
+M+0``7UZ+3?PSS>@AD?__B^5=PX7_=-R%]G38QX7X_O__`````(/Z`@^"$@,`
+M`$H/K]=3`]&)E0C___^+PC/2*\'W]XU8`8/["'<65E?_M0C___]1Z'W^__^#
+MQ!#IMP(``-'K#Z_?`]E348O.B9WP_O___Q5@,D,`_]:#Q`B%P'X05U/_M?S^
+M___HZ/[__X/$#/^U"/___XO._[7\_O___Q5@,D,`_]:#Q`B%P'X55_^U"/__
+M__^U_/[__^BV_O__@\0,_[4(____B\Y3_Q5@,D,`_]:#Q`B%P'X05_^U"/__
+M_U/HCO[__X/$#(N%"/___XOXB[7\_O__BY4$____B87L_O__D#O>=C<#\HFU
+M]/[__SOS<R6+C0#___]35O\58#)#`/^5`/___XN5!/___X/$"(7`?M,[WG<]
+MBX4(____B[T`____`_([\'<?4U:+S_\58#)#`/_7BY4$____@\0(A<"+A0C_
+M__]^VXN][/[__XFU]/[__XNU`/___^L&C9L`````BY4$____*_H[^W894U>+
+MSO\58#)#`/_6@\0(A<!_X8N5!/___XNU]/[__XF][/[__SO^<EZ)E>C^__^)
+MO>3^__\[]W0SB]Z+UXNUZ/[__RO?B@*-4@&*3!/_B$03_XA*_X/N`77KB[7T
+M_O__BYWP_O__BY4$____BX4(____.]\/A?K^__^+WHF=\/[__^GM_O__`_H[
+MWW,RC:0D`````"OZ._MV)8N-`/___U-7_Q5@,D,`_Y4`____BY4$____@\0(
+MA<!TV3O?<B^+M0#___\K^CN]_/[__W894U>+SO\58#)#`/_6BY4$____@\0(
+MA<!TW8NU]/[__XN5"/___XO'BYW\_O__B\HKSBO#.\%\.3O?<QB+A?C^__^)
+MG(4,____B7R%A$")A?C^__^+O03___\[\G-,B\Z+M0#___^)C?S^___I:OW_
+M_SOR<QB+A?C^__^)M(4,____B52%A$")A?C^__^+C?S^__^+M0#___\[SW,5
+MB]>+O03____I*_W__XNU`/___^L&B[T$____BX7X_O__@^@!B87X_O__>!:+
+MC(4,____BU2%A(F-_/[__^GV_/__6XM-_%\SS5[HY(W__XOE7</,S,S,S,R+
+M5"0$BTPD"/?"`P```'5`BP(Z`74RA,!T)CIA`74IA.1T'<'H$#I!`G4=A,!T
+M$3IA`W44@\$$@\($A.1UTHO_,\##ZP/,S,P;P(/(`<.+__?"`0```'08B@*#
+MP@$Z`77G@\$!A,!TV/?"`@```'2@9HL"@\(".@%USH3`=,(Z80%UQ83D=+F#
+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
+MB44,ZT&+=?164^C;_?__65F$P'0HZ"P@``#'`"(```#VPP%U!8/._^L:]L,"
+M=`>[````@.L0N____W_K"?;#`G0"]]Z+WH!]Y`!>#X0@_O__BT78@Z!0`P``
+M_>D1_O__B_]5B^R#[!R-30Q35^AYZO__A,!T(XM%%&H"7X7`="\[QWP%@_@D
+M?B;HN!\``,<`%@```.B,'@``,]N+51"%TG0%BTT,B0I?B\-;B^5=PU;_=0B-
+M3>3HM]/__XM%##/VB77XB47TZP.+10P/MS`#QVH(5HE%#.CA.```65F%P'7G
+M,]LX71@/E<-F@_XM=00+W^L&9H/^*W4.BWT,#[<W@\<"B7T,ZP.+?0R+313'
+M1?P9````:C!8:A!:A<ET"#O*#X7;`@``9COP#X)5`@``:CI89COP<PL/M\:#
+MZ##I/0(``+@0_P``9COP#X,8`@``N&`&``!F._`/@B8"``"#P`IF._!S#0^W
+MQBU@!@``Z0P"``"X\`8``&8[\`^"`P(``(/`"F8[\',-#[?&+?`&``#IZ0$`
+M`+AF"0``9COP#X+@`0``@\`*9COP<PT/M\8M9@D``.G&`0``N.8)``!F._`/
+M@KT!``"#P`IF._!S#0^WQBWF"0``Z:,!``"X9@H``&8[\`^"F@$``(/`"F8[
+M\',-#[?&+68*``#I@`$``+CF"@``9COP#X)W`0``@\`*9COP<PT/M\8MY@H`
+M`.E=`0``N&8+``!F._`/@E0!``"#P`IF._!S#0^WQBUF"P``Z3H!``"X9@P`
+M`&8[\`^",0$``(/`"F8[\',-#[?&+68,``#I%P$``+CF#```9COP#X(.`0``
+M@\`*9COP<PT/M\8MY@P``.GT````N&8-``!F._`/@NL```"#P`IF._!S#0^W
+MQBUF#0``Z=$```"X4`X``&8[\`^"R````(/`"F8[\',-#[?&+5`.``#IK@``
+M`+C0#@``9COP#X*E````@\`*9COP<PT/M\8MT`X``.F+````N"`/``!F._`/
+M@H(```"#P`IF._!S"@^WQBT@#P``ZVNX0!```&8[\')F@\`*9COP<PH/M\8M
+M0!```.M/N.`7``!F._!R2H/`"F8[\',*#[?&+>`7``#K,[@0&```9COP<BZ#
+MP`IF._!S)@^WQBT0&```ZQ>X&O\``&8[\',*#[?&+1#_``#K`X/(_X/X_W4P
+M:D%89CO&=PAJ6EAF._!V"8U&GV8[1?QW%(U&GV8[1?P/M\9W`X/H((/`R>L#
+M@\C_A<!T#87)=47'110*````ZSP/MP>#QP*)?0R#^'AT'H/X6'09A<EU!\=%
+M%`@```!0C4T,Z($#``"+?0SK$(7)=0.)510/MS>#QP*)?0R#R/\STO=U%(O(
+M:C!89COP#X)5`@``:CI89COP<PL/M\:#Z##I/0(``+@0_P``9COP#X,8`@``
+MN&`&``!F._`/@B8"``"#P`IF._!S#0^WQBU@!@``Z0P"``"X\`8``&8[\`^"
+M`P(``(/`"F8[\',-#[?&+?`&``#IZ0$``+AF"0``9COP#X+@`0``@\`*9COP
+M<PT/M\8M9@D``.G&`0``N.8)``!F._`/@KT!``"#P`IF._!S#0^WQBWF"0``
+MZ:,!``"X9@H``&8[\`^"F@$``(/`"F8[\',-#[?&+68*``#I@`$``+CF"@``
+M9COP#X)W`0``@\`*9COP<PT/M\8MY@H``.E=`0``N&8+``!F._`/@E0!``"#
+MP`IF._!S#0^WQBUF"P``Z3H!``"X9@P``&8[\`^",0$``(/`"F8[\',-#[?&
+M+68,``#I%P$``+CF#```9COP#X(.`0``@\`*9COP<PT/M\8MY@P``.GT````
+MN&8-``!F._`/@NL```"#P`IF._!S#0^WQBUF#0``Z=$```"X4`X``&8[\`^"
+MR````(/`"F8[\',-#[?&+5`.``#IK@```+C0#@``9COP#X*E````@\`*9COP
+M<PT/M\8MT`X``.F+````N"`/``!F._`/@H(```"#P`IF._!S"@^WQBT@#P``
+MZVNX0!```&8[\')F@\`*9COP<PH/M\8M0!```.M/N.`7``!F._!R2H/`"F8[
+M\',*#[?&+>`7``#K,[@0&```9COP<BZ#P`IF._!S)@^WQBT0&```ZQ>X&O\`
+M`&8[\',*#[?&+1#_``#K`X/(_X/X_W4P:D%89CO&=PAJ6EAF._!V"8U&GV8[
+M1?QW%(U&GV8[1?P/M\9W`X/H((/`R>L#@\C_@_C_=#$[111S+(MU^(/+"#OQ
+M<@MU!#O"=@6#RP3K"0^O=10#\(EU^`^W-X/'`HE]#.DY_?__5HU-#.B2````
+M]L,(=0J+1?0SVXE%#.M!BW7X5E/H]O;__UE9A,!T*.A'&0``QP`B````]L,!
+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
+MBTT<A<EU"XM%[(M`"(O(B44<,\`S_SE%(%=7_W44#Y7`_W40C03%`0```%!1
+M_Q44,4,`B47XA<`/A)D```"-'`"-2P@[V1O`A<%T2HU+"#O9&\`CP8U+"#T`
+M!```=QD[V1O`(\'H?E@``(OTA?9T8,<&S,P``.L9.]D;P"/!4.B<P___B_!9
+MA?9T1<<&W=T``(/&".L"B_>%]G0T4U=6Z#0Q__^#Q`S_=?A6_W44_W40:@'_
+M=1S_%10Q0P"%P'00_W484%;_=0S_%0PR0P"+^%;HXN#__UF`??0`=`J+1>B#
+MH%`#``#]B\>-9=Q?7EN+3?PSS>CI*?__B^5=PXO_58OLBT4(\/]`#(M(?(7)
+M=`/P_P&+B(0```"%R70#\/\!BXB`````A<ET`_#_`8N(C````(7)=`/P_P%6
+M:@:-2"A>@7GX&.A#`'0)BQ&%TG0#\/\"@WGT`'0*BU'\A=)T`_#_`H/!$(/N
+M`776_["<````Z$X!``!97EW#B_]5B^Q14U:+=0A7BX:(````A<!T;#U0[4,`
+M=&6+1GR%P'1>@S@`=5F+AH0```"%P'08@S@`=1-0Z"["____MH@```#HEOO_
+M_UE9BX:`````A<!T&(,X`'434.@,PO___[:(````Z'+\__]96?]V?.CWP?__
+M_[:(````Z.S!__]968N&C````(7`=$6#.`!U0(N&D````"W^````4.C*P?__
+MBX:4````OX`````KQU#HM\'__XN&F````"O'4.BIP?___[:,````Z)[!__^#
+MQ!#_MIP```#HEP```%EJ!EB-GJ````")1?R-?BB!?_@8Z$,`=!V+!X7`=!2#
+M.`!U#U#H9L'___\SZ%_!__]968M%_(-_]`!T%HM'_(7`=`R#.`!U!U#H0L'_
+M_UF+1?R#PP2#QQ"#Z`&)1?QUL%;H*L'__UE?7EN+Y5W#B_]5B^R+30B%R706
+M@?D@94,`=`XSP$#P#\&!L````$!=P[C___]_7<.+_U6+[%:+=0B%]G0@@?X@
+M94,`=!B+AK````"%P'4.5NCJ^___5NC.P/__65E>7<.+_U6+[(M-"(7)=!:!
+M^2!E0P!T#H/(__`/P8&P````2%W#N/___W]=PXO_58OLBT4(A<!T<_#_2`R+
+M2'R%R70#\/\)BXB$````A<ET`_#_"8N(@````(7)=`/P_PF+B(P```"%R70#
+M\/\)5FH&C4@H7H%Y^!CH0P!T"8L1A=)T`_#_"H-Y]`!T"HM1_(72=`/P_PJ#
+MP1"#[@%UUO^PG````.A:____65Y=PVH,:*"\0P#HQ2?__X-EY`#HP<K__XOX
+MBPV@[4,`A8]0`P``=`>+=TR%]G5#:@3H[][__UF#9?P`_S60$D8`C4=,4.@P
+M````65F+\(EUY,=%_/[____H#````(7V=1'H1,#__XMUY&H$Z`7?__]9PXO&
+MZ*$G___#B_]5B^Q6BW4,5X7V=#R+10B%P'0UBS@[_G4$B\;K+5:),.B8_/__
+M687_=.]7Z-;^__^#?PP`677B@?]8YT,`=-I7Z/7\__]9Z]$SP%]>7<.+_U6+
+M[(M-"#/`]L$0=`6X@````%-65[\``@``]L$(=`(+Q_;!!'0%#0`$``#VP0)T
+M!0T`"```]L$!=`4-`!```+X``0``]\$```@`=`(+QHO1NP`#```CTW0?.]9T
+M%CO7=`L[TW43#0!@``#K#`T`0```ZP4-`"```+H````#7R/*7EN!^0````%T
+M&('Y`````G0+.\IU$0T`@```7<.#R$!=PPU`@```7<.+_U6+[(/L#-U]_-OB
+M@ST8#48``0^,@P```&:+1?PSR8O15[\```@`J#]T*:@!=`-J$%JH!'0#@\H(
+MJ`AT`X/*!*@0=`.#R@*H('0#@\H!J`)T`@O7#ZY=^(M%^(/@P(E%]`^N5?2+
+M1?BH/W0IJ`%T`VH06:@$=`.#R0BH"'0#@\D$J!!T`X/)`J@@=`.#R0&H`G0"
+M"\\+RHO!7^L]9HM-_#/`]L$_=#+VP0%T`VH06/;!!'0#@\@(]L$(=`.#R`3V
+MP1!T`X/(`O;!('0#@\@!]L$"=`4-```(`(OE7<.+_U6+[(/L$)O9??AFBT7X
+M,\FH`70#:A!9J`1T`X/)"*@(=`.#R02H$'0#@\D"J"!T`X/)`:@"=`:!R0``
+M"`!35@^W\+L`#```B]97OP`"```CTW0F@?H`!```=!B!^@`(``!T##O3=1*!
+MR0`#``#K"@O/ZP:!R0`!``"!Y@`#``!T##OW=0Z!R0```0#K!H')```"`+H`
+M$```9H7"=`:!R0``!`"+?0R+]XM%"/?6(_$CQPOP._$/A*8```!6Z#\"``!9
+M9HE%_-EM_)O9??QFBT7\,_:H`70#:A!>J`1T`X/."*@(=`.#S@2H$'0#@\X"
+MJ"!T`X/.`:@"=`:!S@``"``/M]"+RB/+="J!^0`$``!T'('Y``@``'0,.\MU
+M%H'.``,``.L.@<X``@``ZP:!S@`!``"!X@`#``!T$('Z``(``'4.@<X```$`
+MZP:!S@```@"Z`!```&:%PG0&@<X```0`@ST8#48``0^,B0$``('G'P,(`P^N
+M7?"+1?`SR83`>0-J$%FI``(``'0#@\D(J0`$``!T`X/)!*D`"```=`.#R0*%
+MPG0#@\D!J0`!``!T!H')```(`(O0NP!@```CTW0J@?H`(```=!R!^@!```!T
+M##O3=1:!R0`#``#K#H')``(``.L&@<D``0``:D`E0(```%LKPW0;+<!_``!T
+M#"O#=1:!R0````'K#H')`````^L&@<D````"B\<C?0CWT"/!"\<[P0^$M0``
+M`%#H1/S__U")1?3H1R```%E9#ZY=](M%]#/)A,!Y`VH06:D``@``=`.#R0BI
+M``0``'0#@\D$J0`(``!T`X/)`JD`$```=`.#R0&I``$``'0&@<D```@`B]"_
+M`&```"/7="J!^@`@``!T'('Z`$```'0,.]=U%H')``,``.L.@<D``@``ZP:!
+MR0`!```E0(```"O#=!LMP'\``'0,*\-U%H')`````>L.@<D````#ZP:!R0``
+M``*+P0O.,\:I'P,(`'0&@<D```"`B\'K`HO&7UY;B^5=PXO_58OLBTT(,\#V
+MP1!T`4#VP0AT`X/(!/;!!'0#@\@(]L$"=`.#R!#VP0%T`X/((/?!```(`'0#
+M@\@"5HO1O@`#``!7OP`"```CUG0C@?H``0``=!8[UW0+.]9U$PT`#```ZPP-
+M``@``.L%#0`$``"+T8'B```#`'0,@?H```$`=08+Q^L""\9?7O?!```$`'0%
+M#0`0``!=PXO_58OLBU4(5H72=1;HGK[__VH67HDPZ'.]__^+QNF6````@WT,
+M`';DBTT0Q@(`A<E^!(O!ZP(SP$`Y10QW">ALOO__:B+KS(MU%(7V=+Y3C5H!
+MB\-7BWX(Q@(PA<E^%HH?A-MT`T?K`K,PB!A`287)?^V-6@'&``"%R7@2@#\U
+M?`WK`\8`,$B`.#ET]_X`@#HQ=07_1@3K'(O+C7$!B@%!A,!U^2O.C4$!4%-2
+MZ)1,__^#Q`Q?,\!;7EW#B_]6B_%6Z$,?``"+!H/@'UD\'W4&QD8(`.L+5NB3
+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
+ML`'K`C+`A,D/A>\```"$P`^%YP```&IR63O1<@B+T8F-K/C__XO*B8V@^/__
+M@_K_#X26````B_*-A3#^__^+E;#X__\K\HT$L(F%M/C__SO*<FT[\W,$BSCK
+M`C/_C4;_.\-S"XN%M/C__XM`_.L",\`CA8SX__\CO:CX__^+C9#X___3Z(N-
+MI/C__]/GBXV@^/__"\>)A(TP_O__28N%M/C__TZ#Z`2)C:#X__^)A;3X__^#
+M^?]T"(N=+/[__^N/BY6L^/__B[6P^/__A?9T#(O.C;TP_O__,\#SJX"]N_C_
+M_P"[S`$``'0+C4(!B84L_O__ZS.)E2S^___K*S/`N\P!``!0B86,^O__B84L
+M_O__C860^O__4(V%,/[__U-0Z(#A__^#Q!"#I93Z__\`,\EJ!%A!B860^O__
+MB8V,^O__B8U<_/__4(V%D/K__U"-A6#\__]34.A)X?__@\00Z5P$``"+A;3X
+M__\STD"+^(/@'VH@62O(B86P^/__,\#![P5`B;VT^/__B8V0^/__Z#`3__^+
+MC)TL_O__2(.EG/C__P`/O<F)A:CX___WT(F%C/C__W0#0>L",\EJ(%@KP8T4
+M.SF%L/C__XF5H/C__P^7P(/Z<XB%N_C__P^7P8/Z<W4(A,!T!+`!ZP(RP(3)
+M#X7L````A,`/A>0```!J<ED[T7((B]&)C:#X__^+PHF%K/C__X/Z_P^$DP``
+M`(ORC8TP_O__BY6T^/__*_*-#+&)C:3X__\[PG)G._-S!(LYZP(S_XU&_SO#
+M<P6+0?SK`C/`([VH^/__(X6,^/__BXVP^/__T^>+C9#X___3Z(N-I/C__POX
+MBX6L^/__@^D$B8VD^/__B;R%,/[__TA.B86L^/__@_C_=`B+G2S^___KE8N5
+MH/C__XN]M/C__VH"7H7_=`R+SS/`C;TP_O__\ZN`O;OX__\`N\P!``!T"XU"
+M`8F%+/[__^LSB94L_O__ZRLSP+O,`0``4(F%C/K__XF%+/[__XV%D/K__U"-
+MA3#^__]34.B<W___@\00@Z64^O__`#/`0(FUD/K__XF%C/K__XF%7/S__VH$
+MZ1G^__^!_@+\__\/A!D!``"#I9#Z__\`:@)9QX64^O__```0`(F-C/K__SO9
+M#X7W````,]*+A!60^O__.X05,/[__P^%X0```(/"!(/Z"'7D@Z6<^/__``^]
+MQW0%C5`!ZP(STFH@6"O"B_$[P8V%./[__XF%K/C__XOX#Y*%N_C__SOS<PJ+
+M%XF5L/C__^L'@Z6P^/__`(U&_SO#<P6+5_SK`C/2BX6P^/__@^\$P>`"P>H>
+M,]"+A:SX__].B1"#Z`2)A:SX__^#_O]T"(N=+/[__^NM,\`XA;OX__\/E<`#
+MP2N-M/C__XOYB84L_O__P>\%C860^O__B_>)C:CX___!Y@)6:@!0Z`T<__^+
+MC:CX__\SP$"#X1_3X(F$-9#Z__^-1P'I0`$``(N$G2S^__^#I9SX__\`#[W`
+M=`6-2`'K`C/):B!8*\&#^`$/DL"#^W.(A;OX__\/E\&#^W-U"(3`=`2P`>L"
+M,L"$R0^%FP```(3`#X63````:G)9.]ES`HO+@_G_=&F-O3#^__^+\8T\CXF]
+MK/C__SOS<PJ+%XF5L/C__^L'@Z6P^/__`(U&_SO#<P6+5_SK`C/2BX6P^/__
+M@^\$`\#!ZA\ST(N%K/C__TZ)$(/H!(F%K/C__X/^_W0(BYTL_O__ZZZ+M;3X
+M__^`O;OX__\`=`N-00&)A2S^___K,XF-+/[__^LK@Z6,^O__`(V%D/K__X.E
+M+/[__P!J`%"-A3#^__]HS`$``%#H1MW__X/$$#/_C860^O__1RO^B]_!ZP6+
+M\\'F`E9J`%#HQ!K__S/`@^<?0(O/T^")A#60^O__C4,!B86,^O__N\P!``")
+MA5S\___!X`)0C860^O__4(V%8/S__U-0Z.C<__^#Q!R+A93X__\STFH*68F-
+MC/C__X7`#XAC!```]_&)A9#X__^+RHF-G/C__X7`#X1Q`P``@_@F=@-J)E@/
+MM@R%]GQ#``^V-(7W?$,`B_F)A:3X___!YP)7C00QB86,^O__C860^O__:@!0
+MZ!@:__^+QL'@`E"+A:3X__\/MP2%]'Q#`(T$A?!S0P!0C860^O__`\=0Z$X;
+M__^+C8SZ__^#Q!B)C:#X__^#^0%W>HN]D/K__X7_=1,SP(F%O/C__XF%7/S_
+M_^F?`@``@_\!#X2N`@``@[U<_/__``^$H0(``(N%7/S__S/)B86H^/__,_:+
+MQ_>DM6#\__\#P8F$M6#\__^#T@!&B\H[M:CX__]UX.FL````B8R%8/S___^%
+M7/S__^E:`@``@[U<_/__`0^'O@```(N]8/S__XO!P>`"4(V%D/K__XF-7/S_
+M_U"-A6#\__]34.B.V___@\00A?]U&C/`B86,^O__B85<_/__4(V%D/K__^GU
+M`0``@_\!#X3]`0``@[U<_/__``^$\`$``(N%7/S__S/)B86H^/__,_:+Q_>D
+MM6#\__\#P8F$M6#\__^#T@!&B\H[M:CX__]UX(7)#X2X`0``BX5<_/__@_AS
+M#X(]____,\")A8SZ__^)A5S\__]0C860^O__Z>P!```[C5S\__^-O9#Z__\/
+MDL"$P`^%@P```(V]8/S__XV5D/K__XF5L/C__X3`=0:+C5S\__^)C:SX__^$
+MP'0,BX5<_/__B86@^/__,](S]HF5O/C__X7)#X01`0``C87`^/__*_B)O7SX
+M__^-!+>+A`7`^/__B86H^/__A<!U)3OR#X7>````(82UP/C__XU6`8F5O/C_
+M_^G)````C95@_/__ZX$SP#/_B\Z)A;3X__\YA:#X__\/A)0```"#^7-T5SO*
+M=1>#I(W`^/__`$`#QHF%O/C__XN%M/C__XN5L/C__XL$@O>EJ/C__P/'@](`
+M`82-P/C__XN%M/C__X/2`$!!B86T^/__B_J+E;SX__\[A:#X__]UI(7_=#2#
+M^7,/A+0````[RG41@Z2-P/C__P"-00&)A;SX__^+QS/_`82-P/C__XN5O/C_
+M_Q/_0>O(@_ES#X2`````B[U\^/__BXVL^/__1COQ#X7]_O__B\*)E5S\___!
+MX`)0C87`^/__4(V%8/S__U-0Z&K9__^#Q!"P`83`=&R+A9#X__\KA:3X__^)
+MA9#X__\/A97\__^+C9SX__^%R0^$$P4``(L\C8Q]0P"%_W5=,\")A9SV__^)
+MA5S\__]0ZSHSP(F%G/;__XF%7/S__U"-A:#V__]0C85@_/__4U#H_-C__X/$
+M$#+`ZY"#I9SV__\`@Z5<_/__`&H`C86@]O__4(V%8/S__^FA!```@_\!#X2B
+M!```BX5<_/__B86<^/__A<`/A(X$```S]C/)B\?WI(U@_/__`\:)A(U@_/__
+M@](`08OR.XV<^/__=>"%]@^$8@0``(N%7/S__X/X<P^#2____XFTA6#\____
+MA5S\___I000``/?8]_&)A:SX__^+RHF-J/C__X7`#X1,`P``@_@F=@-J)E@/
+MM@R%]GQ#``^V-(7W?$,`B_F)A;3X___!YP)7C00QB86,^O__C860^O__:@!0
+MZ+,5__^+QL'@`E"+A;3X__\/MP2%]'Q#`(T$A?!S0P!0C860^O__`\=0Z.D6
+M__^+C8SZ__^#Q!B)C:#X__^#^0$/AY,```"+O9#Z__^%_W4:,\")A9SV__^)
+MA2S^__]0C86@]O__Z7("``"#_P$/A'H"``"#O2S^__\`#X1M`@``BX4L_O__
+M,\F)A9SX__\S]HO']Z2U,/[__P/!B82U,/[__X/2`$:+RCNUG/C__W7@A<D/
+MA#4"``"+A2S^__^#^',/@\0"``")C(4P_O___X4L_O__Z10"``"#O2S^__\!
+M=WR+O3#^__^+P<'@`E"-A9#Z__^)C2S^__]0C84P_O__4U#H$-?__X/$$(7_
+M#X0]____@_\!#X31`0``@[TL_O__``^$Q`$``(N%+/[__S/)B86<^/__,_:+
+MQ_>DM3#^__\#P8F$M3#^__^#T@!&B\H[M9SX__]UX.E2____.XTL_O__C;V0
+M^O__#Y+`A,`/A8,```"-O3#^__^-E9#Z__^)E9#X__^$P'4&BXTL_O__B8VP
+M^/__A,!T#(N%+/[__XF%H/C__S/2,_:)E;SX__^%R0^$$0$``(V%P/C__ROX
+MB;U\^/__C02WBX0%P/C__XF%G/C__X7`=24[\@^%W@```"&$M<#X__^-5@&)
+ME;SX___IR0```(V5,/[__^N!,\`S_XO.B86D^/__.86@^/__#X24````@_ES
+M=%<[RG47@Z2-P/C__P!``\:)A;SX__^+A:3X__^+E9#X__^+!(+WI9SX__\#
+MQX/2``&$C<#X__^+A:3X__^#T@!`08F%I/C__XOZBY6\^/__.X6@^/__=:2%
+M_W0T@_ES#X0*`0``.\IU$8.DC<#X__\`C4$!B86\^/__B\<S_P&$C<#X__^+
+ME;SX__\3_T'KR(/Y<P^$U@```(N]?/C__XN-L/C__T8[\0^%_?[__XO"B94L
+M_O__P>`"4(V%P/C__U"-A3#^__]34.@NU?__@\00L`&$P`^$P0```(N%K/C_
+M_RN%M/C__XF%K/C__P^%NOS__XN-J/C__X7)#X33````BP2-C'U#`(F%G/C_
+M_X7`#X28````@_@!#X2U````BXTL_O__A<D/A*<````S_S/V]Z2U,/[__P/'
+MB82U,/[__XN%G/C__X/2`$:+^COQ=>"%_W1_BX4L_O__@_AS<TZ)O(4P_O__
+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
+M`',<B\_!^`9KR3"+!(68$D8`#[9$""B#X$!=P^C-HO__QP`)````Z*&A
+M__\SP%W#B_]5B^R+30@SP#@!=`P[10QT!T"`/`@`=?1=PXO_58OL@^P04U97
+M,_^[XP```(E]](E=^(T$.\=%_%4```"9*\*+R-'Y:D%?B4WPBS3-^(Y#`(M-
+M"&I:*\Y;#[<$,68[QW(-9CO#=PB#P"`/M]#K`HO0#[<&9CO'<@MF.\-W!H/`
+M(`^WP(/&`H-M_`%T"F:%TG0%9CO0=,*+3?"+??2+7?@/M\`/M](KT'0?A=)Y
+M"(U9_XE=^.L&C7D!B7WT._L/CF____^#R/_K!XL$S?R.0P!?7EN+Y5W#B_]5
+MB^R#?0@`=!W_=0CH,?___UF%P'@0/>0```!S"8L$Q=A]0P!=PS/`7<.+_U6+
+M[%&+512+30A6A=)U#87)=0TY30QU(3/`ZRZ%R709BT4,A<!T$H72=02($>OI
+MBW40A?9U&<8!`.AZH?__:A9>B3#H3Z#__XO&7HOE7<-3*_&+V%>+^8/Z_W41
+MB@0^B`='A,!T)8/K`77QZQZ*!#Z(!T>$P'0*@^L!=`6#Z@%U[(72BU44=0/&
+M!P!?A=M;=8>#^O]U#8M%#&I0QD0!_P!8ZZ?&`0#H#:'__VHBZY&+_U6+[%WI
+M1/___\S,S,Q5B^Q6,\!04%!04%!04(M5#(U)`(H""L!T"8/"`0^K!"3K\8MU
+M"(O_B@8*P'0,@\8!#Z,$)'/QC4;_@\0@7LG#B_]5B^QJ`/]U#/]U".@%````
+M@\0,7<.+_U6+[(/L$(-]"`!U%.B0H/__QP`6````Z&2?__\SP.MG5HMU#(7V
+M=1+H=*#__\<`%@```.A(G___ZP4Y=0AR!#/`ZT/_=1"-3?#H?U3__XM5^(-Z
+M"`!T'(U._TDY30AW"@^V`?9$$!D$=?"+QBO!@^`!*_!.@'W\`'0*BTWP@Z%0
+M`P``_8O&7HOE7</,S,S,S,S,S,S,S,SH*\G__S/)A,`/E,&+P<.+_U6+[(-]
+M"`!U%>CKG___QP`6````Z+^>__^#R/]=P_]U"&H`_S7L%D8`_Q6(,4,`7<-J
+M"&@(O4,`Z/("__^#/1@-1@`!?%N+10BH0'1*@SVP[4,``'1!@V7\``^N50CK
+M+HM%[(L`@3@%``#`=`N!.!T``,!T`S/`PS/`0,.+9>B#);#M0P``@V4(OP^N
+M50C'1?S^____ZPJ#X+^)10@/KE4(Z,\"___#B_]5B^Q1W7W\V^(/OT7\B^5=
+MPXO_58OL45&;V7W\BTT,BT4(]]%F(TW\(T4,9@O(9HE-^-EM^`^_1?R+Y5W#
+MB_]5B^R+30B#[`SVP0%T"MLM2)Y#`-M=_)OVP0AT$)O?X-LM2)Y#`-U=])N;
+MW^#VP1!T"MLM5)Y#`-U=])OVP01T"=GNV>C>\=W8F_;!('0&V>O=7?2;B^5=
+MPXO_58OL49O=??P/OT7\B^5=PXO_58OL5N@Z$P``BW4(B0;H<Q,``(E&!#/`
+M7EW#B_]5B^Q148-E^`"#9?P`5HMU"/\VZ/D3``#_=@3H<10``(U%^%#HN/__
+M_XL&@\0,.T7X=0R+1@0[1?QU!#/`ZP,SP$!>B^5=PXO_58OL45	?@`C47X
+M@V7\`%#H@O___UF%P'0%,\!`ZRF+30B+5?B+1?R)002-1?B)$8/*'U")5?CH
+M>/___UF%P'79Z,[:__\SP(OE7</,S,S,S,S,@STD%T8```^$@@```(/L"`^N
+M7"0$BT0D!"6`?P``/8`?``!U#]D\)&:+!"1F@^!_9H/X?XUD)`AU5>EI%```
+MD(,])!=&``!T,H/L"`^N7"0$BT0D!"6`?P``/8`?``!U#]D\)&:+!"1F@^!_
+M9H/X?XUD)`AU!>D5%```@^P,W10DZ"(;``#H#0```(/$#,.-5"0$Z,T:``!2
+MF]D\)'1,BT0D#&:!/"1_`G0&V2UHH$,`J0``\']T7JD```"`=4'9[-G)V?&#
+M/0P71@``#X7L&@``C0U@GD,`NAL```#IZ1H``*D```"`=1?KU*G__P\`=1V#
+M?"0(`'46)0```(!TQ=W8VRT@H$,`N`$```#K(N@X&@``ZQNI__\/`'7%@WPD
+M"`!UOMW8VRW*GT,`N`(```"#/0P71@``#X6`&@``C0U@GD,`NAL```#H>1L`
+M`%K#@STD%T8```^$OAT``(/L"`^N7"0$BT0D!"6`?P``/8`?``!U#]D\)&:+
+M!"1F@^!_9H/X?XUD)`@/A8T=``#K`/,/?D0D!&8/*!6`GD,`9@\HR&8/*/AF
+M#W/0-&8/?L!F#U0%H)Y#`&8/^M!F#]/*J0`(``!T3#W_"P``?'UF#_/*/3(,
+M``!_"V8/UDPD!-U$)`3#9@\N_WLDNNP#``"#[!")5"0,B]2#PA2)5"0(B50D
+M!(D4).CY&@``@\00W40D!,/S#WY$)`1F#_/*9@\HV&8/PL$&/?\#``!\)3TR
+M!```?[!F#U0%<)Y#`/(/6,AF#]9,)`3=1"0$P]T%L)Y#`,-F#\(=D)Y#``9F
+M#U0=<)Y#`&8/UEPD!-U$)`3#B_]5B^R#[#BA:.9#`#/%B47\BT4,B\B#X#_!
+M^093:]@P5HL$C9@21@!7BWT0B7W0B4W4BT08&(E%V(M%%`/'B47<_Q6$,4,`
+MBW4(BTW<B47(,\")!HE&!(E&"#OY#X,]`0``BB\SP&:)1>B+1=2(;>6+%(68
+M$D8`BDP:+?;!!'09BD0:+H#A^XA%](U%]&H"B&WUB$P:+5#K.NB;L/__#[8/
+MN@"```!FA11(="0[?=P/@\$```!J`HU%Z%=0Z""<__^#Q`R#^/\/A-(```!'
+MZQAJ`5>-1>A0Z`6<__^#Q`R#^/\/A+<````SR8U%[%%1:@50:@&-1>A'4%'_
+M=<C_%1@Q0P")1<R%P`^$D0```&H`C4W@45"-1>Q0_W78_Q5$,$,`A<!T<8M&
+M""M%T`/'B48$BT7,.47@<F:`?>4*=2QJ#5AJ`&:)1>2-1>!0:@&-1>10_W78
+M_Q5$,$,`A<!T.(-]X`%R.O]&"/]&!#M]W`^"[O[__^LIBU74B@>+#)68$D8`
+MB$09+HL$E9@21@"`3!@M!/]&!.L(_Q4`,$,`B0:+3?R+QE]>,\U;Z$[\_O^+
+MY5W#B_]5B^Q14U:+=0@SP%>+?0R)!HE&!(E&"(M%$`/'B47\._AS/P^W'U/H
+MAAL``%EF.\-U*(-&!`*#^PIU%6H-6U/H;AL``%EF.\-U$/]&!/]&"(/'`CM]
+M_'++ZPC_%0`P0P")!E^+QEY;B^5=PXO_58OL45:+=0A6Z#GV__]9A<!U!#+`
+MZUA7B_Z#YC_!_P9K]C"+!+V8$D8`]D0P*(!T'^A@G___BT!,@[BH`````'42
+MBP2]F!)&`(!\,"D`=00RP.L:C47\4(L$O9@21@#_=#`8_Q6`,4,`A<`/E<!?
+M7HOE7<.+_U6+[+@0%```Z([R_O^A:.9#`#/%B47\BTT,B\'!^`:#X3]KR3!3
+MBUT0BP2%F!)&`%:+=0A7BTP(&(M%%(,F``/#@V8$`(-F"`")C?#K__^)A?CK
+M___K98V]_.O__SO8<QZ*`T,\"G4'_T8(Q@<-1X@'C47[1SOXBX7XZ___<MZ-
+MA?SK__\K^(V%].O__VH`4%>-A?SK__]04?\51#!#`(7`=!^+A?3K__\!1@0[
+MQW(:BX7XZ___BXWPZ___.]ARE^L(_Q4`,$,`B0:+3?R+QE]>,\U;Z(SZ_O^+
+MY5W#B_]5B^RX$!0``.BO\?[_H6CF0P`SQ8E%_(M-#(O!P?@&@^$_:\DP4XM=
+M$(L$A9@21@!6BW4(5XM,"!B+110#PXF-\.O__S/2B87XZ___B1:)5@2)5@CK
+M=8V]_.O__SO8<RL/MP.#PP*#^`IU#8-&"`)J#5IFB1>#QP)FB0>-1?J#QP([
+M^(N%^.O__W+1C87\Z___*_B-A?3K__]J`%"#Y_Z-A?SK__]74%'_%40P0P"%
+MP'0?BX7TZ___`48$.\=R&HN%^.O__XN-\.O__SO8<H?K"/\5`#!#`(D&BTW\
+MB\9?7C/-6^B>^?[_B^5=PXO_58OLN!@4``#HP?#^_Z%HYD,`,\6)1?R+30R+
+MP<'X!H/A/VO),%-6BP2%F!)&`#/;BW4(5XM$"!B+31"+^8F%[.O__XM%%`/!
+MB1Z)7@2)A?3K__^)7@@[R`^#N@```(NU].O__XV%4/G__SO^<R$/MP^#QP*#
+M^0IU"6H-6F:)$(/``F:)"(/``HU-^#O!<MM34VA5#0``C8WXZ___48V-4/G_
+M_RO!T?A0B\%04VCI_0``_Q48,4,`BW4(B87HZ___A<!T3&H`C8WPZ___*\-1
+M4(V%^.O__P/#4/^U[.O___\51#!#`(7`="<#G?#K__^+A>CK__\[V'++B\<K
+M11")1@0[O?3K__]S#S/;Z4[_____%0`P0P")!HM-_(O&7UXSS5OH<?C^_XOE
+M7<-J%&@HO4,`Z!?Y_O^+=0B#_OYU&.C!E?__@R``Z,R5___'``D```#IM@``
+M`(7V#XB6````.S68%$8`#X.*````B][!^P:+QH/@/VO(,(E-X(L$G9@21@`/
+MMD0(*(/@`71I5N@\R?__68//_XE]Y(-E_`"+!)V8$D8`BTW@]D0(*`%U%>AE
+ME?__QP`)````Z$>5__^#(`#K%/]U$/]U#%;H1P```(/$#(OXB7WDQT7\_O__
+M_^@*````B\?K*8MU"(M]Y%;H_LC__UG#Z`N5__^#(`#H%I7__\<`"0```.CJ
+MD___@\C_Z'_X_O_#B_]5B^R#[#"A:.9#`#/%B47\BTT0B4WX5HMU"%>+?0R)
+M?="%R74',\#IS@$``(7_=1_HN)3__R$XZ,24___'`!8```#HF)/__X/(_^FK
+M`0``4XO&B][!^P:#X#]KT#")7>2+!)V8$D8`B474B57HBEP0*8#[`G0%@/L!
+M=2B+P??0J`%U'>AEE/__@R``Z'"4___'`!8```#H1)/__^E1`0``BT74]D00
+M*"!T#VH":@!J`%;HT@$``(/$$%;HY/K__UF$P'0YA-MT(O[+@/L!#X?N````
+M_W7XC47L5U#H5OK__X/$#(OPZ9P```#_=?B-1>Q75E#HB_C__X/$$.OFBT7D
+MBPR%F!)&`(M%Z/9$`2B`=$8/OL.#Z`!T+H/H`709@^@!#X6:````_W7XC47L
+M5U90Z,/[___KP?]U^(U%[%=64.BA_/__Z['_=?B-1>Q75E#HQ/K__^NABT0!
+M&#/)48E-[(E-\(E-](U-\%'_=?A74/\51#!#`(7`=0G_%0`P0P")1>R-=>R-
+M?=BEI:6+1=R%P'5CBT78A<!T)&H%7CO&=13H6I/__\<`"0```.@\D___B3#K
+M/%#H#Y/__UGK,XM]T(M%Y(M-Z(L$A9@21@#V1`@H0'0)@#\:=00SP.L;Z!V3
+M___'`!P```#H_Y+__X,@`(/(_^L#*T7@6XM-_%\SS5[H>O7^_XOE7<.+_U6+
+M[%%15HMU"%=6Z'''__^#S_]9.\=U$>C7DO__QP`)````B\>+U^M-_W44C4WX
+M4?]U$/]U#%#_%7PQ0P"%P'4/_Q4`,$,`4.AQDO__6>O3BT7XBU7\(\([QW3'
+MBT7XB\Z#YC_!^09K]C"+#(V8$D8`@&0Q*/U?7HOE7<.+_U6+[/]U%/]U$/]U
+M#/]U".AL____@\007<.+_U6+[%:+=0B%]G45Z$N2___'`!8```#H'Y'__X/(
+M_^M1BT8,5X//_\'H#:@!=#E6Z$?M__]6B_CHS>[__U;H&*3__U#H]`(``(/$
+M$(7`>06#S__K$X-^'`!T#?]V'.A]C?__@V8<`%E6Z'"G__]9B\=?7EW#:A!H
+M2+U#`.@1]?[_BW4(B77@,\"%]@^5P(7`=17HQ9'__\<`%@```.B9D/__@\C_
+MZSN+1@S!Z`Q6J`%T".@GI___6>OH@V7D`.C;I/__68-E_`!6Z#'___]9B_")
+M=>3'1?S^____Z`L```"+QNCQ]/[_PXMUY/]UX.B_I/__6<-J#&AHO4,`Z)'T
+M_O\S]HEUY(M%"/\PZ`+%__]9B77\BT4,BP"+.(O7P?H&B\>#X#]KR#"+!)68
+M$D8`]D0(*`%T(5?HK<7__UE0_Q5,,$,`A<!U'>C\D/__B_#_%0`P0P")!N@`
+MD?__QP`)````@\[_B77DQT7\_O___^@-````B\;H7?3^_\(,`(MUY(M-$/\Q
+MZ*K$__]9PXO_58OL@^P,BT4(C4W_B47XB47TC47X4/]U#(U%]%#H1/___XOE
+M7<.+_U6+[%%6BW4(@_[^=0WHDY#__\<`"0```.M+A?9X-SLUF!1&`',OB\:+
+MUH/@/\'Z!FO(,(L$E9@21@#V1`@H`704C44(B47\C47\4%;HA?___UE9ZQ/H
+M2Y#__\<`"0```.@?C___@\C_7HOE7</,S,S,S,S,S,S,S,S,S%6+[%=64XM-
+M$`O)=$V+=0B+?0RW0;-:MB"-20"*)@KDB@=T)PK`=".#Q@&#QP$ZYW(&.N-W
+M`@+F.L=R!CK#=P("QCK@=0N#Z0%UT3/).N!T";G_____<@+WV8O!6UY?R<-J
+M#&B(O4,`Z//R_O^#9>0`BT4(_S#H9</__UF#9?P`BT4,BP"+,(O6P?H&B\:#
+MX#]KR#"+!)68$D8`]D0(*`%T"U;HX@```%F+\.L.Z'B/___'``D```"#SO^)
+M=>3'1?S^____Z`T```"+QNC5\O[_P@P`BW7DBT40_S#H(L/__UG#B_]5B^R#
+M[`R+10B-3?^)1?B)1?2-1?A0_W4,C47T4.A:____B^5=PXO_58OL45:+=0B#
+M_OYU%>CXCO__@R``Z`./___'``D```#K4X7V>#<[-9@41@!S+XO&B]:#X#_!
+M^@9KR#"+!)68$D8`]D0(*`%T%(U%"(E%_(U%_%!6Z'W___]96>L;Z*B.__^#
+M(`#HLX[__\<`"0```.B'C?__@\C_7HOE7<.+_U6+[%97BWT(5^@=P___68/X
+M_W4$,_;K3J&8$D8`@_\!=0GV@(@````!=0N#_P)U'/9`6`%T%FH"Z.["__]J
+M`8OPZ.7"__]963O&=,A7Z-G"__]94/\5&#!#`(7`=;;_%0`P0P"+\%?H+L+_
+M_UF+SX/G/\'Y!FO7,(L,C9@21@#&1!$H`(7V=`Q6Z-J-__]9@\C_ZP(SP%]>
+M7<.+_U6+[(M5"#/)]\*`?@``=&>$TGD#:A!95[\``@``A==T`X/)"/?"``0`
+M`'0#@\D$]\(`"```=`.#R0+WP@`0``!T`X/)`5:^`&```(O"(\8[QEYU"(')
+M``,``.L:]\(`0```=`B!R0`!``#K"O?"`"```'0""\]?B\%=PXO_58OLBU4(
+M,\GWPCT,``!T7?;"`70#:A!9]L($=`.#R0CVP@AT`X/)!/;"$'0#@\D"]L(@
+M=`.#R0%6O@`,``"+PB/&.\9>=0B!R0`#``#K'O?"``@``'0(@<D``0``ZP[W
+MP@`$``!T!H')``(``(O!7<.+_U6+[(M5"#/)]\(?`P``=%OVPA!T`4'VP@AT
+M`X/)!/;"!'0#@\D(]L("=`.#R1#VP@%T`X/)(%:^``,``(O"(\8[QEYU"(')
+M``P``.L>]\(``@``=`B!R0`$``#K#O?"``$``'0&@<D`"```B\%=PXO_58OL
+MBU4(,\GWPA\#``!T:O;"$'0%N8````!7OP`"``#VP@AT`@O/]L($=`:!R0`$
+M``#VP@)T!H')``@``/;"`70&@<D`$```5KX``P``B\(CQCO&7G4(@<D`8```
+MZQJ%UW0(@<D`(```ZP[WP@`!``!T!H')`$```%^+P5W#B_]5B^R+50@SR?;"
+M'W1.5KX0```0B\(CQCO&=0%!O@@```B+PB/&.\9U`X/)!+X$```$B\(CQCO&
+M=0.#R0B^`@```HO"(\8[QEYU`X/)$+@!```!(]`[T'4#@\D@B\%=PXO_58OL
+MBU4(,\GVPA]T3E:^$``0`(O"(\8[QG4!0;X(``@`B\(CQCO&=0.#R02^!``$
+M`(O"(\8[QG4#@\D(O@(``@"+PB/&.\9>=0.#R1"X`0`!`"/0.]!U`X/)((O!
+M7<.+_U6+[%%1,\`A1?AFB47\V7W\@ST8#48``7P$#ZY=^`^W1?Q64.BO_?__
+M_W7XB_#H*/W__UD+QEDE'P,``%Z+Y5W#B_]5B^Q143/`,\EFB47\B4WXW7W\
+M@ST8#48``7P$#ZY=^`^W5?R+P?;"/70R]L(!=`6X$``0`/;"!'0%#0@`"`#V
+MP@AT!0T$``0`]L(0=`4-`@`"`/;"('0%#0$``0"+5?CVPCUT-O;"`70%N1``
+M`!#VP@1T!H')"```"/;""'0&@<D$```$]L(0=`:!R0(```+VPB!T!H')`0``
+M`0O!)1\`'Q^+Y5W#B_]5B^R#["!35E<S_XE]X(E]Y(E]Z(E][(E]\(E]](E]
+M^-EUX+L?`P``4^@R_?___W4(B_#WUB-UX.@C_?__60OP68EUX-EEX(,]&`U&
+M``%\)XE]_`^N7?Q3Z'3]____=0B+\/?6(W7\Z&7]__]9"_!9B77\#ZY5_%]>
+M6XOE7<.+_U6+[(/L(%-65S/_B7W@B7WDB7WHB7WLB7WPB7WTB7WXV77@NQ\`
+M'Q]3Z`3^____=0B+\/?6(W7DZ/7]__]9"_!9B77DV67@@ST8#48``7PGB7W\
+M#ZY=_%/H=/W___]U"(OP]]8C=?SH9?W__UD+\%F)=?P/KE7\7UY;B^5=P\S,
+MS,S,S,S,S,S,S&H*Z%47``"C)!=&`#/`P\Q5B^R#[`B#Y/#='"3S#WX$).@(
+M````R<-F#Q)$)`2Z`````&8/*.AF#Q3`9@]SU31F#\7-`&8/*`W`GD,`9@\H
+M%=">0P!F#R@=,)]#`&8/*"7@GD,`9@\H-?">0P!F#U3!9@]6PV8/6.!F#\7$
+M`"7P!P``9@\HH/"D0P!F#RBXX*!#`&8/5/!F#US&9@]9]&8/7/+R#UC^9@]9
+MQ&8/*.!F#UC&@>'_#P``@^D!@?G]!P``#X>^````@>G^`P```\KR#RKQ9@\4
+M]L'A"@/!N1````"Z`````(/X``]$T68/*`V`GT,`9@\HV&8/*!60GT,`9@]9
+MR&8/6=MF#UC*9@\H%:"?0P#R#UG;9@\H+0"?0P!F#UGU9@\HJA"?0P!F#U3E
+M9@]8_F8/6/QF#UG(\@]9V&8/6,IF#R@5L)]#`&8/6=!F#RCW9@\5]F8/6<N#
+M[!!F#RC!9@]8RF8/%<#R#UC!\@]8QO(/6,=F#Q-$)`3=1"0$@\00PV8/$D0D
+M!&8/*`U`GT,`\@_"R`!F#\7!`(/X`'=(@_G_=%Z!^?X'``!W;&8/$D0D!&8/
+M*`W`GD,`9@\H%3"?0P!F#U3!9@]6PO(/PM``9@_%P@"#^`!T!]T%:)]#`,.Z
+MZ0,``.M/9@\2%3"?0P#R#U[09@\2#6"?0P"Z"````.LT9@\2#5"?0P#R#UG!
+MNLS____I%_[__X/!`8'A_P<``('Y_P<``',Z9@]7R?(/7LFZ"0```(/L'&8/
+M$TPD$(E4)`R+U(/"$(E4)`B#PA")5"0$B10DZ"0&``#=1"00@\0<PV8/$E0D
+M!&8/$D0D!&8/?M!F#W/2(&8/?M&!X?__#P`+P8/X`'2@NND#``#KIHVD)```
+M``#K`\S,S,:%</____X*[74[V<G9\>L-QH5P_____C+MV>K>R>@K`0``V>C>
+MP?:%8?___P%T!-GHWO'VPD!U`MG]"NUT`MG@Z;("``#H1@$```O`=!0R[8/X
+M`G0"]M79R=GAZZ_IM0(``.E+`P``W=C=V-LMP)]#`,:%</___P+#V>W9R=GD
+MF]V]8/___YOVA6'___]!==+9\</&A7#___\"W=C;+<J?0P##"LEU4\/9[.L"
+MV>W9R0K)=:[9\</I6P(``.C/````W=C=V`K)=0[9[H/X`74&"NUT`MG@P\:%
+M</___P+;+<"?0P"#^`%U[0KM=.G9X.OEW=CI#0(``-W8Z;4"``!8V>2;W;U@
+M____F_:%8?___P%U#]W8VRW`GT,`"NUT`MG@P\:%</___P3IUP$``-W8W=C;
+M+<"?0P#&A7#___\#PPK)=:_=V-LMP)]#`,/9P-GAVRW>GT,`WMF;W;U@____
+MF_:%8?___T%UE=G`V?S9Y)O=O6#___^;BI5A____V<G8X=GDF]V]8/___]GA
+MV?##V<#9_-C9F]_@GG4:V<#<#?*?0P#9P-G\WMF;W^">=`VX`0```,.X````
+M`.OXN`(```#K\5:#['2+]%:#[`C='"2#[`C='"2;W78(Z(('``"#Q!3=9@C=
+M!H/$=%Z%P'0%Z=`!``##S,S,S,S,S,S,@'H.!7419HN=7/___X#/`H#G_K,_
+MZP1FNS\39HF=7O___]FM7O___[M.H$,`V>6)E6S___^;W;U@____QH5P____
+M`)N*C6'____0X=#YT,&*P20/UP^^P('A!`0``(O:`]B#PQ#_(X!Z#@5U$6:+
+MG5S___^`SP*`Y_ZS/^L$9KL_$V:)G5[____9K5[___^[3J!#`-GEB95L____
+MF]V]8/___\:%</___P#9R8J-8?___]GEF]V]8/___]G)BJUA____T.70_=#%
+MBL4D#]>*X-#AT/G0P8K!)`_7T.30Y`K$#[[`@>$$!```B]H#V(/#$/\CZ,X`
+M``#9R=W8P^C$````Z_;=V-W8V>[#W=C=V-GNA.UT`MG@P]W8W=C9Z,/;O6+_
+M___;K6+____VA6G___]`=`C&A7#___\`P\:%</___P#<!3Z@0P##V<G;O6+_
+M___;K6+____VA6G___]`=`G&A7#___\`ZP?&A7#___\`WL'#V[UB____VZUB
+M____]H5I____0'0@V<G;O6+____;K6+____VA6G___]`=`G&A7#___\`ZP?&
+MA7#___\!WL'#W=C=V-LM(*!#`("]</___P!_!\:%</___P$*R</=V-W8VRTT
+MH$,`"NUT`MG@"LET"-T%1J!#`-[)PPK)=`+9X,/,S,S,S,S,S,S,S,S9P-G\
+MW.'9R=G@V?#9Z-[!V?W=V<.+5"0$@>(``P``@\I_9HE4)`;9;"0&PZD```@`
+M=`:X`````,/<!6"@0P"X`````,.+0@0E``#P?ST``/!_=`/=`L.+0@2#[`H-
+M``#_?XE$)`:+0@2+"@^DR`O!X0N)1"0$B0PDVRPD@\0*J0````"+0@3#BT0D
+M""4``/!_/0``\']T`<.+1"0(PV:!/"1_`G0#V2PD6L-FBP0D9CU_`G0>9H/@
+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
+M`!33`P`PTP,`1-,#``P!^TP,`D-,#`*K3`P#`TP,`VM,#`/#3`P`$U`,`
+M$-0#`"#4`P!(U`,`5-0#`&+4`P!PU`,`>M0#`(S4`P"HU`,`OM0#`-34`P#>
+MU`,`ZM0#`/;4`P`$U0,`%M4#`";5`P`ZU0,`2M4#`%S5`P!HU0,`>M4#`)35
+M`P`2U@,``````*#2`P".T@,`<-(#`%#2`P`RT@,`'M(#``S2`P``T@,`]-$#
+M``````!0,D(``````'#M00``$$``$!!``"`00`!`$$``4!!``&`00`"P$$``
+MT!!``'`00`"0$$````````````"P[$$`8.U!`'!:0@"@GD(`<.Q"`!`#0P``
+M``````````"&0@"P&4,`<)]"```````````````````0````$!`````@$```
+M`$`0````4!````!@$````'`0````D!````"P$````-`0````T!8```#`'0``
+M`+`_````D&`````080```$"8````<)@```!0FP```)"=````T)X```#@GP``
+M`$"J````T-$```!PT@```*#2````$-,````PTP```````D-,```"@#`$`
+M`-`<`0``\!P!```@'0$``+`>`0``D!\!``#0<@$``/"&`0``T(L!``#@BP$`
+M`/"+`0```(P!```0C`$``"",`0``P(P!``#0C`$``.",`0``,(T!``!`C0$`
+M`-"-`0``X(T!``#PC0$``!".`0``((X!```PC@$``$".`0``<(X!``"`C@$`
+M`!"/`0``((\!``#@D@$```"4`0``\)0!````E0$``!"5`0``()4!```PE0$`
+M``"6`0``,)8!``!`E@$``%"6`0``8)8!``!PE@$``&"8`0``<)@!``#`F0$`
+M`-"9`0``X)D!``#PF0$```":`0``$)H!```@F@$``+"=`0``\)T!``#`I@$`
+M`""L`0``8*\!``!PL0$``'"[`0``4,\!``#0YP$``+#L`0``8.T!``!P[0$`
+M`/#N`0``$.\!``!0[P$``!#S`0```/0!``"@]`$``%`A`@`!0","``"@)`(`
+M`$`E`@``@"4"``!0,@(``/`R`@``4#<"``!P6@(``"!^`@``0'X"``"@@@(`
+M`,""`@``X(("``#P@@(```"#`@``0(,"``!0@P(``&"$`@```(8"``"@D0(`
+M`,"3`@``\),"``"@G@(``'"?`@``<*$"``#0H0(``,"F`@``(*<"```@JP(`
+M`-"K`@``$*P"``"@M0(``%"Y`@``H+H"``#`N@(``'#L`@``$`,#``"P&0,`
+M`&`C`P``<",#``"`(P,``)`C`P``H",#``"P(P,``````````````````"H`
+M````````T!9``%";0`!PF$``D)U``-">0`#@GT``P!U```````!-`&$`>`!I
+M`&T`=0!M`"``80!L`&P`;P!W`&4`9``@`&$`<@!R`&$`>0`@`',`:0!Z`&4`
+M(``H`"4`=0`I`"``:0!S`"``90!X`&,`90!E`&0`90!D````0P!-`%0```!2
+M`%(``````&@`)0!U````:`!C`"4`=0``````>``E`'4```!X`&,`)0!U````
+M```````````````````[`"4`=0```````````0(#!`4&!P@)"@L,#0X/#@H$
+M"`D/#08!#``""P<%`PL(#``%`@\-"@X#!@<!"00'"0,!#0P+#@(&!0H$``\(
+M"0`%!P($"@\.`0L,!@@##0(,!@H`"P@#!`T'!0\.`0D,!0$/#@T$"@`'!@,)
+M`@@+#0L'#@P!`PD%``\$"`8""@8/#@D+`P`(#`(-!P$$"@4*`@@$!P8!!0\+
+M"0X##`T`9^8):H6N9[MR\VX\.O5/I7]2#E&,:`6;J]F#'QG-X%M_4@Y1C&@%
+MFZO9@Q\9S>!;9^8):H6N9[MR\VX\.O5/I2X`7```````4P!E`%,`90!C`'4`
+M<@!I`'0`>0!0`'(`:0!V`&D`;`!E`&<`90```%,`90!2`&4`<P!T`&\`<@!E
+M`%``<@!I`'8`:0!L`&4`9P!E``````!3`&4`0P!R`&4`80!T`&4`4P!Y`&T`
+M8@!O`&P`:0!C`$P`:0!N`&L`4`!R`&D`=@!I`&P`90!G`&4```!<`#\`/P!<
+M``````!5`$X`0P!<``````!!`$,`3````%,`5`!-````<@!T`&T`<``E`&0`
+M`````$"80`!0FT``<)A``)"=0`#0GD``X)]``,`=0``N````+@`N```````J
+M`#\``````"X`<@!A`'(``````"X`90!X`&4``````"X`<P!F`'@``````#``
+M,```````/P`J`#P`/@!\`"(``````#\`*@``````)0!C`#H`7```````7`!<
+M`#\`7```````50!.`$,````J;65S<V%G97,J*BH`````*@!M`&4`<P!S`&$`
+M9P!E`',`*@`J`"H``````'(A&@<`````<SH``%,`5`!2`$D`3@!'`%,```!$
+M`$D`00!,`$\`1P``````30!%`$X`50``````1`!)`%(`10!#`%0`20!/`$X`
+M``!2`%0`3````"0E<SH`````0"5S.@`````@``D`+````',````D)7,`0"5S
+M`"0`)0!S`#H`)0!S```````D`"4`<P`Z``````!#`$$`4`!4`$D`3P!.````
+M4P!)`%H`10``````0P!R`'D`<`!T`#,`,@`N`&0`;`!L````0W)Y<'10<F]T
+M96-T365M;W)Y``!#<GEP=%5N<')O=&5C=$UE;6]R>0````!#`'(`>0!P`'0`
+M4`!R`&\`=`!E`&,`=`!-`&4`;0!O`'(`>0`@`&8`80!I`&P`90!D````0P!R
+M`'D`<`!T`%4`;@!P`'(`;P!T`&4`8P!T`$T`90!M`&\`<@!Y`"``9@!A`&D`
+M;`!E`&0`````````F"^*0I%$-W'/^\"UI=NUZ5O"5CGQ$?%9I((_DM5>'*N8
+MJ@?8`5N#$KZ%,23#?0Q5=%V^<OZQWH"G!MR;=/&;P<%IF^2&1[[OQIW!#\RA
+M#"1O+.DMJH1T2MRIL%S:B/EV4E$^F&W&,:C()P.PQW]9O_,+X,9'D:?546/*
+M!F<I*12%"K<G."$;+OQM+$T3#3A35',*9;L*:G8NR<*!A2QRDJ'HOZ)+9AJH
+M<(M+PJ-1;,<9Z)+1)`:9UH4U#O1PH&H0%L&D&0AL-QY,=T@GM;RP-+,,'#E*
+MJMA.3\J<6_-O+FCN@H]T;V.E>!1XR(0(`L>,^O^^D.ML4*3WH_F^\GAQQ@``
+M``!X;&ES='!O<P````!K`&4`<@!N`&4`;``S`#(``````%-E=$1L;$1I<F5C
+M=&]R>5<`````4V5T1&5F875L=$1L;$1I<F5C=&]R:65S`````'8`90!R`',`
+M:0!O`&X`+@!D`&P`;````$0`6`!'`$D`1`!E`&(`=0!G`"X`9`!L`&P```!S
+M`&8`8P!?`&\`<P`N`&0`;`!L``````!3`%,`4`!)`$,`3`!)`"X`1`!,`$P`
+M``!R`',`80!E`&X`:``N`&0`;`!L``````!5`%@`5`!H`&4`;0!E`"X`9`!L
+M`&P```!D`'<`;0!A`'``:0`N`&0`;`!L``````!C`'(`>0!P`'0`8@!A`',`
+M90`N`&0`;`!L````;`!P`&L`+@!D`&P`;````'4`<P!P`#$`,``N`&0`;`!L
+M````8P!L`&(`8P!A`'0`<0`N`&0`;`!L````8P!O`&T`<@!E`',`+@!D`&P`
+M;```````=P!S`#(`7P`S`#(`+@!D`&P`;```````=P!S`#(`:`!E`&P`<``N
+M`&0`;`!L````<`!S`&$`<`!I`"X`9`!L`&P```!I`&4`9@!R`&$`;0!E`"X`
+M9`!L`&P```!N`'0`<P!H`'(`=0!I`"X`9`!L`&P```!A`'0`;``N`&0`;`!L
+M````<P!E`'0`=0!P`&$`<`!I`"X`9`!L`&P``````&$`<`!P`&@`90!L`'``
+M+@!D`&P`;````'4`<P!E`'(`90!N`'8`+@!D`&P`;````&X`90!T`&$`<`!I
+M`#,`,@`N`&0`;`!L``````!S`&@`9`!O`&,`=@!W`"X`9`!L`&P```!C`'(`
+M>0!P`'0`,P`R`"X`9`!L`&P```!M`',`80!S`&X`,0`N`&0`;`!L``````!C
+M`'(`>0!P`'0`=0!I`"X`9`!L`&P```!W`&D`;@!T`'(`=0!S`'0`+@!D`&P`
+M;```````<P!H`&4`;`!L`#,`,@`N`&0`;`!L````<P!E`&,`=0!R`#,`,@`N
+M`&0`;`!L````8P!A`&(`:0!N`&4`=``N`&0`;`!L````;P!L`&4`80!C`&,`
+M<@!C`"X`9`!L`&P``````&X`=`!M`&$`<@!T`&$`+@!D`&P`;````'``<@!O
+M`&8`80!P`&D`+@!D`&P`;````%<`:0!N`&0`;P!W`',`0P!O`&0`90!C`',`
+M+@!D`&P`;````',`<@!V`&,`;`!I`"X`9`!L`&P``````&,`<P!C`&$`<`!I
+M`"X`9`!L`&P``````',`;`!C`"X`9`!L`&P```!I`&T`80!G`&4`<@!E`',`
+M+@!D`&P`;```````9`!N`',`80!P`&D`+@!$`$P`3```````:0!P`&@`;`!P
+M`&$`<`!I`"X`1`!,`$P``````%<`20!.`$X`4P!)`"X`1`!,`$P``````&X`
+M90!T`'4`=`!I`&P`<P`N`&0`;`!L``````!M`'``<@`N`&0`;`!L````9`!E
+M`'8`<@!T`&P`+@!D`&P`;```````<`!R`&\`<`!S`'D`<P`N`&0`;`!L````
+M;0!L`&$`;@!G`"X`9`!L`&P```!S`&$`;0!C`&P`:0`N`&0`;`!L``````!S
+M`&$`;0!L`&D`8@`N`&0`;`!L``````!W`&L`<P!C`&P`:0`N`&0`;`!L````
+M``!D`&8`<P!C`&P`:0`N`&0`;`!L``````!B`'(`;P!W`&,`;`!I`"X`9`!L
+M`&P```!R`&$`<P!A`&0`:`!L`'``+@!D`&P`;```````9`!H`&,`<`!C`',`
+M=@!C`#8`+@!D`&P`;````&0`:`!C`'``8P!S`'8`8P`N`&0`;`!L``````!8
+M`&T`;`!,`&D`=`!E`"X`9`!L`&P```!L`&D`;@!K`&D`;@!F`&\`+@!D`&P`
+M;```````8P!R`'D`<`!T`',`<``N`&0`;`!L````4@!P`&,`4@!T`%(`90!M
+M`&\`=`!E`"X`9`!L`&P```!A`&,`;`!U`&D`+@!D`&P`;````&0`<P!R`&\`
+M;`!E`"X`9`!L`&P``````'``90!E`'(`9`!I`',`=``N`&0`;`!L``````!U
+M`'@`=`!H`&4`;0!E`"X`9`!L`&P```!0`&P`90!A`',`90`@`'(`90!M`&\`
+M=@!E`"``)0!S`"``9@!R`&\`;0`@`"4`<P`@`&8`;P!L`&0`90!R`"X`(`!)
+M`'0`(`!I`',`(`!U`&X`<P!E`&,`=0!R`&4`(`!T`&\`(`!R`'4`;@`@`"4`
+M<P`@`'4`;@!T`&D`;``@`&D`=``@`&D`<P`@`&0`;P!N`&4`+@```$,`<@!E
+M`&$`=`!E`%0`:`!R`&4`80!D`"``9@!A`&D`;`!E`&0````*`%<`80!I`'0`
+M1@!O`'(`30!U`&P`=`!I`'``;`!E`$\`8@!J`&4`8P!T`',`(`!E`'(`<@!O
+M`'(`(``E`&0`+``@`$<`90!T`$P`80!S`'0`10!R`'(`;P!R`"``)0!D````
+M``````H`5`!H`'(`90!A`&0`(`!P`&\`;P!L`"``:0!N`&D`=`!I`&$`;`!I
+M`'H`80!T`&D`;P!N`"``9@!A`&D`;`!E`&0`+@```"4`;`!S````/@```"4`
+M<P`Z`"``)0!S```````-``H``````%5N:VYO=VX@97AC97!T:6]N````8F%D
+M(&%L;&]C871I;VX``-T\/Q^_6?-(H62\6C)F46`9#@D'!04$!`0#`P,"`@("
+M`)1!`-"+00``ED$`X(Q!`#".00#0C4$`$)I!`."200#@C$$`\)1!`."+00`P
+MED$`0(Y!`,",00`0FD$`$)I!`!":00"`CD$`<)A!`,",00`0FD$`X(Q!`.",
+M00#@DD$``)5!`/"+00!`ED$`<(Y!`-",00#`C$$`P(Q!`,",00!PF$$`<)A!
+M`#".00#`C$$`X))!`,",00#@F4$`()5!`!",00!@ED$`P(Q!`#".00`0CD$`
+M$(]!`!"500``C$$`4)9!`,"900#PC4$`T)E!`!":00`0FD$`,(U!`."200#@
+MDD$`8)A!`/"900`@CD$`<)A!`."-00``FD$`0(U!`#"500`@C$$`<)9!`,",
+M00`PCD$`$(Y!`""/00!2`&$`<@!(`'0`;0!L`$,`;`!A`',`<P!.`&$`;0!E
+M``````!3`&@`90!L`&P`+@!%`'@`<`!L`&\`<@!E`'(``````&$`8@!O`'4`
+M=``Z`&(`;`!A`&X`:P```#P`:`!T`&T`;``^```````\`&@`90!A`&0`/@`\
+M`&T`90!T`&$`(`!H`'0`=`!P`"T`90!Q`'4`:0!V`#T`(@!C`&\`;@!T`&4`
+M;@!T`"T`=`!Y`'``90`B`"``8P!O`&X`=`!E`&X`=``]`"(`=`!E`'@`=``O
+M`&@`=`!M`&P`.P`@`&,`:`!A`'(`<P!E`'0`/0``````=0!T`&8`+0`X`"(`
+M/@`\`"\`:`!E`&$`9``^```````\`"\`:`!T`&T`;``^````/``O`'``/@``
+M````/`!B`'(`/@``````/`!S`'0`>0!L`&4`/@```#P`+P!S`'0`>0!L`&4`
+M/@```````````#P`<P!T`'D`;`!E`#X`8@!O`&0`>0![`&8`;P!N`'0`+0!F
+M`&$`;0!I`&P`>0`Z`"(`00!R`&D`80!L`"(`.P!F`&\`;@!T`"T`<P!I`'H`
+M90`Z`#$`,@`[`'T`/``O`',`=`!Y`&P`90`^```````F`&X`8@!S`'``.P``
+M````L)U!`/"=00"PG4$`\)U!`$4`1`!)`%0``````*G(7NR5PQ1#G'=4UZDU
+M_W!0`$X`1P```'(`:0!C`&@`90!D`#(`,``N`&0`;`!L``````!S.DE$4U]"
+M4D]74T54251,10```',Z24137T--1$585%)!0U1)3D<`<SI)1%-?4TM)4%!)
+M3D<``',Z24137U5.15A014]&``!S.DE$4U]&24Q%2$5!1$520E)/2T5.``!S
+M.DE$4U](14%$15)"4D]+14X``',Z24137TU!24Y(14%$15)"4D]+14X``',Z
+M24137T--5$A%041%4D)23TM%3@```',Z24137T--5$)23TM%3@!S.DE$4U]/
+M551/1DU%34]264524D]2``!S.DE$4U]53DM.3U=.34542$]$`',Z24137T-!
+M3DY/5$]014X`````<SI)1%-?0T%.3D]40U)%051%``!S.DE$4U]#04Y.3U1-
+M2T1)4@```',Z24137T5.0U)#4D-&04E,140`<SI)1%-?15A44D-20T9!24Q%
+M1`!S.DE$4U]004-+141$051!0U)#1D%)3$5$````<SI)1%-?5U))5$5%4E)/
+M4@````!S.DE$4U]214%$15)23U(`<SI)1%-?0TQ/4T5%4E)/4@````!S.DE$
+M4U]#04Y.3U1&24Y$5D],`',Z24137T)!1$%20TA)5D4`````<SI)1%-?15A4
+M4D%#5$E.1P````!S.DE$4U]!4TM.15A45D],5$E43$4```!S.DE$4U]!4D-(
+M14%$15)"4D]+14X```!S.DE$4U]$3TY%``!S.DE$4U]%4E)/4@!S.DE$4U]%
+M4E)/4E,`````<SI)1%-?0EE415,`<SI)1%-?34]$249)141/3@````!S.DE$
+M4U]"041&3TQ$15(`<SI)1%-?0U)%051%15)23U)3``!S.DE$4U]#4D-%4E)/
+M4E,`<SI)1%-?04Q,1DE,15,``',Z24137U1)5$Q%,0````!S.DE$4U]4251,
+M13%!````<SI)1%-?5$E43$4R`````',Z24137U1)5$Q%,P````!S.DE$4U]4
+M251,130`````<SI)1%-?5$E43$4U`````',Z24137U1)5$Q%-@````!S.DE$
+M4U]!4D-"4D]+14X`<SI)1%-?15A44D9)3$535$\```!S.DE$4U]%6%121DE,
+M15-43U1%35````!S.DE$4U]%6%1204-40E545$].`',Z24137T585%)!0U10
+M4D]'4D534P```',Z24137TU!6%!!5$A,24U)5```<SI)1%-?54Y+14Y#3454
+M2$]$``!S.DE$4U]74D].1U!!4U-73U)$`',Z24137U=23TY'1DE,15!!4U-7
+M3U)$`',Z24137T-/4%E%4E)/4@!S.DE$4U]#04Y.3U1#4D5!5$5,3DM3``!S
+M.DE$4U]#04Y.3U1#4D5!5$5,3DM(``!S.DE$4U]%4E),3DM405)'150``',Z
+M24137TY%141!1$U)3@!S.DE$4U]0055310!S.DE$4U]#3TY424Y510``<SI)
+M1%-?4T5#5T%23DE.1P````!S.DE$4U]314-$14Q$3$P`)%-405)41$Q'.E-)
+M6D4``"135$%25$1,1SI#05!424].````)%-405)41$Q'.DE$0U]$15-4141)
+M5%1)5$Q%`"135$%25$1,1SI)1$-?0TA!3D=%1$E2`"135$%25$1,1SI)1$-?
+M4%)/1U)%4U-"05)4251,10``)%-405)41$Q'.DE$3TL``"135$%25$1,1SI)
+M1$-!3D-%3```)%)%4$Q!0T5&24Q%1$Q'.E-)6D4`````)%)%4$Q!0T5&24Q%
+M1$Q'.D-!4%1)3TX`)%)%4$Q!0T5&24Q%1$Q'.DE$0U]/5U)&24Q%15A)4U13
+M````)%)%4$Q!0T5&24Q%1$Q'.DE$0U]/5U)!4TM215!,04-%````)%)%4$Q!
+M0T5&24Q%1$Q'.DE$0U]/5U)154535$E/3@`D4D503$%#149)3$5$3$<Z241#
+M7T]74EE%4P``)%)%4$Q!0T5&24Q%1$Q'.DE$0U]/5U)!3$P``"1215!,04-%
+M1DE,141,1SI)1$-?3U=24D5.04U%````)%)%4$Q!0T5&24Q%1$Q'.DE$0U]/
+M5U).3P```"1215!,04-%1DE,141,1SI)1$-?3U=23D]!3$P`````)%)%4$Q!
+M0T5&24Q%1$Q'.DE$0U]/5U)#04Y#14P````D4D5.04U%1$Q'.E-)6D4`)%)%
+M3D%-141,1SI#05!424].```D4D5.04U%1$Q'.DE$3TL`)%)%3D%-141,1SI)
+M1$-!3D-%3``D4D5.04U%1$Q'.DE$0U]214Y!345&4D]-````)%)%3D%-141,
+M1SI)1$-?4D5.04U%5$\`)$=%5%!!4U-73U)$,3I325I%```D1T544$%34U=/
+M4D0Q.D-!4%1)3TX````D1T544$%34U=/4D0Q.DE$0U]005-35T]21$5.5$52
+M`"1'151005-35T]21#$Z241/2P``)$=%5%!!4U-73U)$,3I)1$-!3D-%3```
+M)$Q)0T5.4T5$3$<Z4TE:10`````D3$E#14Y3141,1SI#05!424].`"1,24-%
+M3E-%1$Q'.DE$3TL`````)$Q)0T5.4T5$3$<Z241#04Y#14P`````)$%32TY%
+M6%163TPZ4TE:10`````D05-+3D585%9/3#I#05!424].`"1!4TM.15A45D],
+M.DE$0U].15A45D],24Y&3S$`````)$%32TY%6%163TPZ241#7TY%6%163TQ&
+M24Y$`"1!4TM.15A45D],.DE$0U].15A45D],24Y&3S(`````)$%32TY%6%16
+M3TPZ241/2P`````D05-+3D585%9/3#I)1$-!3D-%3`````!2`&$`<@!3`$8`
+M6```````4P!4`$$`5`!)`$,``````%(`10!0`$P`00!#`$4`1@!)`$P`10!$
+M`$P`1P``````4@!%`$X`00!-`$4`1`!,`$<````E`',`(``E`',`(``E`',`
+M`````"4`<P`@`"4`<P```$<`10!4`%``00!3`%,`5P!/`%(`1``Q```````E
+M`',``````%@```!!`%,`2P!.`$4`6`!4`%8`3P!,``````!W`&D`;@!R`&$`
+M<@!S`&8`>`!M`&$`<`!P`&D`;@!G`&8`:0!L`&4`+@!T`&T`<```````<P!F
+M`'@`;@!A`&T`90```"4`-`!D`"T`)0`P`#(`9``M`"4`,``R`&0`+0`E`#``
+M,@!D`"T`)0`P`#(`9``M`"4`,``R`&0`+0`E`#``,P!D````<P!F`'@`<P!T
+M`&D`;0!E``````!3`%0`00!2`%0`1`!,`$<``````',`9@!X`&,`;0!D````
+M``!S`&8`>`!P`&$`<@``````3`!)`$,`10!.`%,`10!$`$P`1P``````(```
+M`%\`7P!T`&T`<`!?`'(`80!R`%\`<P!F`'@`7P!A`&,`8P!E`',`<P!?`&,`
+M:`!E`&,`:P!?`"4`=0```"T`90!L`"``+0!S`#(`(``B`"T`9``E`',`(@`@
+M`"(`+0!S`'``)0!S`"(``````'(`=0!N`&$`<P```"(`)0!S`"(`"@`E`',`
+M``!$`&4`;`!E`'0`90``````5`!E`'@`=```````5`!I`'0`;`!E````4`!A
+M`'0`:```````4P!I`&P`90!N`'0``````$\`=@!E`'(`=P!R`&D`=`!E````
+M4P!E`'0`=0!P````5`!E`&T`<`!-`&\`9`!E``````!,`&D`8P!E`&X`<P!E
+M````4`!R`&4`<P!E`'0`=0!P``````!3`&@`;P!R`'0`8P!U`'0``````%,`
+M80!V`&4`4`!A`'0`:```````50!P`&0`80!T`&4``````%,`90!T`'4`<`!#
+M`&\`9`!E````)0!S`"X`)0!D`"X`=`!M`'``````````4P!O`&8`=`!W`&$`
+M<@!E`%P`30!I`&,`<@!O`',`;P!F`'0`7`!7`&D`;@!D`&\`=P!S`%P`0P!U
+M`'(`<@!E`&X`=`!6`&4`<@!S`&D`;P!N````4`!R`&\`9P!R`&$`;0!&`&D`
+M;`!E`',`1`!I`'(```!<````2`!)`$0`10``````30!!`%@```!-`$D`3@``
+M`"4`<P`E`',`)0!U```````N`&P`;@!K```````N`&D`;@!F``````!)`&X`
+M<P!T`&$`;`!L````4P!O`&8`=`!W`&$`<@!E`%P`5P!I`&X`4@!!`%(`(`!3
+M`$8`6````````````````````%5315(S,BYD;&P```````!'1$DS,BYD;&P`
+M````````0T]-1$Q',S(N9&QL`````$%$5D%023,R+F1L;`````!32$5,3#,R
+M+F1L;`#Y%`(``````,````````!&`````&]L93,R+F1L;```````````````
+MP````````$8`!`(``````,````````!&&`$```````#`````````1A(!````
+M````P````````$86`0```````,````````!&$P$```````#`````````1AD!
+M````````P````````$:$LI:QM+H:$+:<`*H`-!T'@"/5?P=.&Q"N+0@`*R['
+M$V$6#-.OS=`1BCX`P$_)XFZ@%:<TAV70$9)*`""OQZQ-P",_O3[4SQ&).P"J
+M`+W.&@L!````````P````````$8!%`(``````,````````!&8O+*RG"3%4:A
+M.Y]5.=I,"B3#W6\#3OY+L84]=W:-R1!+`$4`4@!.`$4`3``S`#(`+@!$`$P`
+M3```````06-Q=6ER95-25TQO8VM%>&-L=7-I=F4`4F5L96%S95-25TQO8VM%
+M>&-L=7-I=F4```````````!32$Q705!)+F1L;```````0T]-0U1,,S(N9&QL
+M`````!2K0P#0YT$`7```````````````````````````````````````````
+M````````````````````````````````````:.9#`)"L0P`E````8#)#````
+M``#4,D,`D``````U`1!<JT,`D!]!`/"&00"DJT,`D!]!`/"&00#PJT,`@"5"
+M`/"&00!B860@87)R87D@;F5W(&QE;F=T:``````X#48`B`U&`&-S;>`!````
+M```````````#````(`63&0``````````H"1"`$"L0P"`)4(`\(9!`&)A9"!E
+M>&-E<'1I;VX```#X54,`#%9#`$A60P!@.T,`80!D`'8`80!P`&D`,P`R````
+M```\`'``:0`M`&T`<P`M`'<`:0!N`"T`8P!O`'(`90`M`&8`:0!B`&4`<@!S
+M`"T`;``Q`"T`,0`M`#$````\`'``:0`M`&T`<P`M`'<`:0!N`"T`8P!O`'(`
+M90`M`',`>0!N`&,`:``M`&P`,0`M`#(`+0`P```````!`````P```$9L<T%L
+M;&]C``````$````#````1FQS1G)E90`!`````P```$9L<T=E=%9A;'5E``$`
+M```#````1FQS4V5T5F%L=64``@````,```!);FET:6%L:7IE0W)I=&EC86Q3
+M96-T:6]N17@``````(A80P"46$,`G%A#`*A80P"T6$,`P%A#`,Q80P#<6$,`
+MZ%A#`/!80P#X6$,`!%E#`!!90P!0.T,`'%E#`"190P`L64,`,%E#`#190P`X
+M64,`/%E#`$!90P!$64,`2%E#`%190P!864,`7%E#`&!90P!D64,`:%E#`&Q9
+M0P!P64,`=%E#`'A90P!\64,`@%E#`(190P"(64,`C%E#`)!90P"464,`F%E#
+M`)Q90P"@64,`I%E#`*A90P"L64,`L%E#`+190P"X64,`O%E#`,!90P#$64,`
+MR%E#`,Q90P#064,`W%E#`.A90P#P64,`_%E#`!1:0P`@6D,`-%I#`%1:0P!T
+M6D,`E%I#`+1:0P#46D,`^%I#`!1;0P`X6T,`6%M#`(!;0P"<6T,`K%M#`+!;
+M0P"X6T,`R%M#`.Q;0P#T6T,``%Q#`!!<0P`L7$,`3%Q#`'1<0P"<7$,`Q%Q#
+M`/!<0P`,74,`,%U#`%1=0P"`74,`K%U#`,A=0P!0.T,`V%U#`.Q=0P`(7D,`
+M'%Y#`#Q>0P!?7V)A<V5D*`````!?7V-D96-L`%]?<&%S8V%L`````%]?<W1D
+M8V%L;````%]?=&AI<V-A;&P``%]?9F%S=&-A;&P``%]?=F5C=&]R8V%L;```
+M``!?7V-L<F-A;&P```!?7V5A8FD``%]?<'1R-C0`7U]R97-T<FEC=```7U]U
+M;F%L:6=N960`<F5S=')I8W0H````(&YE=P`````@9&5L971E`#T````^/@``
+M/#P``"$````]/0``(3T``%M=``!O<&5R871O<@`````M/@``*@```"LK```M
+M+0``+0```"L````F````+3XJ`"\````E````/````#P]```^````/CT``"P`
+M```H*0``?@```%X```!\````)B8``'Q\```J/0``*ST``"T]```O/0``)3T`
+M`#X^/0`\/#T`)CT``'P]``!>/0``8'9F=&%B;&4G````8'9B=&%B;&4G````
+M8'9C86QL)P!@='EP96]F)P````!@;&]C86P@<W1A=&EC(&=U87)D)P````!@
+M<W1R:6YG)P````!@=F)A<V4@9&5S=')U8W1O<B<``&!V96-T;W(@9&5L971I
+M;F<@9&5S=')U8W1O<B<`````8&1E9F%U;'0@8V]N<W1R=6-T;W(@8VQO<W5R
+M92<```!@<V-A;&%R(&1E;&5T:6YG(&1E<W1R=6-T;W(G`````&!V96-T;W(@
+M8V]N<W1R=6-T;W(@:71E<F%T;W(G````8'9E8W1O<B!D97-T<G5C=&]R(&ET
+M97)A=&]R)P````!@=F5C=&]R('9B87-E(&-O;G-T<G5C=&]R(&ET97)A=&]R
+M)P!@=FER='5A;"!D:7-P;&%C96UE;G0@;6%P)P``8&5H('9E8W1O<B!C;VYS
+M=')U8W1O<B!I=&5R871O<B<`````8&5H('9E8W1O<B!D97-T<G5C=&]R(&ET
+M97)A=&]R)P!@96@@=F5C=&]R('9B87-E(&-O;G-T<G5C=&]R(&ET97)A=&]R
+M)P``8&-O<'D@8V]N<W1R=6-T;W(@8VQO<W5R92<``&!U9'0@<F5T=7)N:6YG
+M)P!@14@`8%)45$D```!@;&]C86P@=F9T86)L92<`8&QO8V%L('9F=&%B;&4@
+M8V]N<W1R=6-T;W(@8VQO<W5R92<`(&YE=UM=```@9&5L971E6UT```!@;VUN
+M:2!C86QL<VEG)P``8'!L86-E;65N="!D96QE=&4@8VQO<W5R92<``&!P;&%C
+M96UE;G0@9&5L971E6UT@8VQO<W5R92<`````8&UA;F%G960@=F5C=&]R(&-O
+M;G-T<G5C=&]R(&ET97)A=&]R)P```&!M86YA9V5D('9E8W1O<B!D97-T<G5C
+M=&]R(&ET97)A=&]R)P````!@96@@=F5C=&]R(&-O<'D@8V]N<W1R=6-T;W(@
+M:71E<F%T;W(G````8&5H('9E8W1O<B!V8F%S92!C;W!Y(&-O;G-T<G5C=&]R
+M(&ET97)A=&]R)P!@9'EN86UI8R!I;FET:6%L:7IE<B!F;W(@)P``8&1Y;F%M
+M:6,@871E>&ET(&1E<W1R=6-T;W(@9F]R("<`````8'9E8W1O<B!C;W!Y(&-O
+M;G-T<G5C=&]R(&ET97)A=&]R)P``8'9E8W1O<B!V8F%S92!C;W!Y(&-O;G-T
+M<G5C=&]R(&ET97)A=&]R)P````!@;6%N86=E9"!V96-T;W(@8V]P>2!C;VYS
+M=')U8W1O<B!I=&5R871O<B<``&!L;V-A;"!S=&%T:6,@=&AR96%D(&=U87)D
+M)P!O<&5R871O<B`B(B``````(%1Y<&4@1&5S8W)I<'1O<B<````@0F%S92!#
+M;&%S<R!$97-C<FEP=&]R(&%T("@`($)A<V4@0VQA<W,@07)R87DG```@0VQA
+M<W,@2&EE<F%R8VAY($1E<V-R:7!T;W(G`````"!#;VUP;&5T92!/8FIE8W0@
+M3&]C871O<B<````&```&``$``!```P8`!@(0!$5%104%!04%-3``4``````H
+M(#A06`<(`#<P,%=0!P``("`(!P````A@:&!@8&```'AP>'AX>`@'"`<`!P`(
+M"`@```@'"``'"``'`"AN=6QL*0``*`!N`'4`;`!L`"D````````````%``#`
+M"P`````````=``#`!`````````"6``#`!`````````"-``#`"`````````".
+M``#`"`````````"/``#`"`````````"0``#`"`````````"1``#`"```````
+M``"2``#`"`````````"3``#`"`````````"T`@#`"`````````"U`@#`"```
+M```````,`````P````D```!M`',`8P!O`'(`90!E`"X`9`!L`&P```!#;W)%
+M>&ET4')O8V5S<P```````*""0@```````(-"```````@JT(`T*M"`/""0@#P
+M@D(`P*9"`""G0@"@ND(`P+I"``````!`@T(`P)-"`/"30@!PH4(`T*%"`%"Y
+M0@#P@D(`H+5"````````````\()"``````!0@T(`\()"`.""0@#`@D(`\()"
+M``$````6`````@````(````#`````@````0````8````!0````T````&````
+M"0````<````,````"`````P````)````#`````H````'````"P````@````,
+M````%@````T````6````#P````(````0````#0```!$````2````$@````(`
+M```A````#0```#4````"````00````T```!#`````@```%`````1````4@``
+M``T```!3````#0```%<````6````60````L```!L````#0```&T````@````
+M<````!P```!R````"0````8````6````@`````H```"!````"@```((````)
+M````@P```!8```"$````#0```)$````I````G@````T```"A`````@```*0`
+M```+````IP````T```"W````$0```,X````"````UP````L````8!P``#```
+M`$E.1@!I;F8`3D%.`&YA;@!.04XH4TY!3BD```!N86XH<VYA;BD```!.04XH
+M24Y$*0````!N86XH:6YD*0````!E*S`P,````%-U;@!-;VX`5'5E`%=E9`!4
+M:'4`1G)I`%-A=`!3=6YD87D``$UO;F1A>0``5'5E<V1A>0!7961N97-D87D`
+M``!4:'5R<V1A>0````!&<FED87D``%-A='5R9&%Y`````$IA;@!&96(`36%R
+M`$%P<@!-87D`2G5N`$IU;`!!=6<`4V5P`$]C=`!.;W8`1&5C`$IA;G5A<GD`
+M1F5B<G5A<GD`````36%R8V@```!!<')I;````$IU;F4`````2G5L>0````!!
+M=6=U<W0``%-E<'1E;6)E<@```$]C=&]B97(`3F]V96UB97(`````1&5C96UB
+M97(`````04T``%!-``!-32]D9"]Y>0````!D9&1D+"!-34U-(&1D+"!Y>7EY
+M`$A(.FUM.G-S`````%,`=0!N````30!O`&X```!4`'4`90```%<`90!D````
+M5`!H`'4```!&`'(`:0```%,`80!T````4P!U`&X`9`!A`'D``````$T`;P!N
+M`&0`80!Y``````!4`'4`90!S`&0`80!Y````5P!E`&0`;@!E`',`9`!A`'D`
+M``!4`&@`=0!R`',`9`!A`'D``````$8`<@!I`&0`80!Y``````!3`&$`=`!U
+M`'(`9`!A`'D``````$H`80!N````1@!E`&(```!-`&$`<@```$$`<`!R````
+M30!A`'D```!*`'4`;@```$H`=0!L````00!U`&<```!3`&4`<````$\`8P!T
+M````3@!O`'8```!$`&4`8P```$H`80!N`'4`80!R`'D```!&`&4`8@!R`'4`
+M80!R`'D``````$T`80!R`&,`:````$$`<`!R`&D`;````$H`=0!N`&4`````
+M`$H`=0!L`'D``````$$`=0!G`'4`<P!T``````!3`&4`<`!T`&4`;0!B`&4`
+M<@```$\`8P!T`&\`8@!E`'(```!.`&\`=@!E`&T`8@!E`'(``````$0`90!C
+M`&4`;0!B`&4`<@``````00!-``````!0`$T``````$T`30`O`&0`9``O`'D`
+M>0``````9`!D`&0`9``L`"``30!-`$T`30`@`&0`9``L`"``>0!Y`'D`>0``
+M`$@`2``Z`&T`;0`Z`',`<P``````90!N`"T`50!3`````````,!A0P#$84,`
+MR&%#`,QA0P#084,`U&%#`-AA0P#<84,`Y&%#`.QA0P#T84,``&)#``QB0P`4
+M8D,`(&)#`"1B0P`H8D,`+&)#`#!B0P`T8D,`.&)#`#QB0P!`8D,`1&)#`$AB
+M0P!,8D,`4&)#`%AB0P!D8D,`;&)#`#!B0P!T8D,`?&)#`(1B0P",8D,`F&)#
+M`*!B0P"L8D,`N&)#`+QB0P#`8D,`S&)#`.!B0P`!`````````.QB0P#T8D,`
+M_&)#``1C0P`,8T,`%&-#`!QC0P`D8T,`-&-#`$1C0P!48T,`:&-#`'QC0P",
+M8T,`H&-#`*AC0P"P8T,`N&-#`,!C0P#(8T,`T&-#`-AC0P#@8T,`Z&-#`/!C
+M0P#X8T,``&1#`!!D0P`D9$,`,&1#`,!C0P`\9$,`2&1#`%1D0P!D9$,`>&1#
+M`(AD0P"<9$,`L&1#`+AD0P#`9$,`U&1#`/QD0P`094,`````````(``@`"``
+M(``@`"``(``@`"``*``H`"@`*``H`"``(``@`"``(``@`"``(``@`"``(``@
+M`"``(``@`"``(``@`$@`$``0`!``$``0`!``$``0`!``$``0`!``$``0`!``
+MA`"$`(0`A`"$`(0`A`"$`(0`A``0`!``$``0`!``$``0`($!@0&!`8$!@0&!
+M`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$0`!``
+M$``0`!``$`""`8(!@@&"`8(!@@$"`0(!`@$"`0(!`@$"`0(!`@$"`0(!`@$"
+M`0(!`@$"`0(!`@$"`0(!$``0`!``$``@`"``(``@`"``(``H`"``(``@`"``
+M(``@`"``(``@`"``(``@`"``(``@`"``(``@`"``(``@`"``(``@`"``(``(
+M`!``$``0`!``$``0`!``$``0`!(!$``0`#``$``0`!``$``4`!0`$``2`1``
+M$``0`!0`$@$0`!``$``0`!```0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!
+M`0$!`0$!`0$!`0$!`0$!`0$!`1```0$!`0$!`0$!`0$!`0$"`0(!`@$"`0(!
+M`@$"`0(!`@$"`0(!`@$"`0(!`@$"`0(!`@$"`0(!`@$"`0(!`@$0``(!`@$"
+M`0(!`@$"`0(!`@$!`0``````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````(``@`"``(``@`"``(``@`"``*``H`"@`*``H`"``(``@`"``(``@`"``
+M(``@`"``(``@`"``(``@`"``(``@`$@`$``0`!``$``0`!``$``0`!``$``0
+M`!``$``0`!``A`"$`(0`A`"$`(0`A`"$`(0`A``0`!``$``0`!``$``0`($`
+M@0"!`($`@0"!``$``0`!``$``0`!``$``0`!``$``0`!``$``0`!``$``0`!
+M``$``0`0`!``$``0`!``$`""`((`@@""`((`@@`"``(``@`"``(``@`"``(`
+M`@`"``(``@`"``(``@`"``(``@`"``(`$``0`!``$``@````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M``````````````````````````"`@8*#A(6&AXB)BHN,C8Z/D)&2DY25EI>8
+MF9J;G)V>GZ"AHJ.DI::GJ*FJJZRMKJ^PL;*SM+6VM[BYNKN\O;Z_P,'"P\3%
+MQL?(R<K+S,W.S]#1TM/4U=;7V-G:V]S=WM_@X>+CY.7FY^CIZNOL[>[O\/'R
+M\_3U]O?X^?K[_/W^_P`!`@,$!08'"`D*"PP-#@\0$1(3%!46%Q@9&AL<'1X?
+M("$B(R0E)B<H*2HK+"TN+S`Q,C,T-38W.#DZ.SP]/C]`86)C9&5F9VAI:FML
+M;6YO<'%R<W1U=G=X>7I;7%U>7V!A8F-D969G:&EJ:VQM;F]P<7)S='5V=WAY
+M>GM\?7Y_@(&"@X2%AH>(B8J+C(V.CY"1DI.4E9:7F)F:FYR=GI^@H:*CI*6F
+MIZBIJJNLK:ZOL+&RL[2UMK>XN;J[O+V^O\#!PL/$Q<;'R,G*R\S-SL_0T=+3
+MU-76U]C9VMO<W=[?X.'BX^3EYN?HZ>KK[.WN[_#Q\O/T]?;W^/GZ^_S]_O^`
+M@8*#A(6&AXB)BHN,C8Z/D)&2DY25EI>8F9J;G)V>GZ"AHJ.DI::GJ*FJJZRM
+MKJ^PL;*SM+6VM[BYNKN\O;Z_P,'"P\3%QL?(R<K+S,W.S]#1TM/4U=;7V-G:
+MV]S=WM_@X>+CY.7FY^CIZNOL[>[O\/'R\_3U]O?X^?K[_/W^_P`!`@,$!08'
+M"`D*"PP-#@\0$1(3%!46%Q@9&AL<'1X?("$B(R0E)B<H*2HK+"TN+S`Q,C,T
+M-38W.#DZ.SP]/C]`04)#1$5&1TA)2DM,34Y/4%%24U155E=865I;7%U>7V!!
+M0D-$149'2$E*2TQ-3D]045)35%565UA96GM\?7Y_@(&"@X2%AH>(B8J+C(V.
+MCY"1DI.4E9:7F)F:FYR=GI^@H:*CI*6FIZBIJJNLK:ZOL+&RL[2UMK>XN;J[
+MO+V^O\#!PL/$Q<;'R,G*R\S-SL_0T=+3U-76U]C9VMO<W=[?X.'BX^3EYN?H
+MZ>KK[.WN[_#Q\O/T]?;W^/GZ^_S]_O_@;D,`*&]#``Q60P!H;T,`H&]#`.AO
+M0P!(<$,`E'!#`$A60P#0<$,`$'%#`$QQ0P"(<4,`V'%#`#!R0P"(<D,`T')#
+M`/A50P!@.T,`('-#`&$`<`!I`"T`;0!S`"T`=P!I`&X`+0!A`'``<`!M`&\`
+M9`!E`&P`+0!R`'4`;@!T`&D`;0!E`"T`;``Q`"T`,0`M`#$``````#P`<`!I
+M`"T`;0!S`"T`=P!I`&X`+0!C`&\`<@!E`"T`9`!A`'0`90!T`&D`;0!E`"T`
+M;``Q`"T`,0`M`#$````\`'``:0`M`&T`<P`M`'<`:0!N`"T`8P!O`'(`90`M
+M`&8`:0!L`&4`+0!L`#(`+0`Q`"T`,0```#P`<`!I`"T`;0!S`"T`=P!I`&X`
+M+0!C`&\`<@!E`"T`;`!O`&,`80!L`&D`>@!A`'0`:0!O`&X`+0!L`#$`+0`R
+M`"T`,0```#P`<`!I`"T`;0!S`"T`=P!I`&X`+0!C`&\`<@!E`"T`;`!O`&,`
+M80!L`&D`>@!A`'0`:0!O`&X`+0!O`&(`<P!O`&P`90!T`&4`+0!L`#$`+0`R
+M`"T`,````````````#P`<`!I`"T`;0!S`"T`=P!I`&X`+0!C`&\`<@!E`"T`
+M<`!R`&\`8P!E`',`<P!T`&@`<@!E`&$`9`!S`"T`;``Q`"T`,0`M`#(````\
+M`'``:0`M`&T`<P`M`'<`:0!N`"T`8P!O`'(`90`M`',`=`!R`&D`;@!G`"T`
+M;``Q`"T`,0`M`#`````\`'``:0`M`&T`<P`M`'<`:0!N`"T`8P!O`'(`90`M
+M`',`>0!S`&D`;@!F`&\`+0!L`#$`+0`R`"T`,0``````/`!P`&D`+0!M`',`
+M+0!W`&D`;@`M`&,`;P!R`&4`+0!W`&D`;@!R`'0`+0!L`#$`+0`Q`"T`,```
+M````/`!P`&D`+0!M`',`+0!W`&D`;@`M`&,`;P!R`&4`+0!X`',`=`!A`'0`
+M90`M`&P`,@`M`#$`+0`P````80!P`&D`+0!M`',`+0!W`&D`;@`M`'(`=`!C
+M`&\`<@!E`"T`;@!T`'4`<P!E`'(`+0!W`&D`;@!D`&\`=P`M`&P`,0`M`#$`
+M+0`P``````!A`'``:0`M`&T`<P`M`'<`:0!N`"T`<P!E`&,`=0!R`&D`=`!Y
+M`"T`<P!Y`',`=`!E`&T`9@!U`&X`8P!T`&D`;P!N`',`+0!L`#$`+0`Q`"T`
+M,```````90!X`'0`+0!M`',`+0!W`&D`;@`M`&L`90!R`&X`90!L`#,`,@`M
+M`'``80!C`&L`80!G`&4`+0!C`'4`<@!R`&4`;@!T`"T`;``Q`"T`,0`M`#``
+M`````&4`>`!T`"T`;0!S`"T`=P!I`&X`+0!N`'0`=0!S`&4`<@`M`&0`:0!A
+M`&P`;P!G`&(`;P!X`"T`;``Q`"T`,0`M`#```````&4`>`!T`"T`;0!S`"T`
+M=P!I`&X`+0!N`'0`=0!S`&4`<@`M`'<`:0!N`&0`;P!W`',`=`!A`'0`:0!O
+M`&X`+0!L`#$`+0`Q`"T`,```````=0!S`&4`<@`S`#(```````(````2````
+M`@```!(````"````$@````(````2``````````X```!'971#=7)R96YT4&%C
+M:V%G94ED``@````2````!````!(```!,0TUA<%-T<FEN9T5X````!````!(`
+M``!,;V-A;&5.86UE5&],0TE$`````+AS0P#$<T,`T'-#`-QS0P!J`&$`+0!*
+M`%````!Z`&@`+0!#`$X```!K`&\`+0!+`%(```!Z`&@`+0!4`%<```!U`&L`
+M``````#D"U0"```````08RU>QVL%````````0.KM=$;0G"R?#`````!A];FK
+MOZ1<P_$I8QT``````&2U_30%Q-*'9I+Y%3ML1````````!#9D&64+$)BUP%%
+M(IH7)B=/GP```$`"E0?!B58D'*?ZQ6=MR'/<;:WK<@$`````P<YD)Z)CRABD
+M[R5[T<UP[]]K'S[JG5\#``````#D;O[#S6H,O&8R'SDN`P)%6B7XTG%62L+#
+MV@<``!"/+J@(0[*J?!HACD#.BO,+SL2$)POK?,.4):U)$@```$`:W=I4G\R_
+M85G<JZM<QPQ$!?5G%KS14J^W^RF-CV"4*@``````(0R*NQ>DCJ]6J9]'!C:R
+M2UW@7]R`"JK^\$#9CJC0@!IK(V,``&0X3#*6QU>#U4)*Y&$BJ=D]$#R]<O/E
+MD7056<`-IAWL;-DJ$-/F````$(4>6V%/;FDJ>Q@<XE`$*S3=+^XG4&.9<<FF
+M%NE*CB@N"!=O;DD:;AD"````0#(F0*T$4'(>^=71E"F[S5MFEBX[HMM]^F6L
+M4]YWFZ(@L%/YO\:K)91+3>,$`($MP_OTT")24"@/M_/R$U<3%$+<?5TYUID9
+M6?@<.)(`UA2SAKEWI7IA_K<2:F$+``#D$1V-9\-6(!^4.HLV"9L(:7"]OF5V
+M(.O$)IN=Z&<5;@D5G2OR,G$344B^SJ+E15)_&@```!"[>)3W`L!T&XP`7?"P
+M=<;;J12YV>+?<@]E3$LH=Q;@]FW"D4-1S\F5)U6KXM8GYJB<IK$]`````$!*
+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
+M``4.D``%#Y\`!@^N``80O@`&$<\`!Q'@``<2\@`'$P4!"!,8`0@5+0$(%D,!
+M"199`0D7<`$)&(@!"AB@`0H9N0$*&M,!"AON`0L;"0(+'"4""QT*````9```
+M`.@#```0)P``H(8!`$!"#P"`EI@``.'U!0#*FCLP````,2-)3D8````Q(U%.
+M04X``#$C4TY!3@``,2-)3D0````!````^(1#``(`````A4,``P````B%0P`$
+M````$(5#``4````@A4,`!@```"B%0P`'````,(5#``@````XA4,`"0```$"%
+M0P`*````2(5#``L```!0A4,`#````%B%0P`-````8(5#``X```!HA4,`#P``
+M`'"%0P`0````>(5#`!$```"`A4,`$@```(B%0P`3````D(5#`!0```"8A4,`
+M%0```*"%0P`6````J(5#`!@```"PA4,`&0```+B%0P`:````P(5#`!L```#(
+MA4,`'````-"%0P`=````V(5#`!X```#@A4,`'P```.B%0P`@````\(5#`"$`
+M``#XA4,`(@```.AS0P`C`````(9#`"0````(AD,`)0```!"&0P`F````&(9#
+M`"<````@AD,`*0```"B&0P`J````,(9#`"L````XAD,`+````$"&0P`M````
+M2(9#`"\```!0AD,`-@```%B&0P`W````8(9#`#@```!HAD,`.0```'"&0P`^
+M````>(9#`#\```"`AD,`0````(B&0P!!````D(9#`$,```"8AD,`1````*"&
+M0P!&````J(9#`$<```"PAD,`20```+B&0P!*````P(9#`$L```#(AD,`3@``
+M`-"&0P!/````V(9#`%````#@AD,`5@```.B&0P!7````\(9#`%H```#XAD,`
+M90````"'0P!_````M#5#``$$```(AT,``@0``!2'0P`#!```((=#``0$``#<
+M<T,`!00``"R'0P`&!```.(=#``<$``!$AT,`"`0``%"'0P`)!```$&5#``L$
+M``!<AT,`#`0``&B'0P`-!```=(=#``X$``"`AT,`#P0``(R'0P`0!```F(=#
+M`!$$``"X<T,`$@0``-!S0P`3!```I(=#`!0$``"PAT,`%00``+R'0P`6!```
+MR(=#`!@$``#4AT,`&00``."'0P`:!```[(=#`!L$``#XAT,`'`0```2(0P`=
+M!```$(A#`!X$```<B$,`'P0``"B(0P`@!```-(A#`"$$``!`B$,`(@0``$R(
+M0P`C!```6(A#`"0$``!DB$,`)00``'"(0P`F!```?(A#`"<$``"(B$,`*00`
+M`)2(0P`J!```H(A#`"L$``"LB$,`+`0``+B(0P`M!```T(A#`"\$``#<B$,`
+M,@0``.B(0P`T!```](A#`#4$````B4,`-@0```R)0P`W!```&(E#`#@$```D
+MB4,`.00``#")0P`Z!```/(E#`#L$``!(B4,`/@0``%2)0P`_!```8(E#`$`$
+M``!LB4,`000``'B)0P!#!```A(E#`$0$``"<B4,`100``*B)0P!&!```M(E#
+M`$<$``#`B4,`200``,R)0P!*!```V(E#`$L$``#DB4,`3`0``/")0P!.!```
+M_(E#`$\$```(BD,`4`0``!2*0P!2!```((I#`%8$```LBD,`5P0``#B*0P!:
+M!```2(I#`&4$``!8BD,`:P0``&B*0P!L!```>(I#`($$``"$BD,``0@``)"*
+M0P`$"```Q'-#``<(``"<BD,`"0@``*B*0P`*"```M(I#``P(``#`BD,`$`@`
+M`,R*0P`3"```V(I#`!0(``#DBD,`%@@``/"*0P`:"```_(I#`!T(```4BT,`
+M+`@``""+0P`["```.(M#`#X(``!$BT,`0P@``%"+0P!K"```:(M#``$,``!X
+MBT,`!`P``(2+0P`'#```D(M#``D,``"<BT,`"@P``*B+0P`,#```M(M#`!H,
+M``#`BT,`.PP``-B+0P!K#```Y(M#``$0``#TBT,`!!````",0P`'$```#(Q#
+M``D0```8C$,`"A```"2,0P`,$```,(Q#`!H0```\C$,`.Q```$B,0P`!%```
+M6(Q#``04``!DC$,`!Q0``'",0P`)%```?(Q#``H4``"(C$,`#!0``)2,0P`:
+M%```H(Q#`#L4``"XC$,``1@``,B,0P`)&```U(Q#``H8``#@C$,`#!@``.R,
+M0P`:&```^(Q#`#L8```0C4,``1P``""-0P`)'```+(U#``H<```XC4,`&AP`
+M`$2-0P`['```7(U#``$@``!LC4,`"2```'B-0P`*(```A(U#`#L@``"0C4,`
+M`20``*"-0P`))```K(U#``HD``"XC4,`.R0``,2-0P`!*```U(U#``DH``#@
+MC4,`"B@``.R-0P`!+```^(U#``DL```$CD,`"BP``!".0P`!,```'(Y#``DP
+M```HCD,`"C```#2.0P`!-```0(Y#``DT``!,CD,`"C0``%B.0P`!.```9(Y#
+M``HX``!PCD,``3P``'R.0P`*/```B(Y#``%```"4CD,`"D```*".0P`*1```
+MK(Y#``I(``"XCD,`"DP``,2.0P`*4```T(Y#``1\``#<CD,`&GP``.R.0P!A
+M`'(``````&(`9P``````8P!A``````!Z`&@`+0!#`$@`4P``````8P!S````
+M``!D`&$``````&0`90``````90!L``````!E`&X``````&4`<P``````9@!I
+M``````!F`'(``````&@`90``````:`!U``````!I`',``````&D`=```````
+M:@!A``````!K`&\``````&X`;```````;@!O``````!P`&P``````'``=```
+M````<@!O``````!R`'4``````&@`<@``````<P!K``````!S`'$``````',`
+M=@``````=`!H``````!T`'(``````'4`<@``````:0!D``````!B`&4`````
+M`',`;```````90!T``````!L`'8``````&P`=```````9@!A``````!V`&D`
+M`````&@`>0``````80!Z``````!E`'4``````&T`:P``````80!F``````!K
+M`&$``````&8`;P``````:`!I``````!M`',``````&L`:P``````:P!Y````
+M``!S`'<``````'4`>@``````=`!T``````!P`&$``````&<`=0``````=`!A
+M``````!T`&4``````&L`;@``````;0!R``````!S`&$``````&T`;@``````
+M9P!L``````!K`&\`:P```',`>0!R````9`!I`'8```!A`'(`+0!3`$$```!B
+M`&<`+0!"`$<```!C`&$`+0!%`%,```!C`',`+0!#`%H```!D`&$`+0!$`$L`
+M``!D`&4`+0!$`$4```!E`&P`+0!'`%(```!F`&D`+0!&`$D```!F`'(`+0!&
+M`%(```!H`&4`+0!)`$P```!H`'4`+0!(`%4```!I`',`+0!)`%,```!I`'0`
+M+0!)`%0```!N`&P`+0!.`$P```!N`&(`+0!.`$\```!P`&P`+0!0`$P```!P
+M`'0`+0!"`%(```!R`&\`+0!2`$\```!R`'4`+0!2`%4```!H`'(`+0!(`%(`
+M``!S`&L`+0!3`$L```!S`'$`+0!!`$P```!S`'8`+0!3`$4```!T`&@`+0!4
+M`$@```!T`'(`+0!4`%(```!U`'(`+0!0`$L```!I`&0`+0!)`$0```!U`&L`
+M+0!5`$$```!B`&4`+0!"`%D```!S`&P`+0!3`$D```!E`'0`+0!%`$4```!L
+M`'8`+0!,`%8```!L`'0`+0!,`%0```!F`&$`+0!)`%(```!V`&D`+0!6`$X`
+M``!H`'D`+0!!`$T```!A`'H`+0!!`%H`+0!,`&$`=`!N``````!E`'4`+0!%
+M`%,```!M`&L`+0!-`$L```!T`&X`+0!:`$$```!X`&@`+0!:`$$```!Z`'4`
+M+0!:`$$```!A`&8`+0!:`$$```!K`&$`+0!'`$4```!F`&\`+0!&`$\```!H
+M`&D`+0!)`$X```!M`'0`+0!-`%0```!S`&4`+0!.`$\```!M`',`+0!-`%D`
+M``!K`&L`+0!+`%H```!K`'D`+0!+`$<```!S`'<`+0!+`$4```!U`'H`+0!5
+M`%H`+0!,`&$`=`!N``````!T`'0`+0!2`%4```!B`&X`+0!)`$X```!P`&$`
+M+0!)`$X```!G`'4`+0!)`$X```!T`&$`+0!)`$X```!T`&4`+0!)`$X```!K
+M`&X`+0!)`$X```!M`&P`+0!)`$X```!M`'(`+0!)`$X```!S`&$`+0!)`$X`
+M``!M`&X`+0!-`$X```!C`'D`+0!'`$(```!G`&P`+0!%`%,```!K`&\`:P`M
+M`$D`3@``````<P!Y`'(`+0!3`%D``````&0`:0!V`"T`30!6``````!Q`'4`
+M>@`M`$(`3P``````;@!S`"T`6@!!````;0!I`"T`3@!:````80!R`"T`20!1
+M````9`!E`"T`0P!(````90!N`"T`1P!"````90!S`"T`30!8````9@!R`"T`
+M0@!%````:0!T`"T`0P!(````;@!L`"T`0@!%````;@!N`"T`3@!/````<`!T
+M`"T`4`!4````<P!R`"T`4P!0`"T`3`!A`'0`;@``````<P!V`"T`1@!)````
+M80!Z`"T`00!:`"T`0P!Y`'(`;```````<P!E`"T`4P!%````;0!S`"T`0@!.
+M````=0!Z`"T`50!:`"T`0P!Y`'(`;```````<0!U`'H`+0!%`$,``````&$`
+M<@`M`$4`1P```'H`:``M`$@`2P```&0`90`M`$$`5````&4`;@`M`$$`50``
+M`&4`<P`M`$4`4P```&8`<@`M`$,`00```',`<@`M`%,`4``M`$,`>0!R`&P`
+M`````',`90`M`$8`20```'$`=0!Z`"T`4`!%``````!A`'(`+0!,`%D```!Z
+M`&@`+0!3`$<```!D`&4`+0!,`%4```!E`&X`+0!#`$$```!E`',`+0!'`%0`
+M``!F`'(`+0!#`$@```!H`'(`+0!"`$$```!S`&T`:@`M`$X`3P``````80!R
+M`"T`1`!:````>@!H`"T`30!/````9`!E`"T`3`!)````90!N`"T`3@!:````
+M90!S`"T`0P!2````9@!R`"T`3`!5````8@!S`"T`0@!!`"T`3`!A`'0`;@``
+M````<P!M`&H`+0!3`$4``````&$`<@`M`$T`00```&4`;@`M`$D`10```&4`
+M<P`M`%``00```&8`<@`M`$T`0P```',`<@`M`$(`00`M`$P`80!T`&X`````
+M`',`;0!A`"T`3@!/``````!A`'(`+0!4`$X```!E`&X`+0!:`$$```!E`',`
+M+0!$`$\```!S`'(`+0!"`$$`+0!#`'D`<@!L``````!S`&T`80`M`%,`10``
+M````80!R`"T`3P!-````90!N`"T`2@!-````90!S`"T`5@!%````<P!M`',`
+M+0!&`$D``````&$`<@`M`%D`10```&4`;@`M`$,`0@```&4`<P`M`$,`3P``
+M`',`;0!N`"T`1@!)``````!A`'(`+0!3`%D```!E`&X`+0!"`%H```!E`',`
+M+0!0`$4```!A`'(`+0!*`$\```!E`&X`+0!4`%0```!E`',`+0!!`%(```!A
+M`'(`+0!,`$(```!E`&X`+0!:`%<```!E`',`+0!%`$,```!A`'(`+0!+`%<`
+M``!E`&X`+0!0`$@```!E`',`+0!#`$P```!A`'(`+0!!`$4```!E`',`+0!5
+M`%D```!A`'(`+0!"`$@```!E`',`+0!0`%D```!A`'(`+0!1`$$```!E`',`
+M+0!"`$\```!E`',`+0!3`%8```!E`',`+0!(`$X```!E`',`+0!.`$D```!E
+M`',`+0!0`%(```!Z`&@`+0!#`$@`5```````<P!R````````````M#5#`$(`
+M``!8AD,`+````!B60P!Q````^(1#```````DED,`V````#"60P#:````/)9#
+M`+$```!(ED,`H````%260P"/````8)9#`,\```!LED,`U0```'B60P#2````
+MA)9#`*D```"0ED,`N0```)R60P#$````J)9#`-P```"TED,`0P```,"60P#,
+M````S)9#`+\```#8ED,`R````$"&0P`I````Y)9#`)L```#\ED,`:P````"&
+M0P`A````%)=#`&,`````A4,``0```""70P!$````+)=#`'T````XET,`MP``
+M``B%0P`"````4)=#`$4````@A4,`!````%R70P!'````:)=#`(<````HA4,`
+M!0```'270P!(````,(5#``8```"`ET,`H@```(R70P"1````F)=#`$D```"D
+MET,`LP```+"70P"K`````(=#`$$```"\ET,`BP```#B%0P`'````S)=#`$H`
+M``!`A4,`"````-B70P"C````Y)=#`,T```#PET,`K````/R70P#)````")A#
+M`)(````4F$,`N@```""80P#%````+)A#`+0````XF$,`U@```$280P#0````
+M4)A#`$L```!<F$,`P````&B80P#3````2(5#``D```!TF$,`T0```("80P#=
+M````C)A#`-<```"8F$,`R@```*280P"U````L)A#`,$```"\F$,`U````,B8
+M0P"D````U)A#`*T```#@F$,`WP```.R80P"3````^)A#`.`````$F4,`NP``
+M`!"90P#.````')E#`.$````HF4,`VP```#290P#>````0)E#`-D```!,F4,`
+MQ@```!"&0P`C````6)E#`&4```!(AD,`*@```&290P!L````*(9#`"8```!P
+MF4,`:````%"%0P`*````?)E#`$P```!HAD,`+@```(B90P!S````6(5#``L`
+M``"4F4,`E````*"90P"E````K)E#`*X```"XF4,`30```,290P"V````T)E#
+M`+P```#HAD,`/@```-R90P"(````L(9#`#<```#HF4,`?P```&"%0P`,````
+M])E#`$X```!PAD,`+P````":0P!T````P(5#`!@````,FD,`KP```!B:0P!:
+M````:(5#``T````DFD,`3P```#B&0P`H````,)I#`&H```#XA4,`'P```#R:
+M0P!A````<(5#``X```!(FD,`4````'B%0P`/````5)I#`)4```!@FD,`40``
+M`("%0P`0````;)I#`%(```!@AD,`+0```'B:0P!R````@(9#`#$```"$FD,`
+M>````,B&0P`Z````D)I#`((```"(A4,`$0```/"&0P`_````G)I#`(D```"L
+MFD,`4P```(B&0P`R````N)I#`'D````@AD,`)0```,2:0P!G````&(9#`"0`
+M``#0FD,`9@```-R:0P".````4(9#`"L```#HFD,`;0```/2:0P"#````X(9#
+M`#T`````FT,`A@```-"&0P`[````#)M#`(0```!XAD,`,````!B;0P"=````
+M))M#`'<````PFT,`=0```#R;0P!5````D(5#`!(```!(FT,`E@```%2;0P!4
+M````8)M#`)<```"8A4,`$P```&R;0P"-````J(9#`#8```!XFT,`?@```*"%
+M0P`4````A)M#`%8```"HA4,`%0```)";0P!7````G)M#`)@```"HFT,`C```
+M`+B;0P"?````R)M#`*@```"PA4,`%@```-B;0P!8````N(5#`!<```#DFT,`
+M60```-B&0P`\````\)M#`(4```#\FT,`IP````B<0P!V````%)Q#`)P```#(
+MA4,`&0```""<0P!;````"(9#`"(````LG$,`9````#B<0P"^````2)Q#`,,`
+M``!8G$,`L````&B<0P"X````>)Q#`,L```"(G$,`QP```-"%0P`:````F)Q#
+M`%P```#LCD,`XP```*2<0P#"````O)Q#`+T```#4G$,`I@```.R<0P"9````
+MV(5#`!L````$G4,`F@```!"=0P!=````D(9#`#,````<G4,`>@```/B&0P!`
+M````*)U#`(H```"XAD,`.````#B=0P"`````P(9#`#D```!$G4,`@0```."%
+M0P`<````4)U#`%X```!<G4,`;@```.B%0P`=````:)U#`%\```"@AD,`-0``
+M`'2=0P!\````Z'-#`"````"`G4,`8@```/"%0P`>````C)U#`&````"8AD,`
+M-````)B=0P">````L)U#`'L````PAD,`)P```,B=0P!I````U)U#`&\```#@
+MG4,``P```/"=0P#B`````)Y#`)`````,GD,`H0```!B>0P"R````))Y#`*H`
+M```PGD,`1@```#R>0P!P````80!F`"T`>@!A````80!R`"T`80!E````80!R
+M`"T`8@!H````80!R`"T`9`!Z````80!R`"T`90!G````80!R`"T`:0!Q````
+M80!R`"T`:@!O````80!R`"T`:P!W````80!R`"T`;`!B````80!R`"T`;`!Y
+M````80!R`"T`;0!A````80!R`"T`;P!M````80!R`"T`<0!A````80!R`"T`
+M<P!A````80!R`"T`<P!Y````80!R`"T`=`!N````80!R`"T`>0!E````80!Z
+M`"T`80!Z`"T`8P!Y`'(`;```````80!Z`"T`80!Z`"T`;`!A`'0`;@``````
+M8@!E`"T`8@!Y````8@!G`"T`8@!G````8@!N`"T`:0!N````8@!S`"T`8@!A
+M`"T`;`!A`'0`;@``````8P!A`"T`90!S````8P!S`"T`8P!Z````8P!Y`"T`
+M9P!B````9`!A`"T`9`!K````9`!E`"T`80!T````9`!E`"T`8P!H````9`!E
+M`"T`9`!E````9`!E`"T`;`!I````9`!E`"T`;`!U````9`!I`'8`+0!M`'8`
+M`````&4`;``M`&<`<@```&4`;@`M`&$`=0```&4`;@`M`&(`>@```&4`;@`M
+M`&,`80```&4`;@`M`&,`8@```&4`;@`M`&<`8@```&4`;@`M`&D`90```&4`
+M;@`M`&H`;0```&4`;@`M`&X`>@```&4`;@`M`'``:````&4`;@`M`'0`=```
+M`&4`;@`M`'4`<P```&4`;@`M`'H`80```&4`;@`M`'H`=P```&4`<P`M`&$`
+M<@```&4`<P`M`&(`;P```&4`<P`M`&,`;````&4`<P`M`&,`;P```&4`<P`M
+M`&,`<@```&4`<P`M`&0`;P```&4`<P`M`&4`8P```&4`<P`M`&4`<P```&4`
+M<P`M`&<`=````&4`<P`M`&@`;@```&4`<P`M`&T`>````&4`<P`M`&X`:0``
+M`&4`<P`M`'``80```&4`<P`M`'``90```&4`<P`M`'``<@```&4`<P`M`'``
+M>0```&4`<P`M`',`=@```&4`<P`M`'4`>0```&4`<P`M`'8`90```&4`=``M
+M`&4`90```&4`=0`M`&4`<P```&8`80`M`&D`<@```&8`:0`M`&8`:0```&8`
+M;P`M`&8`;P```&8`<@`M`&(`90```&8`<@`M`&,`80```&8`<@`M`&,`:```
+M`&8`<@`M`&8`<@```&8`<@`M`&P`=0```&8`<@`M`&T`8P```&<`;``M`&4`
+M<P```&<`=0`M`&D`;@```&@`90`M`&D`;````&@`:0`M`&D`;@```&@`<@`M
+M`&(`80```&@`<@`M`&@`<@```&@`=0`M`&@`=0```&@`>0`M`&$`;0```&D`
+M9``M`&D`9````&D`<P`M`&D`<P```&D`=``M`&,`:````&D`=``M`&D`=```
+M`&H`80`M`&H`<````&L`80`M`&<`90```&L`:P`M`&L`>@```&L`;@`M`&D`
+M;@```&L`;P!K`"T`:0!N``````!K`&\`+0!K`'(```!K`'D`+0!K`&<```!L
+M`'0`+0!L`'0```!L`'8`+0!L`'8```!M`&D`+0!N`'H```!M`&L`+0!M`&L`
+M``!M`&P`+0!I`&X```!M`&X`+0!M`&X```!M`'(`+0!I`&X```!M`',`+0!B
+M`&X```!M`',`+0!M`'D```!M`'0`+0!M`'0```!N`&(`+0!N`&\```!N`&P`
+M+0!B`&4```!N`&P`+0!N`&P```!N`&X`+0!N`&\```!N`',`+0!Z`&$```!P
+M`&$`+0!I`&X```!P`&P`+0!P`&P```!P`'0`+0!B`'(```!P`'0`+0!P`'0`
+M``!Q`'4`>@`M`&(`;P``````<0!U`'H`+0!E`&,``````'$`=0!Z`"T`<`!E
+M``````!R`&\`+0!R`&\```!R`'4`+0!R`'4```!S`&$`+0!I`&X```!S`&4`
+M+0!F`&D```!S`&4`+0!N`&\```!S`&4`+0!S`&4```!S`&L`+0!S`&L```!S
+M`&P`+0!S`&D```!S`&T`80`M`&X`;P``````<P!M`&$`+0!S`&4``````',`
+M;0!J`"T`;@!O``````!S`&T`:@`M`',`90``````<P!M`&X`+0!F`&D`````
+M`',`;0!S`"T`9@!I``````!S`'$`+0!A`&P```!S`'(`+0!B`&$`+0!C`'D`
+M<@!L``````!S`'(`+0!B`&$`+0!L`&$`=`!N``````!S`'(`+0!S`'``+0!C
+M`'D`<@!L``````!S`'(`+0!S`'``+0!L`&$`=`!N``````!S`'8`+0!F`&D`
+M``!S`'8`+0!S`&4```!S`'<`+0!K`&4```!S`'D`<@`M`',`>0``````=`!A
+M`"T`:0!N````=`!E`"T`:0!N````=`!H`"T`=`!H````=`!N`"T`>@!A````
+M=`!R`"T`=`!R````=`!T`"T`<@!U````=0!K`"T`=0!A````=0!R`"T`<`!K
+M````=0!Z`"T`=0!Z`"T`8P!Y`'(`;```````=0!Z`"T`=0!Z`"T`;`!A`'0`
+M;@``````=@!I`"T`=@!N````>`!H`"T`>@!A````>@!H`"T`8P!H`',`````
+M`'H`:``M`&,`:`!T``````!Z`&@`+0!C`&X```!Z`&@`+0!H`&L```!Z`&@`
+M+0!M`&\```!Z`&@`+0!S`&<```!Z`&@`+0!T`'<```!Z`'4`+0!Z`&$`````
+M````````@!!$```!````````@``P``!L;V<Q,```````````````````````
+M\#\```````#P/S,$````````,P0`````````````````````````````_P<`
+M``````````````````````````"```````````#_______\/`/_______P\`
+M``````#`VS\``````,#;/Q#X_____X]"$/C_____CT(```"`____?P```(#_
+M__]_`'B?4!-$TS]8LQ(?,>\?/0``````````_____________________P``
+M````````````````\#\```````#P/P`````````````````````````````P
+M0P```````#!#````````\/\```````#P?P$``````/!_`0``````\'_YSI?&
+M%(DU0#V!*60)DPC`580U:H#))<#2-9;<`FK\/_>9&'Z?JQ9`-;%WW/)Z\K\(
+M02Z_;'I:/P```````````````````(#_?P````````"`___<I]>YA69QL0U`
+M````````__\-0/<V0PR8&?:5_3\```````#@/P-E>'`````````````!%`#!
+M!4,`R@A#`,\(0P#Q!D,``````````````````,#__S7":"&BV@_)_S\UPF@A
+MHMH/R?X_````````\#\````````(0`@$"`@(!`@(``0,"``$#`@`````````
+M`/`_?P(UPF@AHMH/R3Y`________[W\````````0`````````)C`````````
+MF$````````#P?P``````````;&]G`&QO9S$P````97AP`'!O=P!A<VEN````
+M`&%C;W,`````<W%R=`````````````#P/P``````````````````````````
+M````````Y`JH`WP_&_=1+3@%/CT``-ZVG5>+/P4P^_X):S@]`("6WJYPE#\=
+MX9$,>/PY/0``/HXNVIH_&G!NGM$;-3T`P%GWV*V@/Z$```E1*AL]``!CQO?Z
+MHS\_]8'Q8C8(/0#`[UD>%Z<_VU3//QJ]%CT``,<"D#ZJ/X;3T,A7TB$]`$##
+M+3,RK3\?1-GXVWH;/0"@UG`1*+`_=E"O*(OS&ST`8/'L'YRQ/]154QX_X#X]
+M`,!E_1L5LS^59XP$@.(W/0!@Q8`GD[0_\Z5BS:S$+ST`@.E><P6V/Y]]H2//
+MPQ<]`*!*C7=KMS]Z;J`2Z`,</0#`Y$X+UK@_@DQ.S.4`.3T`0"0BM#.Z/S57
+M9S1P\38]`("G5+:5NS_'3G8D7@XI/0#@Z0(FZKP_R\LN@BG1ZSP`H&S!M$*^
+M/^E-C?,/Y24]`&!JL06-OS^G=[>BI8XJ/0`@/,6;;<`_1?KA[HV!,CT``-ZL
+M/@W!/Z[P@\M%BAX]`-!T%3^XP3_4_Y/Q&0L!/0#03P7^4<(_P'<H0`FL_CP`
+MX/0<,/?"/T%C&@W']3`]`%!Y#W"4PS]D<AIY/^D?/0"@M%-T*<0_-$N\Q0G.
+M/CT`P/[Z),K$/U%HYD)#("X]`#`)$G5BQ3\M%ZJS[-\P/0``]AH:\L4_$V$^
+M+1OO/ST``)`6HHW&/]"9EOPLE.T\```H;%@@QS_-5$!BJ"`]/0!0'/^5M,<_
+MQ3.1:"P!)3T`H,YFHC_(/Y\CAX;!QB`]`/!6#`[,R#_?H,^AM.,V/0#0Y^_?
+M6<D_Y>#_>@(@)#T`P-)''^G)/R`D\FP.,S4]`$`#BZ1NRC]_6RNYK.LS/0#P
+M4L6W`,L_<ZID3>/3T`</E\YHC+/W*@>"(C_S(]`$`NNN,&S#]\O57-%<LR
+M/0``;-2=D<P_<JSFE$:V#CT`D!-A^Q'-/PN6KI';-!H]`!#]JUF?S3]S;->\
+M(WL@/0!@?E(]%LX_Y),N\FF=,3T`H`+<+)K./X?Q@9#UZR`]`)"4=E@?SS\`
+MD!?JZZ\'/0!PVQ^`F<\_:);R]WUS(CT`T`E%6PK0/W\E4R-;:Q\]`.C[-X!(
+MT#_&$KFYDVH;/0"H(58QA]`_KO._?=IA,CT`N&H=<<;0/S+!,(U*Z34]`*C2
+MS=G_T#^`G?'V#C46/0!XPKXO0-$_B[HB0B`\,3T`D&D9EWK1/YE<+2%Y\B$]
+M`%BL,'JUT3]^A/]B/L\]/0"X.A7;\-$_WPX,(RY8)ST`2$)/#B;2/_D?I"@0
+M?A4]`'@1IF)BTC\2&0PN&K`2/0#80\!QF-(_>3>>K&DY*ST`@`MVP=72/[\(
+M#[[>ZCH]`#"[I[,,TS\RV+89F9(X/0!XGU`31-,_6+,2'S'O'ST``````,#;
+M/P``````P-L_``````!1VS\``````%';/P````#PZ-H_`````/#HVC\`````
+MX(#:/P````#@@-H_`````,`?VC\`````P!_:/P````"@OMD_`````*"^V3\`
+M````@%W9/P````"`7=D_`````%`#V3\`````4`/9/P`````@J=@_`````""I
+MV#\`````X%78/P````#@5=@_`````"C_US\`````*/_7/P````!@K]<_````
+M`&"OUS\`````F%_7/P````"87]<_`````-`/US\`````T`_7/P````"`P]8_
+M`````(##UC\`````J'K6/P````"H>M8_`````-`QUC\`````T#'6/P````!P
+M[-4_`````'#LU3\`````$*?5/P`````0I]4_`````"AEU3\`````*&75/P``
+M``!`(]4_`````$`CU3\`````T.34/P````#0Y-0_`````&"FU#\`````8*;4
+M/P````!H:]0_`````&AKU#\`````^"S4/P````#X+-0_`````'CUTS\`````
+M>/73/P````"`NM,_`````("ZTS\``````(/3/P``````@],_`````/A.TS\`
+M````^$[3/P````!X%],_`````'@7TS\`````<./2/P````!PX](_`````."R
+MTC\`````X++2/P````#8?M(_`````-A^TC\`````2$[2/P````!(3M(_````
+M`+@=TC\`````N!W2/P````"@\-$_`````*#PT3\`````B,/1/P````"(P]$_
+M`````'"6T3\`````<);1/P````!8:=$_`````%AIT3\`````N#_1/P````"X
+M/]$_`````*`2T3\`````H!+1/P``````Z=`_``````#IT#\`````V,+0/P``
+M``#8PM`_`````#B9T#\`````.)G0/P`````0<]`_`````!!ST#\`````<$G0
+M/P````!P2=`_`````,`FT#\`````P";0/P````"8`-`_`````)@`T#\`````
+MX+3//P````#@M,\_`````(!OSS\`````@&_//P`````@*L\_`````"`JSS\`
+M````P.3./P````#`Y,X_`````&"?SC\`````8)_./P``````6LX_``````!:
+MSC\`````D!O./P````"0&\X_`````##6S3\`````,-;-/P````#`E\T_````
+M`,"7S3\`````4%G-/P````!06<T_`````.`:S3\`````X!K-/P````!@X\P_
+M`````&#CS#\`````\*3,/P````#PI,P_`````'!MS#\`````<&W,/P``````
+M+\P_```````OS#\`````@/?+/P````"`]\L_``````#`RS\``````,#+/P``
+M`````.`_=&%N:`````!A=&%N`````&%T86XR````<VEN`&-O<P!T86X`8V5I
+M;`````!F;&]O<@```&9A8G,`````;6]D9@````!L9&5X<````%]C86)S````
+M7VAY<&]T``!F;6]D`````&9R97AP````7WDP`%]Y,0!?>6X`7VQO9V(```!?
+M;F5X=&%F=&5R````````%````+"@0P`=````M*!#`!H```"DH$,`&P```*B@
+M0P`?````@*I#`!,```"(JD,`(0````BI0P`.````N*!#``T```#`H$,`#P``
+M`!"I0P`0````&*E#``4```#(H$,`'@```""I0P`2````)*E#`"`````HJ4,`
+M#````"RI0P`+````-*E#`!4````\J4,`'````$2I0P`9````3*E#`!$```!4
+MJ4,`&````%RI0P`6````9*E#`!<```!LJ4,`(@```'2I0P`C````>*E#`"0`
+M``!\J4,`)0```("I0P`F````B*E#`'-I;F@`````8V]S:`````````````#P
+M?________^]_`````````(!#`$\`3@!/`%4`5``D````````````````````
+M_RG#8``````"````40```"2M`P`DE0,``````/\IPV``````#````!0```!X
+MK0,`>)4#``````#_*<-@``````T```"<`P``C*T#`(R5`P``````````````
+M```@[D,`**M#`````````````0```#BK0P!`JT,``````"#N0P``````````
+M`/____\`````0````"BK0P````````````````#H[4,`<*M#````````````
+M`0```("K0P"(JT,``````.CM0P```````````/____\`````0````'"K0P``
+M```````````````$[D,`N*M#`````````````@```,BK0P#4JT,`B*M#````
+M```$[D,``0````````#_____`````$````"XJT,`````````````````..Y#
+M``2L0P````````````,````4K$,`)*Q#`-2K0P"(JT,``````#CN0P`"````
+M`````/____\`````0`````2L0P````````````````!@[D,`5*Q#````````
+M`````@```&2L0P!PK$,`B*M#``````!@[D,``0````````#_____`````$``
+M``!4K$,```````#_`0#%_P$`4"$"`/`R`@!0-P(`=Q\#`($?`P"3'P,`I1\#
+M`+<?`P#)'P,`VQ\#`/`?`P!((`,`@B`#`)\@`P#*(`,`[R`#``0A`P`D(0,`
+M02$#`%,A`P!H(0,`CB$#`.(A`P#W(0,`5R(#`&DB`P">(@,`L"(#`,(B`P#<
+M(@,`^2(#``XC`P`C(P,`.",#`$(C`P!24T135G1."$!&@$&S-:[+8A2E&@$`
+M``!$.EQ0<F]J96-T<UQ7:6Y205)<<V9X7&)U:6QD7'-F>')A<C,R7%)E;&5A
+M<V5<<V9X<F%R+G!D8@`````*````%0$``.0`````````%0$`````````$```
+M\````"YT97AT)&1I`````/`0```W#@,`+G1E>'0D;6X`````)Q\#`#8$```N
+M=&5X="1X`%TC`P!=````+G1E>'0D>60``````#`#`&`"```N:61A=&$D-0``
+M``!@,@,`!````"XP,&-F9P``9#(#``0````N0U)4)%A#00````!H,@,`!```
+M`"Y#4E0D6$-!00```&PR`P`H````+D-25"180U4`````E#(#``0````N0U)4
+M)%A#6@````"8,@,`!````"Y#4E0D6$E!`````)PR`P`$````+D-25"1824%!
+M````H#(#``0````N0U)4)%A)04,```"D,@,`$````"Y#4E0D6$E#`````+0R
+M`P`$````+D-25"1825H`````N#(#``0````N0U)4)%A000````"\,@,`"```
+M`"Y#4E0D6%!8`````,0R`P`$````+D-25"184%A!````R#(#``0````N0U)4
+M)%A06@````#,,@,`!````"Y#4E0D6%1!`````-`R`P`$````+D-25"185%H`
+M````U#(#`-P"```N8V9G=6%R9`````"P-0,`9'4``"YR9&%T80``%*L#`'P!
+M```N<F1A=&$D<@````"0K`,`E````"YR9&%T821S>&1A=&$````DK0,`!`0`
+M`"YR9&%T821Z>GID8F<````HL0,`!````"YR=&,D24%!`````"RQ`P`$````
+M+G)T8R1)6EH`````,+$#``0````N<G1C)%1!00`````TL0,`!````"YR=&,D
+M5%I:`````#BQ`P",#```+GAD871A)'@`````Q+T#```!```N9&ED870D,@``
+M``#$O@,`(````"YD:61A="0S`````.2^`P",`0``+F1I9&%T)#0`````<,`#
+M`#`&```N9&ED870D-@````"@Q@,`D`$``"YD:61A="0W`````##(`P`T````
+M+F5D871A``!DR`,`*````"YI9&%T820R`````(S(`P`4````+FED871A)#,`
+M````H,@#`&`"```N:61A=&$D-```````RP,`(@L``"YI9&%T820V``````#@
+M`P#0#0``+F1A=&$```#0[0,`L````"YD871A)'(`@.X#`*@H`@`N8G-S````
+M```@!@",`0``+F1I9&%T)#4``````#`&`%`&```N<G-R8R0P,0````!0-@8`
+M@-D``"YR<W)C)#`R```````````````````````````B!9,9````````````
+M``````````````````````````4```#_____G1]#`"(%DQD!````7+%#````
+M`````````````````````````0```"(%DQD&````K+%#````````````````
+M`````````````0```/____\G'T,``````"\?0P`!````/1]#``(```!+'T,`
+M`P```%D?0P`$````9Q]#`/____^+'T,`(@63&0$```#<L4,`````````````
+M```````````````!````_____Z\?0P`B!9,9`0````BR0P``````````````
+M``````````````$```#_____P1]#`"(%DQD!````-+)#````````````````
+M`````````````0```/_____3'T,`(@63&0$```!@LD,`````````````````
+M```````````!````_____^4?0P`B!9,9`0```(RR0P``````````````````
+M``````````$````B!9,9!@```-RR0P````````````````````````````$`
+M``#_____^A]#```````"($,``0```!`@0P`"````'B!#``,````L($,`!```
+M`#H@0P#_____4B!#``````!G($,`(@63&0(````,LT,`````````````````
+M```````````!````````````````````4+-#``$```!8LT,``0```-#M0P``
+M````_____P`````$`````````/____^I($,`_____[0@0P`!````OR!#`"(%
+MDQD#````=+-#`````````````````````````````0```/____^,($,`````
+M`)0@0P`B!9,9`@```+"S0P````````````````````````````$```#_____
+M^2!#`"(%DQD!````Y+-#`````````````````````````````0```/____\N
+M(4,``````#DA0P`B!9,9`@```!"T0P````````````````````````````$`
+M``#_____U"!#``````#?($,`(@63&0(```!$M$,`````````````````````
+M```````!````_____PXA0P#_____&2%#`"(%DQD"````>+1#````````````
+M`````````````````0```/____]+(4,`(@63&0$```"LM$,`````````````
+M```````````````!````_____UTA0P`B!9,9`0```-BT0P``````````````
+M``````````````$```#_____<B%#``````"`(4,`(@63&0(````$M4,`````
+M```````````````````````!````(@63&04```!<M4,`````````````````
+M```````````!````_____Y@A0P``````IB%#``$```"T(4,``@```,(A0P`"
+M````TB%#`/_____L(4,`(@63&0$```"$M4,`````````````````````````
+M```!````_____W,B0P`B!9,9`0```+"U0P``````````````````````````
+M``$```#_____J")#`"(%DQD!````W+5#````````````````````````````
+M`0```/____^Z(D,`(@63&0$````(MD,````````````````````````````!
+M````_____V$B0P`B!9,9`0```#2V0P````````````````````````````$`
+M```B!9,9!P```(2V0P````````````````````````````$```#_____`2)#
+M```````,(D,``0```!<B0P`"````(B)#``,````M(D,`!````#LB0P`%````
+M22)#`/_____,(D,`(@63&0$```"\MD,````````````````````````````!
+M`````````.CM0P``````_____P`````,````(!U!``````!0[T$``````!2W
+M0P`"````(+=#`.BV0P`0````!.Y#``````#_____``````P```#P'$$`````
+M``$````"`````@```&BW0P#_____```````````M(T,`_____P``````````
+M!.Y#``````!\U$$`0```````````````H=1!`"(%DQD#````4+=#``$````\
+MMT,``````````````````0`````````"`````P````(```#`MT,```````3N
+M0P``````+:M!`$```````````````%*K00#_____``````````#F(D,``0``
+M`/$B0P#_____`````"(%DQD$````X+=#``$```"LMT,`````````````````
+M`0```/____\#(T,`(@63&0$````DN$,````````````````````````````!
+M````_____Q@C0P`B!9,9`0```%"X0P````````````````````````````$`
+M````````_O___P````#0____`````/[___\`````K.9!``````#^____````
+M`-3___\`````_O___P`````DYT$``````/[___\`````R/___P````#^____
+M<N=!`)OG00``````_O___P````#8____`````/[___^OZ4$`PNE!``````#^
+M____`````,S___\`````_O___Z?N00"[[D$``````%#O00``````++E#``,`
+M```\N4,`(+=#`.BV0P``````..Y#``````#_____``````P````0[T$`_O__
+M_P````#0____`````/[___\`````I3!"``````!J,$(`=#!"`/[___\`````
+MJ/___P````#^____`````.(F0@``````-R9"`$$F0@#^____`````-C___\`
+M````_O___W0N0@!X+D(``````/[___\`````V/___P````#^____`"5"``DE
+M0@!```````````````"))T(`_____P````#_____`````````````````0``
+M``$```#DN4,`(@63&0(```#TN4,``0````2Z0P`````````````````!````
+M`````/[___\`````T/___P````#^____FR]"`)\O0@``````4.]!``````!L
+MND,``@```'BZ0P#HMD,``````&#N0P``````_____P`````,````0"5"````
+M``#^____`````-3___\`````_O___P`````G=4(``````.3___\`````U/__
+M_P````#^____6W5"`%]U0@``````Y/___P````#4____`````/[___\`````
+M_'="``````#D=T(`]'="`/[___\`````U/___P````#^____`````-E^0@``
+M````_O___P````#4____`````/[___\`````*G]"``````#^____`````-C_
+M__\`````_O___P````!)AD(``````/[___\`````V/___P````#^____````
+M`&^00@``````_O___P````#8____`````/[___\`````>X]"``````#^____
+M`````-C___\`````_O___P````#<CT(``````/[___\`````V/___P````#^
+M____`````">00@``````_O___P````#4____`````/[___\`````NJ%"````
+M``#^____`````-3___\`````_O___P````!,MD(``````/[___\`````V/__
+M_P````#^____`````/6P0@``````Y/___P````"T____`````/[___\`````
+MDKY"``````#^____`````-3___\`````_O___P````#ENT(``````/[___\`
+M````S/___P````#^____`````"3`0@``````_O___P````#4____`````/[_
+M__\`````0LA"``````#^____`````-#___\`````_O___P````"1YT(`````
+M`/[___\`````Q/___P````#^____`````!SI0@```````````._H0@#^____
+M`````-C___\`````_O___^'L0@#][$(``````/[___\`````S/___P````#^
+M____`````$GW0@``````_O___P````#0____`````/[___\`````!OM"````
+M``#^____`````-3___\`````_O___P````"<^T(``````/[___\`````U/__
+M_P````#^____`````"3]0@``````_O___P````#8____`````/[___]9&T,`
+M;!M#``$````@4P,`N`P&`*`@!@"$OP,`H,8#`````````````0```#!3`P"\
+M#`8`3"`&`#"_`P!TQP,````````````!````0%,#`,`,!@`\(`8`(+\#`)S'
+M`P````````````$```!04P,`Q`P&```@!@#DO@,`K,<#`````````````0``
+M`&!3`P#(#`8`="`&`%B_`P#@QP,````````````!````@%,#`,P,!@!T(08`
+M6,`#``3(`P````````````$```#@5`,`[`P&`)@@!@!\OP,`',@#````````
+M`````0```/!4`P#P#`8`-"`&`!B_`P`DR`,`````````````````````````
+M`````````````````````````````+K$`P`DQ0,`CL0#`*+$`P`RQ0,`SL0#
+M`.;$`P`"Q0,`:,4#`%3%`P!$Q0,`#,4#``````"(Q@,``````&+$`P!VQ`,`
+M3L0#``````#NPP,`_L,#``[$`P#BPP,`+,0#`$#$`P#,PP,`LL,#`![$`P``
+M````ML4#``3&`P#NQ0,`W,4#`,K%`P!ZQ0,`H,4#`(C%`P``````=L8#````
+M``"FP@,`NL(#`,K"`P#:P@,`[L(#``##`P`2PP,`DL(#`###`P!&PP,`4L,#
+M`&C#`P!VPP,`A,,#`)##`P">PP,`A,(#`';"`P!JP@,`6L(#`$K"`P`\P@,`
+M,,(#`"C"`P`8P@,`"L(#`/[!`P#LP0,`W,$#`,S!`P#`P0,`KL$#`)K!`P"(
+MP0,`>L$#`&C!`P!:P0,`3L$#`#3!`P`BP0,`$,$#``#!`P#PP`,`W,`#`,K`
+M`P"ZP`,`KL`#`)S``P",P`,`?L`#`![#`P!PP`,``````&3&`P`NQ@,`%L8#
+M`%3&`P!"Q@,`````````4VAO=U=I;F1O=P````!'971$;&=)=&5M`````$5N
+M86)L95=I;F1O=P````!39717:6YD;W=497AT5P````!'971087)E;G0```!3
+M9717:6YD;W=0;W,`````4V5T1&QG271E;51E>'17````1V5T4WES=&5M365T
+M<FEC<P````!'971#;&EE;G1296-T````1V5T5VEN9&]W4F5C=````$=E=%=I
+M;F1O=TQO;F=7`````%-E=%=I;F1O=TQO;F=7`````%-E=%!R;V-E<W-$969A
+M=6QT3&%Y;W5T````1V5T5VEN9&]W````3&]A9%-T<FEN9U<```!/96U4;T-H
+M87)"=69F00````!#:&%R57!P97)7`````$1E9E=I;F1O=U!R;V-7`````%)E
+M9VES=&5R0VQA<W-%>%<`````0W)E871E5VEN9&]W17A7````27-7:6YD;W<`
+M````1&5S=')O>5=I;F1O=P```%5P9&%T95=I;F1O=P````!-87!7:6YD;W=0
+M;VEN=',```!#;W!Y4F5C=`````!,;V%D0W5R<V]R5P```%-E;F1-97-S86=E
+M5P````!'971$0P```%)E;&5A<V5$0P```$UE<W-A9V5";WA7````1FEN9%=I
+M;F1O=T5X5P```$=E=$-L87-S3F%M95<```!#;W!Y26UA9V4```!W=G-P<FEN
+M=&97`````$=E=$UE<W-A9V57````5')A;G-L871E365S<V%G90````!$:7-P
+M871C:$UE<W-A9V57`````%!E96M-97-S86=E5P````!0;W-T365S<V%G95<`
+M````5V%I=$9O<DEN<'5T261L90````!)<U=I;F1O=U9I<VEB;&4```!$:6%L
+M;V=";WA087)A;5<```!%;F1$:6%L;V<```!'971$;&=)=&5M5&5X=%<```!3
+M96YD1&QG271E;4UE<W-A9V57````4V5T1F]C=7,`````4V5T1F]R96=R;W5N
+M9%=I;F1O=P```$=E=%-Y<T-O;&]R````3&]A9$)I=&UA<%<```!,;V%D26-O
+M;E<```!$97-T<F]Y26-O;@```$ES1&EA;&]G365S<V%G95<`````0W)E871E
+M0V]M<&%T:6)L94)I=&UA<`````!#<F5A=&5#;VUP871I8FQE1$,`````1&5L
+M971E1$,`````1&5L971E3V)J96-T`````$=E=$1E=FEC94-A<',```!396QE
+M8W1/8FIE8W0`````4W1R971C:$)L=`````!#<F5A=&5$24)396-T:6]N````
+M`$=E=$]B:F5C=%<`````1V5T3W!E;D9I;&5.86UE5P````!'9713879E1FEL
+M94YA;657`````$-O;6U$;&=%>'1E;F1E9$5R<F]R`````$]P96Y0<F]C97-S
+M5&]K96X`````061J=7-T5&]K96Y0<FEV:6QE9V5S````4V5T1FEL95-E8W5R
+M:71Y5P````!,;V]K=7!0<FEV:6QE9V5686QU95<```!!;&QO8V%T94%N9$EN
+M:71I86QI>F53:60`````1G)E95-I9````$-H96-K5&]K96Y-96UB97)S:&EP
+M`````%)E9T-L;W-E2V5Y````4F5G0W)E871E2V5Y17A7````4F5G3W!E;DME
+M>45X5P```%)E9U%U97)Y5F%L=65%>%<`````4F5G4V5T5F%L=65%>%<`````
+M4TA'971-86QL;V,```!32$=E=%!A=&A&<F]M241,:7-T5P````!32$)R;W=S
+M949O<D9O;&1E<E<`````4TA&:6QE3W!E<F%T:6]N5P````!3:&5L;$5X96-U
+M=&5%>%<```!32$=E=$9I;&5);F9O5P````!32$=E=$9O;&1E<DQO8V%T:6]N
+M````4TA#:&%N9V5.;W1I9GD`````0W)E871E4W1R96%M3VY(1VQO8F%L````
+M0V]#<F5A=&5);G-T86YC90````!#3%-)1$9R;VU3=')I;F<```!/;&5);FET
+M:6%L:7IE````3VQE56YI;FET:6%L:7IE````4TA!=71O0V]M<&QE=&4`````
+M26YI=$-O;6UO;D-O;G1R;VQS17@`````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````_RG#8`````!8R`,``0``````````````
+M````````````````<V9X<F%R+F5X90``H,@#````````````YM$#```P`P#8
+MR@,```````````"RT@,`.#(#`````````````````````````````,L#`!#+
+M`P`@RP,`,LL#`$;+`P!8RP,`9LL#`'3+`P"(RP,`G,L#`*K+`P"XRP,`RLL#
+M`-[+`P#RRP,`_LL#``S,`P`<S`,`*,P#`#3,`P!(S`,`6,P#`&K,`P"`S`,`
+MELP#`*+,`P"TS`,`Q,P#`-3,`P#LS`,``,T#``[-`P`DS0,`.,T#`$C-`P!6
+MS0,`:,T#`'[-`P",S0,`ILT#`*[-`P"^S0,`U,T#`.;-`P#VS0,`!,X#`!3.
+M`P`DS@,`/LX#`$[.`P!BS@,`?LX#`);.`P"NS@,`QLX#`-+.`P#@S@,`],X#
+M``K/`P`:SP,`+L\#`#[/`P!@SP,`@L\#`)K/`P"TSP,`SL\#`.;/`P#RSP,`
+M!-`#`!K0`P`PT`,`/M`#`$[0`P!<T`,`;-`#`'K0`P"*T`,`G-`#`+30`P#*
+MT`,`VM`#`.K0`P#ZT`,`#-$#`"+1`P`VT0,`2-$#`&+1`P!^T0,`CM$#`)S1
+M`P"NT0,`P-$#`-+1`P#^U0,`[-4#`-S5`P#0U0,`P-4#`*[5`P"^T@,`T-(#
+M`.#2`P#RT@,``M,#`!33`P`PTP,`1-,#``P!^TP,`D-,#`*K3`P#`TP,`
+MVM,#`/#3`P`$U`,`$-0#`"#4`P!(U`,`5-0#`&+4`P!PU`,`>M0#`(S4`P"H
+MU`,`OM0#`-34`P#>U`,`ZM0#`/;4`P`$U0,`%M4#`";5`P`ZU0,`2M4#`%S5
+M`P!HU0,`>M4#`)35`P`2U@,``````*#2`P".T@,`<-(#`%#2`P`RT@,`'M(#
+M``S2`P``T@,`]-$#```````"`D=E=$QA<W1%<G)O<@``<P13971,87-T17)R
+M;W(``%X!1F]R;6%T365S<V%G95<``,`!1V5T0W5R<F5N=%!R;V-E<W,`W0!$
+M979I8V5);T-O;G1R;VP`:@13971&:6QE5&EM90!2`$-L;W-E2&%N9&QE`($`
+M0W)E871E1&ER96-T;W)Y5P```P1296UO=F5$:7)E8W1O<GE7``"/`$-R96%T
+M949I;&57`-8`1&5L971E1FEL95<`DP!#<F5A=&5(87)D3&EN:U<`80)'9713
+M:&]R=%!A=&A.86UE5P`/`D=E=$QO;F=0871H3F%M95<``&,#36]V949I;&57
+M`/,!1V5T1FEL951Y<&4`9`)'9713=&1(86YD;&4``"4%5W)I=&5&:6QE`,`#
+M4F5A9$9I;&4``%<!1FQU<VA&:6QE0G5F9F5R<P``4P13971%;F1/9D9I;&4`
+M`&8$4V5T1FEL95!O:6YT97(``&$$4V5T1FEL94%T=')I8G5T97-7``#J`4=E
+M=$9I;&5!='1R:6)U=&5S5P``+@%&:6YD0VQO<V4`.0%&:6YD1FER<W1&:6QE
+M5P``10%&:6YD3F5X=$9I;&57`*0"1V5T5F5R<VEO;D5X5P"_`4=E=$-U<G)E
+M;G1$:7)E8W1O<GE7``#[`4=E=$9U;&Q0871H3F%M95<``%P!1F]L9%-T<FEN
+M9U<`%`)'971-;V1U;&5&:6QE3F%M95<``!@"1V5T36]D=6QE2&%N9&QE5P``
+M3@%&:6YD4F5S;W5R8V57`&(!1G)E94QI8G)A<GD`10)'9710<F]C061D<F5S
+M<P``P0%'971#=7)R96YT4')O8V5S<TED`!D!17AI=%!R;V-E<W,`DP139714
+M:')E861%>&5C=71I;VY3=&%T90"R!%-L965P`#\#3&]A9$QI8G)A<GE7``!P
+M`D=E=%-Y<W1E;41I<F5C=&]R>5<`9`!#;VUP87)E4W1R:6YG5P``$`!!;&QO
+M8T-O;G-O;&4``%\!1G)E94-O;G-O;&4`%P!!='1A8VA#;VYS;VQE`"0%5W)I
+M=&5#;VYS;VQE5P!&`D=E=%!R;V-E<W-!9F9I;FET>4UA<VL``+4`0W)E871E
+M5&AR96%D``"9!%-E=%1H<F5A9%!R:6]R:71Y`.("26YI=&EA;&EZ94-R:71I
+M8V%L4V5C=&EO;@#N`$5N=&5R0W)I=&EC86Q396-T:6]N```Y`TQE879E0W)I
+M=&EC86Q396-T:6]N``#1`$1E;&5T94-R:71I8V%L4V5C=&EO;@!9!%-E=$5V
+M96YT```/!%)E<V5T179E;G0``/X#4F5L96%S95-E;6%P:&]R90``^01786ET
+M1F]R4VEN9VQE3V)J96-T`(4`0W)E871E179E;G17``"N`$-R96%T95-E;6%P
+M:&]R95<``'<"1V5T4WES=&5M5&EM90"^!%-Y<W1E;51I;654;U1Z4W!E8VEF
+M:6-,;V-A;%1I;64`T`14>E-P96-I9FEC3&]C86Q4:6UE5&]3>7-T96U4:6UE
+M`+T$4WES=&5M5&EM951O1FEL951I;64``"0!1FEL951I;654;TQO8V%L1FEL
+M951I;64`1@-,;V-A;$9I;&54:6UE5&]&:6QE5&EM90`E`49I;&54:6UE5&]3
+M>7-T96U4:6UE``!R`4=E=$-026YF;P#^`DES1$)#4TQE861">71E``!G`TUU
+M;'1I0GET951O5VED94-H87(`$057:61E0VAA<E1O375L=&E">71E`+,"1VQO
+M8F%L06QL;V,`5`-,;V-K4F5S;W5R8V4``+X"1VQO8F%L3&]C:P``Q0)';&]B
+M86Q5;FQO8VL``+H"1VQO8F%L1G)E90``00-,;V%D4F5S;W5R8V4``+$$4VEZ
+M96]F4F5S;W5R8V4``$T$4V5T0W5R<F5N=$1I<F5C=&]R>5<``-\!1V5T17AI
+M=$-O9&50<F]C97-S```#`D=E=$QO8V%L5&EM90``DP)'9714:6-K0V]U;G0`
+M`%<#36%P5FEE=T]F1FEL90#6!%5N;6%P5FEE=T]F1FEL90",`$-R96%T949I
+M;&5-87!P:6YG5P``>0-/<&5N1FEL94UA<'!I;F=7``"'`4=E=$-O;6UA;F1,
+M:6YE5P!7!%-E=$5N=FER;VYM96YT5F%R:6%B;&57`!T!17AP86YD16YV:7)O
+M;FUE;G13=')I;F=S5P"%`D=E=%1E;7!0871H5P``8`--;W9E1FEL945X5P`&
+M`D=E=$QO8V%L94EN9F]7``"7`D=E=%1I;65&;W)M8717``#(`4=E=$1A=&5&
+M;W)M8717```S`D=E=$YU;6)E<D9O<FUA=%<``$M%4DY%3#,R+F1L;```(0!'
+M9&EP06QL;V,`[0!'9&EP1G)E90``-@!'9&EP0VQO;F5);6%G90``F`!'9&EP
+M1&ES<&]S94EM86=E``!1`$=D:7!#<F5A=&5":71M87!&<F]M4W1R96%M``!2
+M`$=D:7!#<F5A=&5":71M87!&<F]M4W1R96%M24--`%\`1V1I<$-R96%T94A"
+M251-05!&<F]M0FET;6%P`'4"1V1I<&QU<U-T87)T=7```'0"1V1I<&QU<U-H
+M=71D;W=N`&=D:7!L=7,N9&QL`+$#4F%I<V5%>&-E<'1I;VX``',"1V5T4WES
+M=&5M26YF;P#O!%9I<G1U86Q0<F]T96-T``#Q!%9I<G1U86Q1=65R>0``/0-,
+M;V%D3&EB<F%R>45X00``!`-)<U!R;V-E<W-O<D9E871U<F50<F5S96YT```#
+M27-$96)U9V=E<E!R97-E;G0`TP15;FAA;F1L961%>&-E<'1I;VY&:6QT97(`
+M`*4$4V5T56YH86YD;&5D17AC97!T:6]N1FEL=&5R`&,"1V5T4W1A<G1U<$EN
+M9F]7`*<#475E<GE097)F;W)M86YC94-O=6YT97(`Q0%'971#=7)R96YT5&AR
+M96%D260``'D"1V5T4WES=&5M5&EM94%S1FEL951I;64`YP));FET:6%L:7IE
+M4TQI<W1(96%D`,`$5&5R;6EN871E4')O8V5S<P``&`12=&Q5;G=I;F0`Z@!%
+M;F-O9&50;VEN=&5R`.,"26YI=&EA;&EZ94-R:71I8V%L4V5C=&EO;D%N9%-P
+M:6Y#;W5N=`#%!%1L<T%L;&]C``#'!%1L<T=E=%9A;'5E`,@$5&QS4V5T5F%L
+M=64`Q@14;'-&<F5E`#X#3&]A9$QI8G)A<GE%>%<``*@#475E<GE097)F;W)M
+M86YC949R97%U96YC>0`7`D=E=$UO9'5L94AA;F1L945X5P``$P)'971-;V1U
+M;&5&:6QE3F%M94$``&@!1V5T04-0``#/`DAE87!&<F5E``#+`DAE87!!;&QO
+M8P#2`DAE87!294%L;&]C`&D"1V5T4W1R:6YG5'EP95<``"T#3$--87!3=')I
+M;F=7```S`49I;F1&:7)S=$9I;&5%>$$``$,!1FEN9$YE>'1&:6QE00`*`TES
+M5F%L:61#;V1E4&%G90`W`D=E=$]%34-0``"&`4=E=$-O;6UA;F1,:6YE00#:
+M`4=E=$5N=FER;VYM96YT4W1R:6YG<U<``&$!1G)E945N=FER;VYM96YT4W1R
+M:6YG<U<`2@)'9710<F]C97-S2&5A<```AP139713=&1(86YD;&4``-0"2&5A
+M<%-I>F4``)H!1V5T0V]N<V]L94-0``"L`4=E=$-O;G-O;&5-;V1E``!G!%-E
+M=$9I;&50;VEN=&5R17@``,H`1&5C;V1E4&]I;G1E<@``````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````W0Z)%W:3/T/'T#*PBI%^)70?BJFA+!+ARLB`%0#R
+MRD______`````#4```"':%>M`0```#D```!^Y=<\`@```'@````_B6DW`P``
+M`!T```!]!P8.!@```)4```#(72P<!````-@````!YX6\!0````0$!@8```<'
+M!`0```0$``!4.T,`'P```!P````?````'@```!\````>````'P```!\````>
+M````'P```!X````?``````$"`P0%!@<("@P.$!08'"`H,#A`4&!P@*#`X```
+M`````````0$!`0("`@(#`P,#!`0$!`4%!04`````!`````(````"`````@``
+M``(````"`````@````(````"`````@````(````"`````@````(````"````
+M`@````X`````````#``````$"!`@0(#``@(#!`4&!@8`````X$ZV*&0```"X
+M1D,`/6;WPF4```#,1D,`"$D8YF8```#@1D,`I+G"7F<```#P1D,`D@:5CF@`
+M````1T,`,61B6&D````81T,`,7X*&6H````L1T,`"98Z?FX```!$1T,`6,VT
+M3F\```!<1T,`OS>5`'````!L1T,`0GT137$```"$1T,`V#`>?'(```"81T,`
+M6`8D8G@```"L1T,`+WM/9'D```#`1T,`Z2]#97H```#41T,`R(GOK'L```#H
+M1T,`C*;B7'P```#\1T,`>["%#8,````82$,`2D2H:(0````L2$,`L.22_(4`
+M```\2$,`@ZZ"PH8```!02$,`@JSNC8P```!D2$,`[C:ZO8T```!X2$,`\,-U
+M/XX```",2$,`+$`GL8\```"D2$,`$8>6*)````"\2$,`I+I*9I8```#(2$,`
+M2[@9^)<```#42$,`'VK/2Y@```#D2$,`8KBO#YD```#P2$,`C6I:H)H````$
+M24,`DHDBRJ`````424,`#39P>Z$````H24,`OF#T.Z(````X24,`@&J\3JH`
+M``!(24,`#NP:4*L```!824,`X+E!OZP```!H24,`IJ?26:T```!X24,`(:)!
+MY:X```"(24,`[LV#$*\```"824,`_KG@M;````"H24,`8G`61+0```"X24,`
+MS*+":;D```#(24,`)O-)Z+H```#<24,`)IYV*[X```#T24,`K"1@@+\````(
+M2D,`ZS6Q[,,````@2D,`>IU=O<@````T2D,`7:^1R\D```!(2D,`&B^NILH`
+M``!<2D,`2)#K5](```!T2D,`F8#4WMP```"$2D,`P[TON=T```"<2D,`0'CZ
+MN-X```"T2D,`AXS7&N$```#(2D,`.)0-[.8```#82D,`7GR0H.<```#D2D,`
+MA4"07?````#T2D,``S&LEO$````(2T,`,=)X-``````82T,`!"[:CP`````H
+M2T,`.!&.A64````\2T,`BJ[`W6<```!82T,`_2+C9&L```!P2T,`WU-^!P$`
+M``"02T,`2OU`X`(```"@2T,`Y<P\60````"T2T,`]655$`````#,2T,`?Z6=
+M27(```#D2T,``:&_/7,````(3$,`/28!.'0````L3$,`),NF#FP```!,3$,`
+MH$)F@&\```!H3$,`TV&4NVX```"$3$,`U0M_EVT```"D3$,`&,4B0'````#`
+M3$,`[_`?-'$```#@3$,`F7R;AP``````34,`G7!!5@`````034,`\E(&+@$`
+M```D34,`H>'*V0(````T34,`#6\H=64```!(34,`&UFW+F<```!D34,`(HM=
+MPP````!\34,`K,_@-P````"034,`]02GQ&4```"H34,`^`;N"@$```#(34,`
+MG!IF=P(```#<34,`-0>8/P````#T34,`[O.U-@`````(3D,`ZLG8!0$````<
+M3D,`X4BS]0(````P3D,`6`>%=`````!(3D,`B^(<O@````!<3D,`+O$^"64`
+M``!P3D,`+('73F<```"03D,`[,!;&6@```"L3D,`5^\P.P$```#,3D,`2Q`X
+MB@(```#@3D,`8P```/A.0P#H`P`````````````#````2#A#````````````
+M(%%#`#!10P`\44,`2%%#`%110P!D44,`>%%#`(110P"844,`J%%#`+Q10P#0
+M44,`Y%%#`/110P#_____````````````````=9@``+$9OT1.YD"[``````$`
+M```!``````````````#_____````````````````(`63&0``````````````
+M``(````,````"````/____\````````````````!(```````````````````
+M``````````````````````````````````````````````````````(@```!
+M````````````````````````````````````````````````````````````
+M`````````B````(`````````````````````````````````````````````
+M``````"0:4,``0`````````!```````````````!````````````````````
+M```````````8Z$,`````````````````&.A#`````````````````!CH0P``
+M```````````````8Z$,`````````````````&.A#````````````````````
+M````````4.U#````````````$&Q#`)!M0P`@94,`````````````````````
+M````````````6.=#`"#K0P!#````BF9#``$"!`@`````I`,``&"">8(A````
+M`````*;?````````H:4```````"!G^#\`````$!^@/P`````J`,``,&CVJ,@
+M``````````````````````````````"!_@```````$#^````````M0,``,&C
+MVJ,@``````````````````````````````"!_@```````$'^````````M@,`
+M`,^BY*(:`.6BZ*);``````````````````````"!_@```````$!^H?X`````
+M404``%':7MH@`%_::MHR``````````````````````"!T]C>X/D``#%^@?X`
+M````````````````````````````````````````````````````````````
+M````````````````````````````````$!`0$!`0$!`0$!`0$!`0$!`0$!`0
+M$!`0$!`````````@("`@("`@("`@("`@("`@("`@("`@("`@(```````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M``````````````````````!A8F-D969G:&EJ:VQM;F]P<7)S='5V=WAY>@``
+M`````$%"0T1%1D=(24I+3$U.3U!14E-455976%E:````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````````````````````````!`0$!`0$!`0$!`0$!`0$!`0
+M$!`0$!`0$!`0````````("`@("`@("`@("`@("`@("`@("`@("`@("``````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M``````````````````!A8F-D969G:&EJ:VQM;F]P<7)S='5V=WAY>@``````
+M`$%"0T1%1D=(24I+3$U.3U!14E-455976%E:````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M```````````````````````````````````````````@ZT,`+@```"X`````
+M````1.U#``071@`$%T8`!!=&``071@`$%T8`!!=&``071@`$%T8`!!=&`']_
+M?W]_?W]_2.U#``@71@`(%T8`"!=&``@71@`(%T8`"!=&``@71@#^____````
+M`````````````0```````````````````/[___\````````````````$54,`
+M`````"X_05<T4D%27T58251`0``$54,``````"X_059E>&-E<'1I;VY`<W1D
+M0$``!%5#```````N/T%68F%D7V%L;&]C0'-T9$!```150P``````+C]!5G1Y
+M<&5?:6YF;T!```150P``````+C]!5F)A9%]A<G)A>5]N97=?;&5N9W1H0'-T
+M9$!````$54,``````"X_059B861?97AC97!T:6]N0'-T9$!`````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````````";>00!8WD$`$MY!`!S>00!BWD$`,-Y!`#K>00!$
+MWD$`@-Y!`';>00!LWD$`3MY!``````#!Y$$``````.W=00#WW4$`TMU!````
+M``"6W4$`H-U!`*K=00",W4$`OMU!`,C=00""W4$`9]U!`+3=00``````N=Y!
+M`.'>00#7WD$`S=Y!`,/>00"*WD$`K]Y!`*7>00``````IN1!``````#'W$$`
+MT=Q!`-O<00#EW$$`[]Q!`/G<00`#W4$`O=Q!`!?=00`AW4$`*]U!`#7=00`_
+MW4$`2=U!`%/=00!=W4$`L]Q!`*G<00"?W$$`E=Q!`(O<00"!W$$`=]Q!`&W<
+M00!CW$$`6=Q!`$_<00!%W$$`.]Q!`#'<00`GW$$`'=Q!`!/<00`)W$$`_]M!
+M`/7;00#KVT$`X=M!`-?;00#-VT$`P]M!`+G;00"OVT$`I=M!`)O;00"1VT$`
+MA]M!`'W;00!SVT$`:=M!``W=00!.VT$``````"3?00`&WT$`Z]Y!`!K?00`0
+MWT$`````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`0`%`+`%`(!```"``P```&```(`%````J```@`8```#H``"`#@```$@!`(`8
+M````8`$`@````````````````````@!E````>`$`@&8```"0`0"`````````
+M```````````'``$```"H`0"``@```,`!`(`#````V`$`@`0```#P`0"`!0``
+M``@"`(`&````(`(`@`<````X`@"`````````````````!@```"P&`(!0`@"`
+M_`4`@&@"`(`6!@"`@`(`@.@%`("8`@"`R@4`@+`"`("X!0"`R`(`@```````
+M````````````"@`'````X`(`@`@```#X`@"`"0```!`#`(`*````*`,`@`L`
+M``!``P"`#````%@#`(`-````<`,`@`X```"(`P"`#P```*`#`(`0````N`,`
+M@````````````````````0!D````T`,`@````````````````````0`!````
+MZ`,`@````````````````````0`)!`````0``````````````````````0`)
+M!```$`0``````````````````````0`)!```(`0`````````````````````
+M`0`)!```,`0``````````````````````0`)!```0`0`````````````````
+M`````0`)!```4`0``````````````````````0`)!```8`0`````````````
+M`````````0`)!```<`0``````````````````````0`)!```@`0`````````
+M`````````````0`)!```D`0``````````````````````0`)!```H`0`````
+M`````````````````0`)!```L`0``````````````````````0`)!```P`0`
+M`````````````````````0`)!```T`0``````````````````````0`)!```
+MX`0``````````````````````0`)!```\`0``````````````````````0`)
+M!`````4``````````````````````0`)!```$`4`````````````````````
+M`0`)!```(`4``````````````````````0`)!```,`4`````````````````
+M`````0`)!```0`4``````````````````````0`)!```4`4`````````````
+M`````````0`)!```8`4``````````````````````0`)!```<`4`````````
+M`````````````0`)!```@`4``````````````````````0`)!```D`4`````
+M`````````````````0`)!```H`4``%`V!@!%"P````````````"8008`J14`
+M````````````2%<&`&@%`````````````+!<!@"H"`````````````!8908`
+MJ`X``````````````'0&`&@$`````````````&AX!@"H$``````````````0
+MB08`J"4`````````````N*X&`'$]`````````````(CU!@"&`@``````````
+M``!8\P8`.@$`````````````F/0&`.P``````````````"CR!@`N`0``````
+M``````#P[@8`.`,`````````````F.P&`%("`````````````&C_!@#B`0``
+M``````````!0`0<`S`$`````````````(`,'`+@!`````````````-@$!P!&
+M`0`````````````@!@<`1@0`````````````:`H'`&8!`````````````-`+
+M!P!2`0`````````````H#0<`"@$`````````````.`X'`+P`````````````
+M`/@.!P#6```````````````P[`8`:```````````````$/@&`%,'````````
+M``````,`4`!.`$<`"`!3`%0`00!2`%0`1`!,`$<`#@!2`$4`4`!,`$$`0P!%
+M`$8`20!,`$4`1`!,`$<`"0!2`$4`3@!!`$T`10!$`$P`1P`,`$<`10!4`%``
+M00!3`%,`5P!/`%(`1``Q``H`3`!)`$,`10!.`%,`10!$`$P`1P`*`$$`4P!+
+M`$X`10!8`%0`5@!/`$P```````````````````")4$Y'#0H:"@````U)2$12
+M````70```2X(`@```&/2B4\````$9T%-00``L8\+_&$%````(&-(4DT``'HF
+M``"`A```^@```(#H``!U,```ZF```#J8```7<)RZ43P````)<$A9<P``"Q(`
+M``L2`=+=?OP````'=$E-10?A"@06'3.,"3^Y````!F)+1T0```````#Y0[M_
+M```*EDE$051XVNU=2XLDQQ&.B,S*K&?7S,CSGN[>.4BZ&.MA#/(B+",,!J&3
+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
+M"Q%<""X$%X(+P87@0@07@@O!A>!"<"&X$,&%X$)P(;@07`@N1'`AN!!<""X$
+M%X(+$5P(+@07@@O!A6++)5LB4@PN!!>""\&%X$)P(8(+P87@0G`AN!!<B.!"
+M<"&X$%P(+@07(K@07`@N!!>""\&%""X4H/\#9IGG&MFY;-<`````245.1*Y"
+M8((`````````*````!`````@`````0`(`````````0``$@L``!(+`````0``
+M``$````````D-)L`)S6:`"DZF@`W)\H`.BG2`#LIU@`\*MH`/BO>`"U!FP`S
+M2K<`,TNX`#)-N@`S3KL`,U&_`#-3OP`Z5;D`,UC%`#9ESP`\;LT`-F;0`#9F
+MT0`U:M0`-FO4`#5OV``U;]H`,W3>`#1RW``T=]\`-7C?`#]UV0`S=^$`,WCA
+M`#=XX``W>N``-WSD`#E^Y0!)-;H`5#S@`%8]Y0!90.L`0';;`%ERS`!I3,<`
+M>5?F`'M9Z0!!D"H`2K$P`$NT,0!;ICL`4[,J`%:Y*P!7O"P`4KTV`&F]1`!9
+MP"T`7<4P`%;2-P!:W#H`6]\[`%SB.P!=Y3L`:\%%`&C%1``VG=8`(X;S`#J`
+MYP`Z@.@`.H'J`#N!Z@`[@NH`/(/K`#Z%[0`_ANX`(;+-`#[C]0`Z\ND`2(';
+M`$**\@!$CO4`4H7A`%>1Z`!^I-@`:Z/N`&ND[@!BI/X`8Z;_`%[NZ@#$738`
+MX5XJ`.MB+`#O8RT`ZW0^`/1E+@#X92X`\'<_`/EX/P#-?DT`@U_P`.2'-P#K
+MBSD`[XXZ`/20.P#XDSP`ZY!8`/"36@#YD58`JXGC`+./[0"VD?``N)/S`+F4
+M]0"DQ^0`L]_\`+3Q_P"[\?\`O?/_`,GU_P``````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M``````````````````````````````````!/3DE(1D0!441&1TE.3P``244C
+M(!H;`DT;&A\C0TD``$(=&1<5$@,3$A06&!PD```B$0\-"PH)$`H+#`X1(0!P
+M*5565E965E965E9651YP4E!S='1T='1T='1T='-04BI4<G)R<G)R<G)R<G)R
+M4RH`<75U=75U=75U=75U=7$````Y,#XR65]I8P0G+6L`````.B\V,UI<:&0%
+M)BQL`````#LN,31;6&%E!B4K;0`````\2DPW74!79@=!2VX`````/34_.%Y@
+M:F<(*&)O````````````````````````__\``/__``"``0``@`$``(`!``"`
+M`0``````````````````@`$``,`#``#``P``P`,``,`#``#``P``__\``"@`
+M```@````0`````$`"`````````0``!(+```2"P````$````!````````/Q$/
+M``H&0P`-"%,`#@A;`!D-7``0"60`$`EH`!L.;``=#G4`'0]\`!95!@`:9@<`
+M'7((`!]Y"``K:PL`*W,,`"Y^#``S?`T`3Q@3`%@:%0!9)R$`81P8`&4J)0!M
+M+"8`<RXG`'HS*P`>#X$`'Q"%`!$\NP`B$(P`)Q66`"L6J``N&+4`,!JN`"XA
+MA0`['\<`/B'0`"%=E0`K1J,`.5*J`!)<W``N:]@`-&[9`$0EV0!5+=X`0R3@
+M`%@M\0!?,?<`8C[$`$1<KP!%9K<`16>[`$AGOP!M6*H`2VO!`$MKQP!.>]<`
+M6WC*`%%\U@!N1MX`<DGF`'A,]0`O@PP`-(,-`#.+#0`XCPX`,(8;`#:;#@`Y
+ME0X`.ID1`#FC#P`\J1``/[01`$FL%0!)N!,`4;X5`%R>3@!HGE$`;;-2`$O%
+M%@!3RQ8`7\8H`%OA&@!MS%(`<L94`'GE5``:I_8`(X#,`"NZ]P`CP=0`(=7_
+M`"3W_P`PX/\`.?[_`&.`O0!/@MP`4(7?`%F#U@!9AML`7(K>`%2*XP!=C^(`
+M59#I`%R0Y`!<ENP`7IGN`%>>_@!9E_$`7IST`%N>^P!<H/L`:(?#`&F(S0!C
+MB]4`<9/,`&V:X@!@G?4`?J38`&.F_P!YJ?$`>K'U`%CN_P!0\O\`A#8M`(HW
+M+P"7/#0`G$,Y`*=%/`"+7%D`E6->`*U21P"V2T(`NU%&`+I:3`"D:64`N7%K
+M`,%/10##6DT`Q5Y1`,YH60#49%<`UFQ<`,A[<P#B:UL`B&#U`)1WY@">?_4`
+MTX%X`(Z)O0"-A<H`FHWI`(JMU@"-MML`I(3]`*V7_`"XJ/T`JLGF`*?@_@"]
+MZ?X`M/'_`+WS_P#,P/\`P_3_`,GU_P``````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````*BHK*RLK*RLK
+M*RLK)V8K*RLK*RLK*RLJ*RH```````!K:VMO;F]N;G=N;VXG>6YO;V]N;V]N
+M;FYK:P```````&MK;V]O;V]W=7=N=RAY=V]O;W=O;VYN;FYK````````;FYN
+M;6UM;75U=75U*'AU=6UU=75U=6YN;FX```````!N;75J=75J:FEI:6DR>&EJ
+M:6IJ:FIJ:FUN;@```````&UJ:6EH:&AH:69F9C)T9F9F:&AF:&9G:6QM````
+M````;&=H9&-C8G)R8F)B,G)B8F)D<F)B8F5E9VD```````!G93@X-S4U-34U
+M-34S.C4U-#4U-30W.#AE9P```)UV<V5@-#0T,S0T-#0T-#,U-#0T-#0T-#0U
+M-SEA<W:=`)A?86)W=W=W;W=W=W=W=W=W=W=W=W=W=W=W8F%PF```F5]@9J2D
+MI*2DI*2DI*2DI*2DI*2DI*2DI*-D8%^9``!V<&!YHZ.CHZ.CHZ.CHZ.CHZ.C
+MHZ.CHZ.CHWDY7W8```!P.9ZAH:&AH:&AH:&AH:&AH:&AH:&AH:&AGCMQ````
+M`#IHH*"@H*"@H*"@H*"@H*"@H*"@H*"@H*"@9CH``````'F@H*"@H*"@H*"@
+MH*"@H*"@H*"@H*"@H*!Y````````GZ2DI*2DI*2DI*2DI*2DI*2DI*2DI*2D
+MI)\`````````$A(//T1)00L!$QE]@(J#&@(%"A\D+3$V``````````!*01`1
+M1$M$"Q,5&7R`BH9_`P@*("0M/)(``````````$I!$$!$4$<,$Q<9?8"-AG\$
+M"!L@)"T]D@``````````2D(20$A01PP4%QE^@(N*@P0('"`E+SV2````````
+M``!+1A)!2%%)#!07&GZ)C8R$!`D>("XP/I,``````````$Q$/T5)44D-%!E\
+M?H60C84&"A\A+C`^F@``````````3$`/$$%*10X6%1<:@(N+B0<%"!\D,#Z:
+M``````````!,6E=<7%Y<#A0F6%E=>WJ%!QTI5UM>>IH``````````%)*1DI0
+M4U!#&!I\?X6.C(8C(Q\B+#Z1FP``````````54].3U165$V!@8*'B)2/B)65
+MEI:7FYRB````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````````/_______________^````?@```'X```!^````?@
+M```'X```!^````?@```'`````(````&````!@````<````/````#X```!^``
+M``?P```/\```#_````_P```/\```#_````_P```/\```#_````_P```/____
+M____________*````#````!@`````0`(````````"0``$@L``!(+`````0``
+M``$````````0/@4`#0=8`!4+9P`9#7D`(!!T`!)%!@`65`8`&5X'`!IC!P`E
+M7@H`)V<*`"QT#``M?0P`,GD.`#A[*`!0%A(`8QP7`&P?&0!G+"4`="TF`'<R
+M*@!\-"P`%0N*`!D-AP`9#)<`'`ZH`!T.M``?$+\`(!&!`",1EP`D$J<`+1:K
+M`"43NP`I%;0`,QFU`#\OO@`I%,<`*A71`#H<R0`Y'-D`-1OB`#8EPP`>9)H`
+M,TZH`#=JBP`:2]\`#T[W`!17_P`68_\`*W#0`#1OV0!-+J\`0!_X`$LER@!'
+M(]<`1"'K`$HE^0!7*_``5RWZ`&TVY@!C-/\`>CW\`$UCJ@!*:K8`4VRT`%=U
+MN0!A?KP`3G/"`$Y^V0!3;,@`47;$`%5YQ@!6>\@`6G[+`%1]TP!M9M``=&O<
+M`'5H[``N@@P`,XP.`#B'#@`TE`X`.Y,/`#F=#P`[EA$`.:4/`#NH$``_M1``
+M0)X1`$2E$0!'JA8`2+@3`%*]%@!@ET\`:[!1`$C#$P!4R!<`4=(9`&#'*P!Q
+MT%(`.X>T`!JPVP`:I_\`+I#9`"*YV@`LKOP`',WZ`![D_P`KR<P`+,;_`"/1
+MZ0`^R_\`-];_`";H_@`I]?\`-NGX`%Z"S0!3A=T`7(/4`%F)W0!7C>,`7)/G
+M`%:?_P!<HO\`9H;'`&R-R`!AAM(`:8S4`&V5W@!RE,T`=YO+`&.1X@!HF><`
+M:YWJ`&2>\0!QF^(`;Z+N`&>B]`!CIO\`:Z3T`&FF^P!KJ?T`=:3K`'BF[0!Y
+MJ>\`<Z?R`'6I]`!TK?H`>:ST`'BN^0!^NOH`1MS_`%G;_P!,Y/\`:<SX`((U
+M+`"*-BT`ACPU`)@X+P"3/30`FCPS`*0],P"-1CT`F4,Y`*A".`"V1SP`DUE7
+M`)EA70"F34$`JU)%`+9+0`"]3D(`N%9)`+M>50"C96$`MVUH`,9.1`#&6$L`
+MRUY0`-5?40#*958`U&56`-AG5P#*>7$`AD+_`(QO_P"9?O\`B:W7`)*]W@")
+ML>T`B+KX`)K`WP"KRN8`I^7_`*[P_P"QY_\`L_'_`+OR_P#![?\`P_3_`,CU
+M_P``````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````````#(S,S,S,S,S,S,S,S,S,S,S,RQY,S,S,S,S,S,S
+M,S,S,S,S,S,S`````````````'M\?'Q\?'Q\?'Q\?'Q\BWQ\>RR_?'R+?'Q\
+M?'Q\?'Q\?'Q\?'M[`````````````'Q\?(N+BXN+BXN+BXN+BXN+BRR_BXN+
+MBXN+BXN+BXN+BXM\?'Q\`````````````'R+BXN.CHZ.CHZ.CHZ.CHZ.C2R_
+MCHZ.BXZ.C8Z.CHZ.BXZ+BWQ\`````````````(N+CHZ.E)24E(Z4CI24E)24
+ME$"_EI24E)24E)24E)24E)2.CHN+`````````````(N.CI26E)26E):6E):6
+ME):4ED&_E9:4EI:4EI24E)26E)24E(Z+`````````````(V4E)26EI:6OY65
+MEI65E9:5E4&_E965E965E965EI65EI:4E(Z.`````````````(V.DY.5E965
+MD9&1D9&1D9&1D4*^D9&1D9&1D9&1D;Z5E963DXR-`````````````(V,DY*1
+MD)"0D)"0CX^/CXB/CT*^CX^/CX^/CX^/D)"1D(^2DHR*`````````````(J,
+MCX:&B(B(@8&!@8&!@8&!B$*(@8&!A(&!@8&!@8B(B(B&B8J*````````````
+M`(J'A7>`=75U=75U=75U=75U=4*`=75U=75U=75U?7]_?W=_A8>*``````#!
+MO(*"@GJ%@75U=75U1W5U1W5U1TAU=4!]275(24E)24E)2DI*2G5*>H1Z@H*"
+MO,$`O7Y^?GIZ>$EU=4AU=4=`1T='0D1`1T!(1T=`0D1$1T1$1T=(2$E)=WEZ
+M?GY^O```O7Y]?7IX=WQ\BWQ\?'Q\BWR+BWQ\BWR+?(N+BWQ\BXN+BXN+BXN+
+M=WAY?7U^P```O8-#0GEV@<G)R<G)R<G)R<G)R<G)R<G)R<G)R<G)R<G)R<G)
+MR<G)@'9V0T.#O0```+Q"0G9+O\G(R,G(R<C)R<C)R,G(R<C)R,G(R<C(R<G(
+MR,G)R,G(OTMV0D*\`````+Q#079+Q,C&R,;(R,C&R,C(R,C(R<;(R,C&R,;(
+MR,;(R,C(R,;(Q$M%04.\``````!]/T6$QL;&R,;(QL;&QL;&QL;&QL;&QL;&
+MR,;(QL;&R,;&QL;&QH%%/WT```````"`/T67QL;%QL;&QL;&QL;&QL;&QL;&
+MQL;&QL;&QL7&QL;&QL;&QKY%/X``````````07;"P\;%QL7%Q<7%Q<7%Q<;#
+MQ<7%Q<7%Q<7%Q<7%Q<7%Q<7%Q<)V0```````````1H7#P\/%Q</%Q<7%Q<7%
+MP\/%Q</%P\7%Q</#Q<7%Q<7%P\7%Q<6%1@``````````1I?#P\/#P\/#P\/#
+MP\/#P\/#P\/#P\/#P\/#P\/#P\/#P\/%Q,.;1@```````````,?)R<G)R<C)
+MR<G)R<G)QLG)R<G)R<G)R<G)R<G)R<G)R<G)Q\G'```````````````.#`L*
+M"PU05%(-"080$!,4G*&EJ:FCGA8"`P0$&!D?(B,@-#0```````````````!1
+M40T+"0U05E13#`$0$Q45G9^EJZJJHYP"!!@7%QD?(R,V-C0`````````````
+M``!:40T+"T]25UI3#`80$Q:<G:*FK*VJJ:0#!!D8%Q\B(2<G-SP`````````
+M``````!;64\,#$]66%=6#0<1$YR=GZ6FLK.MJJ0$'1X9&1HA)R@W-SP`````
+M``````````!=65$,#5)66%Q:4`<1%9Z?HJ:QM+6SK:4$%Q\9&1LE*#<X.CX`
+M``````````````!=65`-3U)76%Q<4`@2%J2?HJ:QMK:ULJL7'A\:&APE*#@Y
+M.SX```````````````!=65,-#5)68%Q<4@@2G*2@HJ:QM+:ULZL8'B(:&B$F
+M*3@Y.SX```````````````!=6E,-#5)78%U<4P@2%J2?HJ:QM+>WLZ88'QL;
+M&B$F*#@Y/3X```````````````!=6E-/#5)78&!<4P@2%J2?HJ:QM[>VL[$7
+M'R(;&B4F*3D[/3X```````````````!A60L*"@L,4U13#`D2$Q45G*&FL;*M
+MI;$8`P0#`P4>(R<W.KD```````````````!=:69F;G)S;')R;`D2*S)H:FYQ
+M='&8<*P7+S`O+S%G9V=N=+D```````````````!A;6UI;W-S<W1T;0D2+65H
+M:IB:FIF;FZT9+C$Q,6=K:FYQFKD```````````````!A75104%1<8F%@50D3
+MG:2EI:RRM[>WM:87(!P<'"8I-3D[/KD```````````````!C8UM24U9@86%A
+M6P^>HZ.@I::RM[>XM:XD-BHA(28U.3L]N;D```````````````!?7U]>7U]D
+M9&1D7UZGJ*^OK["XN+BXN*]-34U,3$U.3KJZOKL`````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M``#_______\``/_______P``________``#_______\``/_______P``____
+M____``#X`````!\``/@`````'P``^``````?``#X`````!\``/@`````'P``
+M^``````?``#X`````!\``/@`````'P``^``````?``#X`````!\``/@`````
+M'P````````````"```````$``(```````0``@``````!``#```````,``,``
+M`````P``X``````'``#@``````<``/``````#P``\``````/``#P``````\`
+M`/@`````'P``_``````_``#\`````#\``/P`````/P``_``````_``#\````
+M`#\``/P`````/P``_``````_``#\`````#\``/P`````/P``_``````_``#\
+M`````#\``/P`````/P``_``````_``#\`````#\``/P`````/P``________
+M``#_______\``/_______P``________```H````$````"`````!`"``````
+M```$```2"P``$@L`````````````````````````````````````````````
+M```````````````````````````````````````````````````````````$
+M!1P"`0`$*@```$````!`````0````$````!`````0````$````!`````0```
+M`$`!``0J`P4<`@``````````1([U_T**\O\_AN[_/H7M_SN"ZO\Z@>K_)#2;
+M_U>1Z/\Z@>K_.X+J_SR#Z_\_AN[_0HKR_T2.]?\``````````#^&[O\[@>K_
+M-WSD_S-XX?\S=-[_-'+<_R<UFO](@=O_-'+<_S-TWO\S=^'_-WSD_SJ`Z/\_
+MAN[_```````````Z@.?_-7C?_S5OVO\V:]3_-F;1_S9ES_\I.IK_/&[-_S9E
+MS_\V9M#_-6K4_S5OV/\T=]__.7[E_P``````````-WK@_S-8Q?\S4[__,TZ[
+M_S-+N/\S2K?_+4&;_SI5N?\S2K?_,TNX_S)-NO\S4;__,UC%_S=XX/\`````
+MI,?D_T!VV_]BI/[_8Z;__V.F__]CIO__8Z;__V.F__]CIO__8Z;__V.F__]C
+MIO__8Z;__V*D_O\_==G_I,?D_WZDV/]2A>'_N_'__[WS__^]\___O?/__[WS
+M__^]\___O?/__[WS__^]\___O?/__[WS__^[\?__4H7A_WZDV/]9<LR5:Z3N
+M_[3Q__^T\?__M/'__[3Q__^T\?__M/'__[3Q__^T\?__M/'__[3Q__^T\?__
+MM/'__VNC[O]9<LR6*S=Z!;/?_/_)]?__R?7__\GU___)]?__R?7__\GU___)
+M]?__R?7__\GU___)]?__R?7__\GU__^SW_S_*S=Z!0````,````&5M(W_TNT
+M,?]KP47_4[,J_^%>*O_P=S__\)-:_^2'-_\W)\K_5CWE_WM9Z?^KB>/_````
+M!@````,````$````"%K<.O]*L3#_:;U$_U:Y*__K8BS_ZW0^_^N06/_KBSG_
+M.BG2_U0\X/]Y5^;_LX_M_P````@````$`````P````9;WSO_09`J_UNF._]7
+MO"S_[V,M_\1=-O_-?DW_[XXZ_SLIUO])-;K_:4S'_[:1\/\````&`````P``
+M``(````$7.([_R&RS?\Z\NG_6<`M__1E+O\VG=;_7N[J__20._\\*MK_(X;S
+M_S[C]?^XD_/_````!`````(````!`````EWE.]U2O3;W:,5$\EW%,-;X92[>
+M^7@_]_F15O+XDSS6/BO>WEE`Z_>#7_#RN93UU0````(````!````````````
+M````````````````````````````````````````````````````````````
+M`````````````/__``"``0``@`$``(`!``"``0``@`$`````````````````
+M`````````````````````````````````/__```H````(````$`````!`"``
+M```````0```2"P``$@L`````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M``````````````````````````````(//P<"##0M`@PT,P(--RD"#3<H`@TW
+M*`(--R@"#3<H`@TW*`(--R@"#3<H`@TW*`(--R@"#3<H`@TW*`(--R@"#3<H
+M`@TW*`(--R@"#3<H`@TW*`(--R@"#38L`@PR-P(-.1L`````````````````
+M````````````````````+FO8_S!LV?\Q;=G_,F[9_S-NV?\T;]G_-&_9_S5O
+MV?\U;]G_-6_9_S5OV?\U;]G_*$.B_UV-XO\U;]G_-6_9_S5OV?\U;]G_-6_9
+M_S1OV?\T;]G_,V[9_S)NV?\Q;=G_,&S9_RYKV/\`````````````````````
+M``````````!5GO__5Y___U>>_?]8G_W_69_]_UN@_?];H/W_6Z']_UNA_?];
+MH?W_6Z']_UNA_?\N2:7_?+3]_UNA_?];H?W_6Z']_UNA_?];H?W_6Z#]_UN@
+M_?]9G_W_6)_]_U>>_?]7G___59[__P``````````````````````````````
+M`%>>_?]9GOW_6Z#\_UR?_/]=H/K_7:#Z_UV@^O]>H/K_7J#Z_UZ@^O]>H/K_
+M7J#Z_S5/J/]\L?K_7J#Z_UZ@^O]>H/K_7J#Z_UZ@^O]=H/K_7:#Z_UV@^O]<
+MG_S_6Y[\_UF>_?]7GOW_````````````````````````````````6Y[\_UN?
+M^O]=GOG_7I[X_UZ>]O]?G?7_7Y[U_V"=]?]@G?7_8)WU_V"=]?]@G?7_/%6K
+M_WNM]?]@G?7_8)WU_V"=]?]@G?7_8)WU_U^>]?]?G?7_7I[V_UV>^/]=GOG_
+M6Y_Z_UF>_/\```````````````````````````````!<GOG_7IWV_UZ;]/]?
+MF_'_7YKP_U^9[O]?F.[_7YGL_UZ7[/]>E^S_7I?L_UZ7[/]"6J[_=J7L_UZ7
+M[/]>E^S_7I?L_UZ7[/]?F>S_7YCN_U^9[O]>F.__7IGQ_UZ;]/]<G?;_6IWY
+M_P```````````````````````````````%R;]?]=F?'_6Y;M_UN4Z?];DN;_
+M7)#D_UV0X_]=D.+_78_B_UV/XO]=C^+_78_B_T5>K_]MFN+_78_B_UV/XO]=
+MC^+_78_B_UV0XO]=D.+_6Y#D_UJ1Y?]:D^G_6I7L_UJ8[_];FO7_````````
+M````````````````````````69?Q_UF3Z_]7C./_6(K>_UF'VO]9A-?_6H37
+M_UJ#UO]9@M;_68+5_UF"U?]9@M7_1&&P_V.+U?]9@M7_68+5_UF"U?]9@M;_
+M6H/6_UF#UO]8@]?_6879_UB'W?]6BN+_5Y#I_UB5[_\`````````````````
+M``````````````!5D>K_58OC_TUNRO],;,;_3&O#_TMKPO]+;,'_2VS`_TML
+MP/]+;,#_2VS`_TMLP/]"8;#_5'+#_TMLP/]+;,#_2VS`_TMLP/]+;,#_2VS!
+M_TMKP?]+:L/_2VO%_TMMR?]4B.'_5)#I_P```````````````*K)YLI]GM'_
+M<9/,_U&+Y?]0?]?_26C$_TAGO_]'9[W_1F>\_T5HN_]%:+K_16>Z_T5GNO]$
+M9[K_1&>Z_SY@L/]*;+S_1&>Z_T1GNO]$9[K_16>Z_T5GNO]%9[O_16>\_T9F
+MO/](9K[_26?#_T]\UO]0B.+_<9/,_WV>T?^JR>;)GL3A7XJMUO]IB,/_4(7?
+M_U)ZT_]CIO__8Z;__V.F__]CIO__8Z;__V.F__]CIO__8Z;__V.F__]CIO__
+M8Z;__V.F__]CIO__8Z;__V.F__]CIO__8Z;__V.F__]CIO__8Z;__V.F__]C
+MIO__47?1_T^#W?]IB,/_BJW6_Y[$X5^3O-X)C;;;ZV.`O?]/@-O_7XO>_\CU
+M___(]?__R/7__\CU___(]?__R/7__\CU___(]?__R/7__\CU___(]?__R/7_
+M_\CU___(]?__R/7__\CU___(]?__R/7__\CU___(]?__R/7__\CU__]>BM[_
+M37[8_V.`O?^-MMOKE<#>"0````!^I-B+9X;"_TQ[U_]\L/#_P_3__\/T___#
+M]/__P_3__\/T___#]/__P_3__\/T___#]/__P_3__\/T___#]/__P_3__\/T
+M___#]/__P_3__\/T___#]/__P_3__\/T___#]/__P_3__WRP\/],>=;_9X;"
+M_WZDV(H``````````&Z/TR)IB,W]3WS7_Z?@_O^]\___O?/__[WS__^]\___
+MO?/__[WS__^]\___O?/__[WS__^]\___O?/__[WS__^]\___O?/__[WS__^]
+M\___O?/__[WS__^]\___O?/__[WS__^]\___I^#^_U!\U_]IB,W];H_3(@``
+M`````````````%][SK5=CN/_MO'__[?R__^W\O__M_+__[?R__^W\O__M_+_
+M_[?R__^W\O__M_+__[?R__^W\O__M_+__[?R__^W\O__M_+__[?R__^W\O__
+MM_+__[?R__^W\O__M_+__[?R__^V\?__78WC_U][SK0`````````````````
+M```!4FK(2W6P\O^R\?__LO'__[+Q__^R\?__LO'__[+Q__^R\?__LO'__[+Q
+M__^R\?__LO'__[+Q__^R\?__LO'__[+Q__^R\?__LO'__[+Q__^R\?__LO'_
+M_[+Q__^R\?__LO'__[+Q__]UL/+_4FK(2P````$```````````````$9(4,&
+MO.C^_\KU___*]?__RO7__\KU___*]?__RO7__\KU___*]?__RO7__\KU___*
+M]?__RO7__\KU___*]?__RO7__\KU___*]?__RO7__\KU___*]?__RO7__\KU
+M___*]?__RO7__[WI_O\9(4,&`````0```````````````@````<````--7T.
+M_S![#/\J;`S_+H$,_S:=#O]%M1+_,8L-_Q1+!?\_$0__52(<_V\M)O^(-B__
+MJ44[_[]:3O^E44/_?C<P_PH&0_\7#%W_'0Y\_RD4G_\Z'\7_5"S<_V(^Q/]M
+M6*K_````#0````<````"```````````````#````"`````]'IA/_-XL-_RIP
+M"_\M?PO_-9H._T6W$O\VF@__&5X'_T\8$_]=)B#_;RTF_X<U+O^F0SO_P5M/
+M_[992O^=1#O_#0A3_QH-:O\=#WW_*!2=_SH?PO]6+=__;D;>_Y!TX/\````/
+M````"`````,```````````````,````'````#DBJ$_\XCP[_*W,,_R^$#/\X
+MH`[_1[T3_S>>$/\980?_4A@4_V$F(?]S+B?_C#@O_ZQ&/?_'75'_NEM-_Z%&
+M//\."%C_&@UL_QX/@?\I%:'_/"#(_U@NYO]P2.+_E'?F_P````X````'````
+M`P```````````````@````4````)2Z\4_SJ4#O\M=PS_,8D,_SJF#_]*Q13_
+M.J81_QIF!_]6&17_9"@B_W<P*/^1.C'_LTE`_]!B5?_#7U'_JTI`_PX(6_\;
+M#F__'Q"%_RL6J/\^(=#_6S#N_W1*ZO^9>^W_````"0````4````"````````
+M```````!`````P````5-M13_/9D/_RY\#?\SC@W_/*T0_T_-%/\]K1'_'&L(
+M_UL;%O]I*B/_?#(J_Y<\-/^[3$+_V&99_\UD5/^T34/_#PE?_QT.=?\B$(S_
+M+1>N_T`BV?]?,??_>$WS_YY_]?\````%`````P````$`````````````````
+M```!`````4ZZ%?\^GA#_,($-_S63#?\^LA#_4]05_S^V$O\=<`C_7AL7_VXK
+M)_^"-2S_G#XV_\%/1?_B:UO_U6A9_[M11/\0"63_'@]Z_R(1D?\N&+7_0R3@
+M_V,S_O]]3OK_HH+[_P````$````!````````````````````````````````
+M4;X5_S>"#?\I9@S_+6X*_S:%#/]'K!3_.)00_QUT"/]A'!C_52<A_V$L)_][
+M-B__GT8[_\A>3__$7D__P5)(_Q`):/\;#5O_'@]K_R@5D?\\'\W_6"S[_W-)
+M\?^EA?__``````````````````````````````````````````!3P1;_(\'4
+M_QS#[/\@\O__(?___S7___\J\___'WD(_V$<&/\A797_(X#,_RNZ]_\PX/__
+M4/+__U+=__^\4D?_$`EH_Q$\N_\27-S_&J?V_R'5__\\_/__6.[__Z:&_?\`
+M`````````````````````````````````````````%_&*/]-KQO_.I(3_SRE
+M$/]&P!3_6^$:_TS#&_\PAAO_;BTJ_W8U,/^#-R[_F$`V_[E01O_6;U__SFQ=
+M_[9:4?\Q*G[_+B&%_R<9DO\P&J[_2"?8_VP^]?^(8/7_KI;Z_P``````````
+M````````````````````````````````=<%4MF^T4]9HGE'N:[)0_7#+5/UY
+MY53N;<Q2UER>3K>)65>VC5];UI5C7NZD:67]O7%L_=.!>.[(>W/6M'!JMXZ+
+MO;:-A[W6BH3![H^&TOV:C>G]JY?][KBH_=;,P/^W````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````````````````````/__________X```#^````?@```'
+MX```!^````?@```'X```!^````?@```'````````````````@````8````'`
+M```#@````8````&````!@````8````&````!@````<````/P```/\```#_``
+M``_P```/________________*````#````!@`````0`@````````)```$@L`
+M`!(+````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M```````````````````````````````````````````!&%P!`A=<"@(770D"
+M%UX#`A=>`P(77@,"%UX#`A=>`P(77@,"%UX#`A=>`P(77@,"%UX#`A=>`P(7
+M7@,"%UX#`A=>`P(77@,"%UX#`A=>`P(77@,"%UX#`A=>`P(77@,"%UX#`A=>
+M`P(77@,"%UX#`A=>`P(77@,"%UX#`A=>`P(77@,"%UX#`A=>`P(77@,"%UT)
+M`A=<"@$87`$`````````````````````````````````````````````````
+M`````P<C'`($%T,"!!5-`@4810(%&4("!1E"`@490@(%&4("!1E"`@490@(%
+M&4("!1E"`@490@(%&4("!1E"`@490@(%&4("!1E"`@490@(%&4("!1E"`@49
+M0@(%&4("!1E"`@490@(%&4("!1E"`@490@(%&4("!1E"`@490@(%&4("!1E"
+M`@4810($%4T"!!=$`P<C'0,*+P$`````````````````````````````````
+M````````````````````+FO8_S!LV?\Q;=G_,F[9_S-NV?\T;]G_-&_9_S5O
+MV?\U;]G_-6_9_S5OV?\U;]G_-6_9_S5OV?\U;]G_-6_9_S5OV?\U;]G_*$.B
+M_UV-XO\U;]G_-6_9_S5OV?\U;]G_-6_9_S5OV?\U;]G_-6_9_S5OV?\U;]G_
+M-6_9_S1OV?\T;]G_,V[9_S)NV?\Q;=G_,&S9_RYKV/\`````````````````
+M````````````````````````````````````59[__U>?__]9H/__6J#__UNA
+M__]<HO__7:+__UVB__]=HO__7:+__UVB__]=HO__7:+__UVB__]=HO__7:+_
+M_UVB__]=HO__+DJE_WZU__]=HO__7:+__UVB__]=HO__7:+__UVB__]=HO__
+M7:+__UVB__]=HO__7:+__UVB__]<HO__6Z'__UJ@__]9H/__5Y___U6>__\`
+M````````````````````````````````````````````````````6:#__URB
+M__]>H___8*3__V*E__]CIO__8Z;__V2F__]DIO__9*;__V2F__]DIO__9*;_
+M_V2F__]DIO__9*;__V2F__]DIO__-E*I_X2X__]DIO__9*;__V2F__]DIO__
+M9*;__V2F__]DIO__9*;__V2F__]DIO__9*;__V.F__]CIO__8J7__V"D__]>
+MH___7*+__UF@__\`````````````````````````````````````````````
+M````````7J/__V&E__]EI___9J?^_VBH_O]IJ?[_:ZG^_VNJ_O]KJO[_:JC^
+M_VJH_O]JJ/[_:JC^_VJH_O]JJ/[_:JC^_VJH_O]JJ/[_/EJN_XBY_O]JJ/[_
+M:JC^_VJH_O]JJ/[_:JC^_VJH_O]JJ/[_:JC^_VJH_O]JJ/[_:ZK^_VNI_O]I
+MJ?[_:*C^_V:G_O]EI___8:7__UZC__\`````````````````````````````
+M````````````````````````8J3]_V:G_O]KJ?[_;:K^_V^L_/]RK/S_<JS\
+M_W*M_/]RK?O_<JW[_W*M^_]RK?O_<JW[_W*M^_]RK?O_<JW[_W*M^_]RK?O_
+M1V.R_XV[^_]RK?O_<JW[_W*M^_]RK?O_<JW[_W*M^_]RK?O_<JW[_W*M^_]R
+MK?O_<JW\_W*L_/]RK/S_;ZS\_VVJ_/]IJ/[_9J?^_V*D_?\`````````````
+M````````````````````````````````````````9:;^_VNI_/]NJOS_<ZW[
+M_W6M^_]VKOK_>*[Z_W>N^O]WKOG_=Z[Y_W>M^?]WK?G_=ZWY_W>M^?]WK?G_
+M=ZWY_W>M^?]WK?G_3FRU_X^Z^?]WK?G_=ZWY_W>M^?]WK?G_=ZWY_W>M^?]W
+MK?G_=ZWY_W>N^?]WKOG_=Z[Z_WBN^O]VKOK_=:S[_W*L^_]NJOS_:Z?\_V6F
+M_O\`````````````````````````````````````````````````````:*;\
+M_VVI^_]RJ_K_=:WY_WBM^/]YKOC_>J[W_WJN]O]ZK?;_>JWV_WFM]/]YK?3_
+M>:WT_WFK]/]YJ_3_>:OT_WFK]/]YJ_3_5'&X_XZX]/]YJ_3_>:OT_WFK]/]Y
+MJ_3_>:OT_WFM]/]YK?3_>:WT_WFM]/]ZK?;_>JWV_WJM]_]YK??_>*WX_W6L
+M^?]RJOK_;:G[_VBF_/\`````````````````````````````````````````
+M````````````:J;[_V^I^/]SJO?_=JOU_WFK]/]ZJ_3_>ZSS_WNK\O]ZJO#_
+M>:GP_WFI\/]YJ>__>:GO_WFI[_]YJ>__>:GO_WFI[_]YJ>__5G2[_XRT[_]Y
+MJ>__>:GO_WFI[_]YJ>__>:GO_WFI[_]YJ>__>:GO_WFI\/]ZJO#_>JKR_WJK
+M\?]YJ_+_>*KS_W:J]?]SJ?;_;ZCX_VFF^?\`````````````````````````
+M````````````````````````````:*7X_VZG]O]RJ/3_=:CR_W>H\/]YJ.[_
+M>:?M_WBF[/]WI>O_=Z3K_W:DZO]VH^K_=J/J_W6CZO]UH^K_=:/J_W6CZO]U
+MH^K_5G:\_X:MZO]UH^K_=:/J_W6CZO]UH^K_=:/J_W:CZO]VH^K_=J/J_W:D
+MZO]WI>O_>*7L_WBF[?]WI^W_=J?O_W2G\?]RI_/_;:;U_VBC]_\`````````
+M````````````````````````````````````````````9Z+T_VRB\O]PI.__
+M;IWH_V^<YO]QG.3_<9KC_W&:X?]OF>#_;I??_VZ6W_]MEM[_;9;>_VV5WO]M
+ME=[_;97>_VV5WO]ME=[_57:\_WN?W_]ME=[_;97>_VV5WO]ME=[_;97>_VV5
+MWO]MEM[_;9;>_VZ7W_]OE^#_<)K@_W":XO]PF^/_;IOE_VV;Z/]OHN[_:J+Q
+M_V>A]/\`````````````````````````````````````````````````````
+M9)[R_VF?[_]KG>K_8(74_V*&T_]BA]+_8X;1_V&&T/]@A<__7X3._UZ#SO]>
+M@\W_7H/-_UZ#S?]>@\W_7H/-_UZ#S?]>@\W_472Z_VR-T/]>@\W_7H/-_UZ#
+MS?]>@\W_7H/-_UZ#S?]>@\W_7H/-_U^$SO]@A<[_88;/_V*&T?]AAM+_8(73
+M_U^$T_]IG.C_:)WL_V.>\/\``````````````````````````*O*YLM^G]+_
+M<I3-_W*4S?]RE,W_89KN_V.9ZO]CD.#_78#0_UV!S_]=@<W_7(',_UI_R_]9
+M?LK_5WW)_U=\R/]7?,C_5GO(_U9[R/]6>\C_5GO(_U9[R/]6>\C_3&^Y_V&#
+MRO]6>\C_5GO(_U9[R/]6>\C_5GO(_U9[R/]6>\C_5WS(_U=\R?]8?<G_6G_*
+M_UN`R_]<@,S_7(#._UM^S_]BCM__8I;I_UZ7[/]RE,W_<I3-_W*4S?]^G]+_
+MJ\KFRJ3'Y&"/L=G_;8[(_VV.R/]MCLC_6Y7J_U^3Y?]<A=?_5WK,_U=ZR?]6
+M>LC_57K&_U-XQ?]0=L3_3W7#_T]TPO].<\+_3G/"_TYSPO].<\+_3G/"_TYS
+MPO].<\+_1FJV_U=YQ/].<\+_3G/"_TYSPO].<\+_3G/"_TYSPO].<\+_3G3"
+M_T]TP_]0=<3_4G?%_U1YQO]5><?_5GG(_U9XRO];@M7_79#B_UF2Z/]MCLC_
+M;8[(_VV.R/^/L=G_I,?D7Z#%X@F:P-_L;(O$_VB&PO]HAL+_5H_F_UJ,X/]<
+M@];_8Z;__V.F__]CIO__8Z;__V.F__]CIO__8Z;__V.F__]CIO__8Z;__V.F
+M__]CIO__8Z;__V.F__]CIO__8Z;__V.F__]CIO__8Z;__V.F__]CIO__8Z;_
+M_V.F__]CIO__8Z;__V.F__]CIO__8Z;__V.F__]CIO__8Z;__V.F__];@M3_
+M68G=_U2-Y/]HAL+_:(;"_VR+Q/^:P-_KHL7B"0````"2O=Z+=YO+_V%^O/]A
+M?KS_4XKB_U>&V_]EDN+_R?7__\GU___)]?__R?7__\GU___)]?__R?7__\GU
+M___)]?__R?7__\GU___)]?__R?7__\GU___)]?__R?7__\GU___)]?__R?7_
+M_\GU___)]?__R?7__\GU___)]?__R?7__\GU___)]?__R?7__\GU___)]?__
+MR?7__\GU__]DD>'_5H3:_U*'W_]A?KS_87Z\_W>;R_^2O=Z+``````````")
+ML=LC@JG5_5MVMO];=K;_487?_U-\T_^'N_7_Q?3__\7T___%]/__Q?3__\7T
+M___%]/__Q?3__\7T___%]/__Q?3__\7T___%]/__Q?3__\7T___%]/__Q?3_
+M_\7T___%]/__Q?3__\7T___%]/__Q?3__\7T___%]/__Q?3__\7T___%]/__
+MQ?3__\7T___%]/__Q?3__\7T__^'N_3_47K2_U"#W/];=K;_6W:V_X.IUOV)
+ML=LB````````````````?J38M6!]N_]4;;#_4(+<_U9_U?^QY___P?3__\'T
+M___!]/__P?3__\'T___!]/__P?3__\'T___!]/__P?3__\'T___!]/__P?3_
+M_\'T___!]/__P?3__\'T___!]/__P?3__\'T___!]/__P?3__\'T___!]/__
+MP?3__\'T___!]/__P?3__\'T___!]/__P?3__\'T__^QY___5GW4_TY_VO]4
+M;;#_8'V[_WZDV+4`````````````````````=);52FB(R/]-9*K_3G_:_V*2
+MX_^]\___O?/__[WS__^]\___O?/__[WS__^]\___O?/__[WS__^]\___O?/_
+M_[WS__^]\___O?/__[WS__^]\___O?/__[WS__^]\___O?/__[WS__^]\___
+MO?/__[WS__^]\___O?/__[WS__^]\___O?/__[WS__^]\___O?/__[WS__^]
+M\___89'C_TY]V/]-9*K_:(C(_W26U4H`````````````````````<I+5`FJ*
+MT=U,8JK_3G[:_X*[]?^Y\O__N?+__[GR__^Y\O__N?+__[GR__^Y\O__N?+_
+M_[GR__^Y\O__N?+__[GR__^Y\O__N?+__[GR__^Y\O__N?+__[GR__^Y\O__
+MN?+__[GR__^Y\O__N?+__[GR__^Y\O__N?+__[GR__^Y\O__N?+__[GR__^Y
+M\O__N?+__[GR__^Y\O__@KOU_TU]V/],8JK_:HK1W'*3U0(`````````````
+M`````````````&!^SW12:[G_587>_Z?E__^U\O__M?+__[7R__^U\O__M?+_
+M_[7R__^U\O__M?+__[7R__^U\O__M?+__[7R__^U\O__M?+__[7R__^U\O__
+MM?+__[7R__^U\O__M?+__[7R__^U\O__M?+__[7R__^U\O__M?+__[7R__^U
+M\O__M?+__[7R__^U\O__M?+__[7R__^U\O__I^7__U2$W?]2:[G_8'[/=```
+M`````````````````````````````%MTS116;\CV8I?I_['Q__^Q\?__L?'_
+M_['Q__^Q\?__L?'__['Q__^Q\?__L?'__['Q__^Q\?__L?'__['Q__^Q\?__
+ML?'__['Q__^Q\?__L?'__['Q__^Q\?__L?'__['Q__^Q\?__L?'__['Q__^Q
+M\?__L?'__['Q__^Q\?__L?'__['Q__^Q\?__L?'__['Q__^Q\?__L?'__V*7
+MZ?]6;\CV6G3-%`````````````````````````````````````%0:,>@?KWW
+M_Z[P__^N\/__KO#__Z[P__^N\/__KO#__Z[P__^N\/__KO#__Z[P__^N\/__
+MKO#__Z[P__^N\/__KO#__Z[P__^N\/__KO#__Z[P__^N\/__KO#__Z[P__^N
+M\/__KO#__Z[P__^N\/__KO#__Z[P__^N\/__KO#__Z[P__^N\/__KO#__Z[P
+M__^N\/__KO#__WZ]]_]0:,>@`````0``````````````````````````````
+M``````)$5[8ZP>W__\CU___(]?__R/7__\CU___(]?__R/7__\CU___(]?__
+MR/7__\CU___(]?__R/7__\CU___(]?__R/7__\CU___(]?__R/7__\CU___(
+M]?__R/7__\CU___(]?__R/7__\CU___(]?__R/7__\CU___(]?__R/7__\CU
+M___(]?__R/7__\CU___(]?__R/7__\'M__]$5[8Z`````@``````````````
+M``````````````````````,````*````%#5[#O\L;0O_)F4*_R1>"O\D9PG_
+M*WP+_S&-#?\WG0__-Y`._S-]#O\D8`K_$#X%_T84$/]3(QW_9BLE_W0M)O^&
+M,2G_F3LR_ZA`./^N3D/_HDY!_X]'//^#/37_>S,J_PT'5O\7#&;_&0UW_Q0*
+M??\5"X;_'0V:_R,2J/\L%K+_,1BP_S0:JO\]'Z;_3R>F_P```!0````*````
+M`P````````````````````````````````````0````,````%CJ%#_\VA`W_
+M+7<,_R9E"_\E:@G_*WP+_S"-#?\XH0__/)L/_SJ0$/\J<`S_$4`%_TD5$?]@
+M*"+_=S(K_WTQ*?^),BK_FCHR_ZA!.?^T4$7_KU1%_Z921?^91SW_@C8L_PT'
+M6?\;#G;_'0Z+_Q8+B/\6#(K_'0V;_R,2J/\N%K?_-AJ__SX>R/]+)<K_5BNT
+M_P```!8````,````!`````````````````````````````````````0````+
+M````%4>C$_\YC0[_+WH-_RAJ"_\G;@G_+8(+_S.4#?\[J!#_/J$0_SR5$/\L
+M=@S_%$D&_U48%/]F*R3_>C0L_X(S*_^/-2S_H3TT_[!$._^[5$C_ME=)_ZM5
+M2/^A2T#_E3TR_Q`):/\=#GW_'@^/_Q<+C?\7#)#_'PZB_R42L/\O%[__.!O&
+M_S\?S?].*-?_:33=_P```!4````+````!```````````````````````````
+M``````````,````(````$$JJ%/\]E0__,H$-_RIQ#/\I=0K_+XD,_S6<#O\^
+MLA#_0JL1_T"?$O\O?PW_%5`&_UL9%?]M+B;_@C<O_XHW+O^8."__JD$W_[E+
+M/__&64S_P5Q-_[=:3/^L4$3_GT(V_Q$);_\?#X;_(!"8_Q@,E?\9#9G_(`^J
+M_R<3N?\R&<K_.QW2_T,AVO]2*N+_;3;F_P```!`````)`````P``````````
+M``````````````````````````(````%````"4ZR%?]`G1#_-8H._RUW#/\K
+M>PO_,9`-_SBD#_]"NA'_1K42_T2J$_\SB`[_%U<&_V,<%_]V,BG_C#LS_Y,Y
+M,?^@.S'_LD0Z_\-,0O_17E#_S6)2_\-A4O^Y5TK_K4<\_Q(*>?\A$9'_)!&C
+M_QH,G_\:#J'_(@^S_RD4P_\T&M7_/Q[?_T@CZ/]8+/#_<SGR_P````D````%
+M`````@````````````````````````````````````$````"````!%"X%?]"
+MHQ'_-X\/_RY\#?\M?PO_,Y0-_SJH#_]#OQ+_2+P3_T>Q%/\UCP__&%P'_V@>
+M&/]\-"S_D3XU_Y@[,?^E/3/_MT8\_\A.1/_78%+_U&95_\ME5?_#6TW_MDM`
+M_Q,+@/\C$9G_)!*K_QP-IO\;#J?_(Q"Y_RH5R/\V&]S_02#H_TLD\_]<+OG_
+M=SOY_P````0````"`````0``````````````````````````````````````
+M```!`````5*[%O]$I1'_.)$/_R]]#?\M?@O_,Y4-_SJI#_]$P1+_2;X3_TFT
+M%/\WDP__&5X'_VL?&?]_-BS_E#\V_YH\,_^F/3+_N$8\_\E.1/_97U'_UV=6
+M_\]G5__'74__O$U!_Q0+A?\D$I__)1.O_QP-K?\;#JK_(Q"[_RH5S?\W&^#_
+M0B#L_TTE^/]?,/[_>SW^_P````$````!````````````````````````````
+M`````````````````````````%*]%O]$IA'_.),/_R]_#?\M@`O_,Y4-_SJJ
+M$/]%PA+_2;\3_TFV%/\WE0__&5\'_VP?&?^!-BS_ED`V_YH],_^G/3/_N48\
+M_\I/1/_:8%'_V&A6_]%G5__*7E#_O4Y"_Q0+BO\D$J'_)A.R_QP-L/\<#JO_
+M)!&^_RL5T/\W'.+_0R'O_TXF^_]@,/__?#W__P``````````````````````
+M`````````````````````````````````````````%.^%O]$IQ'_.9,/_R^`
+M#?\M@0O_,Y8._SJK$/]%PA+_2L`3_TJV%/\WE@__&5\'_VP?&?^!-BS_ED`V
+M_YL]-/^G/C/_N4<\_\M/1?_:8E+_V6A6_])G5__+7E#_ODY"_Q4+B/\E$J/_
+M)A.T_QP.L?\<#ZW_)!'`_RL6TO\X'.3_1"'Q_T\F__]A,?__?3[__P``````
+M`````````````````````````````````````````````````````````%._
+M%O\[C0[_,'0-_REA"O\F7@G_*VD+_S%W#?\\D`__/9</_SZ7$/\O=0O_&E\'
+M_VT?&O]H+B;_>C<N_W@T+/]_-"W_F3TT_[)%//_(5$7_PU=+_[E82O^K447_
+MOT]#_Q4+BO\@$'3_(!&!_QD-9_\7#&#_'P]Y_R82E/\Q&;'_.QW&_T,AU?]4
+M*.__?S___P``````````````````````````````````````````````````
+M`````````````%2^%O\BN=K_'+#8_QFPW?\9QO+_'N3__R'Q__\A[O__)>3_
+M_RC@_/\>V/[_&F`'_VT>&O\>9)K_)7O!_R2&W?\FI?__+\G__S/;__\SV___
+M.M'__S_,__\]R?__P$]#_Q4+C?\02^C_$E'__PY)__\/5___%(#__Q6C__\9
+MH/__'ZK__R?%__\RYO__@D#__P``````````````````````````````````
+M`````````````````````````````%7!%O\SRL#_*,'*_R+#U_\CT>G_*.W_
+M_ROZ__\O]/__-NW[_SKG[_\MU\[_&F('_V\?&O\W:HO_.X>T_S>9U?\YL?7_
+M0=G__T?H__]0X?__6=O__V?3_O]JQ/'_P$]$_Q8,D_\:2]__&&'__Q5=__\3
+M9?__&Z[__Q[*__\FM?__+L/__SO0__]+WO__B$+__P``````````````````
+M`````````````````````````````````````````````%C%%_])LA/_/9X/
+M_S.)#O\PC`W_-Z$/_S^X$?]+SQ/_4,H5_T_!%O\[GQ#_&V8'_V\@&O^%."__
+MF$,X_YT^-/^I/S;_NTD]_\Q51__=9U?_VFM:_])K6__,8%+_O$Y!_Q8,E?\H
+M%;#_*A;"_Q\/O/\?$+__*1/2_S$8Y/]`'_C_3";__U4K__]J-?__B$/__P``
+M````````````````````````````````````````````````````````````
+M`&G+-/]9NBC_2JD>_SJ3%?\VEA'_/*D0_T2^%/]1TAG_5<\;_U;#(O]*IB3_
+M.'LH_X([./^+13[_ED@__YI`-_^C03;_M$D]_\552?_395?_TFU;_\UN7O_%
+M9UO_NUY5_T$WM/\_+[[_-B7#_R86N/\D%;W_*1/._S,:X?]$)??_4RW__V$[
+M__]\3?__FF+__P``````````````````````````````````````````````
+M`````````````````'&^5(APMU*P:ZM1RV:>3^9EHT_N:;5/_6S)4?USVE+N
+M=-52YF_&4\MEJE&P68].B)-95XB985VPH&5ARZ!E8.:J9F+NMFQF_<-S;/W0
+M>G+NS7USYL9Y<<N]<FRPLFIFB'1LW(AV;-^P<FG:RVUET.9M9M#N<F?D_7AI
+M]/V`;O_NB7/_YHYW_\N6?/^PFW__B```````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````/_______P``________``#_______\``/_______P``\``````?``#X
+M`````!\``/@`````'P``^``````?``#X`````!\``/@`````'P``^``````?
+M``#X`````!\``/@`````'P``^``````?``#X`````!\``/@`````'P``^```
+M```?``````````````````````````````````"```````$``(```````0``
+MP``````#``#```````,``,```````P``X``````'``#@``````<``.``````
+M!P``X``````'``#@``````<``.``````!P``X``````'``#@``````<``.``
+M````!P``X``````'``#P``````\``/P`````/P``_``````_``#\`````#\`
+M`/P`````/P``_``````_``#\`````#\``/P`````/P``_``````_``#_____
+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
+MFJKO/Q(]ST5#GBKWBQ&EGZ=Y"*>RNI@'4]T=E0$^)@$]!`R@JQ?BMB!=\
+M%5]!@!=^AV_^"_T_]@,6B9(`H@:P8(RI^EI\[Z[:9_SXO'0!1H1?QYAQ7,"%
+M2`#+0T4`8]N($^(P`G"C&H'6_WX>".!`H:42?"<UK5\]28@$.T`4_D5#\W$"
+MR$\[2_<.1K2J6DOOW"%D<#H$?`H$X$:%OR[X+A@"Q03#H%0D$+%0N#P(?/'A
+MN4@`"\5A&L`T(C@%K)@`:GW_D=:?L=9?O>!+[9JH!"P4F@6!+P0_:@"+@=9V
+M#AC_"N'/)V@!YT(#&&_]F=#ZRVCK#X!$`E@P7)[YG:@!+!9U[[X#(P%U+2`_
+MJ`6<`DZ!`/+1D3Y'$/PZ`801`*D9`2,!+!0N"P10"+[+3CM+]P;&-0#&[5[C
+M).!3-2R[6IP"`=3Z_0>$/PP+BJ%J]>,HP#+@TC$"R*,&L!C4/5R+K9M"`OFH
+M/>`4L'H"*(4_N/^6@F]JPN\J]3^.`"P%>:D!%-OTM+-T;T$/ZP9H31L.=H%3
+MZH*ME@"<JPE_W>)OJM:_KOI+;/V7!9<&@2\U@-@%6!PF^`(<UA4X/QI`/B;\
+M8ZW_8<(?.6"AR(<%`40-8*'0L9V))'#0**CG1@,HU?ZZ\(\9_:+ZOW14&D`@
+M@#P2P,*ALY*`>MDX!:Q>`T#Q_8!BJ&]&U3]RP4*1IW$48"G0"0?3N@(C9'`>
+M-(#2[73,T6>2X(^,`$0L&@>&`:,-8`FHC03`X41P/C2`HI!!X%6JB#\C7G]U
+M]]](`LM`20`ZYA$8L2",1;LJSI7"/WY\+@A`:U.`&=4`%,J6O]B/6!JB(]"J
+M4`^]-DD3\,=Z/@A@RAQ_+;H`3!;^R`4+AXY/!HIS`18'G7*B)($)T9B<X_&F
+MD>M#M])902LC@,>;5JI(*#7!K_?UR^,ZXFS`9:"<#5CT/4^I#WKO8E+0SPE>
+M@E#:`E1)'F^:W")Z;9BOY*M?2=OZF9M6.CD&(<E5FYFRD<-6KFSGJENYLNF@
+MI=!4L*J88J!P4H8C'T2<-1SR76II\1)R@4Q@:(6!%;H6Z5JADP@]*_0-,E0E
+M!U9"`BO3`+8MDBLF$S&)8G-5DPN:JV0Y]%09.@U10*16I]5^1,2Z0<=90415
+M$&>$S$)N!;5@K(BQ@DG`6$,1)VSI6`D!/-B`U`D.7*XXIPQS!*=D#NTY,%H-
+M`TQU_XDL$+$.T.GGRPDP!E5!<N-)(#5":L%90:VL3L==F0;P:-.;.E1)%7$*
+MF2H6Q*B45D")KC\1]RC*@3]_:%04A^`$G($,(1?4":MC@)40P.LV`51%<1)6
+M``GA0'+U;H%5!-"ZRC_)JVH2HF$@8M4X])N;V(QI^+^T_`49**)C.`6G*XX-
+MMA("R$*X;Q&0:O6/>F#Z\1#`XY4GM6LG09"Y*6#2*YR72HY#/=.>RYSW6M2S
+M5W7?6<J[JF<OYKF3O[GZL)5.^BO56&!=%@KA5P?Z+V^MA@A61`!>^ZDUZXZ:
+M.Q`''`,B(NYIU,8#42V7QO*-HEFA&*SL25_W2#7'K_;L*/@1YQDC1%`_]Z]O
+MK:93NU+!^_I'#CPO"GY$1*VKL"K!+W!J`CB!#"(BSB56+?01$1$1$1$1$1$1
+M$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1
+M$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$:>(_Q]#*AH3%39B$0````!)
+M14Y$KD)@@@````````````$`!P`0$````0`(`&@%```!`"`@```!``@`J`@`
+M``(`,#````$`"`"H#@```P`0$````0`@`&@$```$`"`@```!`"``J!````4`
+M,#````$`(`"H)0``!@```````0`@`'$]```'`,`(RI``````"P`;`"\`6P'@
+M``````!7`&D`;@!2`$$`4@`@`',`90!L`&8`+0!E`'@`=`!R`&$`8P!T`&D`
+M;@!G`"``80!R`&,`:`!I`'8`90````@`30!3`"``4P!H`&4`;`!L`"``1`!L
+M`&<`(``R````#@@`4``````&``D`/0"Z`&P`__^"``````````"``E``````
+M2P"2``@!"`!E`/__@@`F`$0`90!S`'0`:0!N`&$`=`!I`&\`;@`@`&8`;P!L
+M`&0`90!R``````!"`"%0`````$L`G`#$`!@`9@#__X4````````````!4```
+M```6`9L`/``.`&<`__^``$(`<@!O`"8`=P!S`&4`+@`N`"X`````````1`BA
+M4`````!+``D`"`&#`&@`4@!I`&,`:`!%`&0`:0!T`#(`,`!7````````````
+M$```0`````!+`*4`"@$!`&D`__^"`````````````E``````2P"L`,0`"`!K
+M`/__@@!)`&X`<P!T`&$`;`!L`&$`=`!I`&\`;@`@`'``<@!O`&<`<@!E`',`
+M<P```````0"`4`````!+`+8`"`$*`&H`;0!S`&,`=`!L`',`7P!P`'(`;P!G
+M`'(`90!S`',`,P`R````````````$```4````````,D`70$!`/____^"````
+M``````$``5``````OP#/`$8`#@`!`/__@`!)`&X`<P!T`&$`;`!L````````
+M``%0``````P!SP!&``X``@#__X``0P!A`&X`8P!E`&P``````````````,``
+MR)``````$0!N`#4`W@"M``````!#`&\`;@!F`&D`<@!M`"``9@!I`&P`90`@
+M`'(`90!P`&P`80!C`&4````(`$T`4P`@`%,`:`!E`&P`;``@`$0`;`!G`"``
+M,@````<``%``````!``"`-8`A0#_____@`````````````)0``````L`#`#'
+M``@`<@#__X(`5`!H`&4`(`!F`&\`;`!L`&\`=P!I`&X`9P`@`&8`:0!L`&4`
+M(`!A`&P`<@!E`&$`9`!Y`"``90!X`&D`<P!T`',```````0(@5``````"P`6
+M`,<`'@!E`/__@0````````````)0``````L`.0#'``@`<P#__X(`5P!O`'4`
+M;`!D`"``>0!O`'4`(`!L`&D`:P!E`"``=`!O`"``<@!E`'``;`!A`&,`90`@
+M`'0`:`!E`"``90!X`&D`<P!T`&D`;@!G`"``9@!I`&P`90```````P``4```
+M```;`$8`$@`4`&8`__^"`````````````E``````-@!'`)P`"`!H`/__@@``
+M``````````)0`````#8`40"<``@`:@#__X(````````````"4``````+`%\`
+MQP`(`'0`__^"`'<`:0!T`&@`(`!T`&@`:0!S`"``;P!N`&4`/P`````````#
+M``!0`````!L`;``2`!0`9P#__X(````````````"4``````V`&T`G``(`&D`
+M__^"`````````````E``````-@!W`)P`"`!K`/__@@`````````!``%0````
+M``\`C0!```T`;`#__X``)@!9`&4`<P````````````%0`````$\`C0!```T`
+M;P#__X``60!E`',`(`!T`&\`(``F`$$`;`!L``````````%0`````(\`C0!`
+M``T`;@#__X``)@!2`&4`;@!A`&T`90`````````!4``````/`)H`0``-`&T`
+M__^``"8`3@!O``````````%0`````$\`F@!```T`<`#__X``3@!O`"``=`!O
+M`"``00`F`&P`;`````````````%0`````(\`F@!```T`<0#__X``)@!#`&$`
+M;@!C`&4`;```````P`#(D``````'`&``4@">`%T``````%(`90!N`&$`;0!E
+M````"`!-`%,`(`!3`&@`90!L`&P`(`!$`&P`9P`@`#(```"``(%0``````8`
+M,0"1``P`:`#__X$``````````0`!4``````6`$H`,@`.``$`__^``$\`2P``
+M``````````%0`````%,`2@`R``X``@#__X``0P!A`&X`8P!E`&P`````````
+M```"4``````&``L`D0`(`&4`__^"`%(`90!N`&$`;0!E`"``9@!I`&P`90``
+M````@`B!4``````&`!8`D0`,`&8`__^!`````````````E``````!@`F`)$`
+M"`!G`/__@@!T`&\`````````!P``4``````#``(`F0!#`/____^`````````
+M`,`(R)``````!0`F`"X`MP!#``````!%`&X`=`!E`'(`(`!P`&$`<P!S`'<`
+M;P!R`&0````(`$T`4P`@`%,`:`!E`&P`;``@`$0`;`!G`"``,@```````E``
+M````!@`(`*H`"`!E`/__@@`F`$4`;@!T`&4`<@`@`'``80!S`',`=P!O`'(`
+M9``@`&8`;P!R`"``=`!H`&4`(`!E`&X`8P!R`'D`<`!T`&4`9``@`&8`:0!L
+M`&4`.@``````H`"!4``````&`!H`J@`,`&8`__^!``````````$``5``````
+M)``P`#(`#@`!`/__@`!/`$L````````````!4`````!@`#``,@`.``(`__^`
+M`$,`80!N`&,`90!L``````````"``E``````!@`0`*H`"`!G`/__@@``````
+M````````P`C*D``````%`!L`+P!;`>```````$P`:0!C`&4`;@!S`&4````(
+M`$T`4P`@`%,`:`!E`&P`;``@`$0`;`!G`"``,@``````#@@`4``````&``D`
+M/0"Z`&8`__^"`````````$0(`5``````2P`)``@!N@!E`/__@0`````````0
+M``!0````````R0!=`0$`_____X(``````````0`!4`````#3`,\`/``.``$`
+M__^``$$`8P!C`&4`<`!T`````````````5``````%@'/`#P`#@`"`/__@`!$
+M`&4`8P!L`&D`;@!E````````````P`#(D``````'`#L`2P#"`(L``````$X`
+M90!X`'0`(`!V`&\`;`!U`&T`90`@`&D`<P`@`'(`90!Q`'4`:0!R`&4`9```
+M``@`30!3`"``4P!H`&4`;`!L`"``1`!L`&<`(``R```````'``!0``````8`
+M!`"V`&L`_____X`````````````"4``````-`!``J``0`&4`__^"`%D`;P!U
+M`"``;@!E`&4`9``@`'0`;P`@`&@`80!V`&4`(`!T`&@`90`@`&8`;P!L`&P`
+M;P!W`&D`;@!G`"``=@!O`&P`=0!M`&4`(`!T`&\`(`!C`&\`;@!T`&D`;@!U
+M`&4`(`!E`'@`=`!R`&$`8P!T`&D`;P!N`#H``````(``@5``````#0`U`*@`
+M#`!F`/__@0````````````%0`````(,`)``R``X`9P#__X``)@!"`'(`;P!W
+M`',`90`N`"X`+@````````````)0``````T`4@"H`!@`:`#__X(`20!N`',`
+M90!R`'0`(`!A`"``9`!I`',`:P`@`'<`:0!T`&@`(`!T`&@`:0!S`"``=@!O
+M`&P`=0!M`&4`(`!A`&X`9``@`'``<@!E`',`<P`@`"(`3P!+`"(`(`!T`&\`
+M(`!T`'(`>0`@`&$`9P!A`&D`;@`@`&\`<@`@`'``<@!E`',`<P`@`"(`0P!A
+M`&X`8P!E`&P`(@`@`'0`;P`@`&(`<@!E`&$`:P`@`&4`>`!T`'(`80!C`'0`
+M:0!O`&X``````````0`!4``````J`'<`,@`.``$`__^``$\`2P``````````
+M``%0`````&8`=P`R``X``@#__X``0P!A`&X`8P!E`&P`````````/#]X;6P@
+M=F5R<VEO;CTB,2XP(B!E;F-O9&EN9STB551&+3@B('-T86YD86QO;F4](GEE
+M<R(_/@T*/&%S<V5M8FQY('AM;&YS/2)U<FXZ<V-H96UA<RUM:6-R;W-O9G0M
+M8V]M.F%S;2YV,2(@;6%N:69E<W1697)S:6]N/2(Q+C`B/@T*/&%S<V5M8FQY
+M261E;G1I='D-"B`@=F5R<VEO;CTB,2XP+C`N,"(-"B`@<')O8V5S<V]R07)C
+M:&ET96-T=7)E/2(J(@T*("!N86UE/2)7:6Y205(@4T98(@T*("!T>7!E/2)W
+M:6XS,B(O/@T*/&1E<V-R:7!T:6]N/E=I;E)!4B!31E@@;6]D=6QE/"]D97-C
+M<FEP=&EO;CX-"CQT<G5S=$EN9F\@>&UL;G,](G5R;CIS8VAE;6%S+6UI8W)O
+M<V]F="UC;VTZ87-M+G8R(CX-"B`@/'-E8W5R:71Y/@T*("`@(#QR97%U97-T
+M9610<FEV:6QE9V5S/@T*("`@("`@/')E<75E<W1E9$5X96-U=&EO;DQE=F5L
+M(&QE=F5L/2)A<TEN=F]K97(B("`@("`@("`@("`@#0H@("`@("!U:4%C8V5S
+M<STB9F%L<V4B+SX-"B`@("`\+W)E<75E<W1E9%!R:79I;&5G97,^#0H@(#PO
+M<V5C=7)I='D^#0H\+W1R=7-T26YF;SX-"CQD97!E;F1E;F-Y/@T*("`\9&5P
+M96YD96YT07-S96UB;'D^#0H@("`@/&%S<V5M8FQY261E;G1I='D-"B`@("`@
+M('1Y<&4](G=I;C,R(@T*("`@("`@;F%M93TB36EC<F]S;V9T+E=I;F1O=W,N
+M0V]M;6]N+4-O;G1R;VQS(@T*("`@("`@=F5R<VEO;CTB-BXP+C`N,"(-"B`@
+M("`@('!R;V-E<W-O<D%R8VAI=&5C='5R93TB*B(-"B`@("`@('!U8FQI8TME
+M>51O:V5N/2(V-3DU8C8T,30T8V-F,61F(@T*("`@("`@;&%N9W5A9V4](BHB
+M+SX-"B`@/"]D97!E;F1E;G1!<W-E;6)L>3X-"CPO9&5P96YD96YC>3X-"CQC
+M;VUP871I8FEL:71Y('AM;&YS/2)U<FXZ<V-H96UA<RUM:6-R;W-O9G0M8V]M
+M.F-O;7!A=&EB:6QI='DN=C$B/@T*("`\87!P;&EC871I;VX^#0H@("`@/"$M
+M+51H92!)1"!B96QO=R!I;F1I8V%T97,@87!P;&EC871I;VX@<W5P<&]R="!F
+M;W(@5VEN9&]W<R!6:7-T82`M+3X-"B`@("`@(#QS=7!P;W)T961/4R!)9#TB
+M>V4R,#$Q-#4W+3$U-#8M-#-C-2UA-69E+3`P.&1E964S9#-F,'TB+SX-"B`@
+M("`\(2TM5&AE($E$(&)E;&]W(&EN9&EC871E<R!A<'!L:6-A=&EO;B!S=7!P
+M;W)T(&9O<B!7:6YD;W=S(#<@+2T^#0H@("`@("`\<W5P<&]R=&5D3U,@260]
+M(GLS-3$S.&(Y82TU9#DV+31F8F0M.&4R9"UA,C0T,#(R-68Y,V%](B\^#0H@
+M("`@/"$M+51H92!)1"!B96QO=R!I;F1I8V%T97,@87!P;&EC871I;VX@<W5P
+M<&]R="!F;W(@5VEN9&]W<R`X("TM/@T*("`@("`@/'-U<'!O<G1E9$]3($ED
+M/2)[-&$R9C(X93,M-3-B.2TT-#0Q+6)A.6,M9#8Y9#1A-&$V93,X?2(O/@T*
+M("`@(#PA+2U4:&4@240@8F5L;W<@:6YD:6-A=&5S(&%P<&QI8V%T:6]N('-U
+M<'!O<G0@9F]R(%=I;F1O=W,@."XQ("TM/@T*("`@("`@/'-U<'!O<G1E9$]3
+M($ED/2)[,68V-S9C-S8M.#!E,2TT,C,Y+3DU8F(M.#-D,&8V9#!D83<X?2(O
+M/@T*("`@(#PA+2U4:&4@240@8F5L;W<@:6YD:6-A=&5S(&%P<&QI8V%T:6]N
+M('-U<'!O<G0@9F]R(%=I;F1O=W,@,3`@+2T^#0H@("`@("`\<W5P<&]R=&5D
+M3U,@260](GLX93!F-V$Q,BUB9F(S+31F93@M8CEA-2TT.&9D-3!A,35A.6%]
+M(B\^#0H@(#PO87!P;&EC871I;VX^#0H\+V-O;7!A=&EB:6QI='D^#0H\87-M
+M=C,Z87!P;&EC871I;VX@>&UL;G,Z87-M=C,](G5R;CIS8VAE;6%S+6UI8W)O
+M<V]F="UC;VTZ87-M+G8S(CX-"B`@/&%S;78S.G=I;F1O=W-3971T:6YG<R!X
+M;6QN<STB:'1T<#HO+W-C:&5M87,N;6EC<F]S;V9T+F-O;2]334DO,C`P-2]7
+M:6YD;W=S4V5T=&EN9W,B/@T*("`@(#QD<&E!=V%R93YT<G5E/"]D<&E!=V%R
+M93X-"B`@/"]A<VUV,SIW:6YD;W=S4V5T=&EN9W,^#0H\+V%S;78S.F%P<&QI
+M8V%T:6]N/@T*/"]A<W-E;6)L>3X-"@T*`````````````````!D`4P!E`&P`
+M90!C`'0`(`!D`&4`<P!T`&D`;@!A`'0`:0!O`&X`(`!F`&\`;`!D`&4`<@`-
+M`$4`>`!T`'(`80!C`'0`:0!N`&<`(``E`',`"P!3`&L`:0!P`'``:0!N`&<`
+M(``E`',`&0!5`&X`90!X`'``90!C`'0`90!D`"``90!N`&0`(`!O`&8`(`!A
+M`'(`8P!H`&D`=@!E`!\`5`!H`&4`(`!F`&D`;`!E`"``(@`E`',`(@`@`&@`
+M90!A`&0`90!R`"``:0!S`"``8P!O`'(`<@!U`'``=``7`$,`;P!R`'(`=0!P
+M`'0`(`!H`&4`80!D`&4`<@`@`&D`<P`@`&8`;P!U`&X`9``>`$T`80!I`&X`
+M(`!A`'(`8P!H`&D`=@!E`"``:`!E`&$`9`!E`'(`(`!I`',`(`!C`&\`<@!R
+M`'4`<`!T`````````"4`5`!H`&4`(`!A`'(`8P!H`&D`=@!E`"``8P!O`&T`
+M;0!E`&X`=``@`&@`90!A`&0`90!R`"``:0!S`"``8P!O`'(`<@!U`'``=``>
+M`%0`:`!E`"``80!R`&,`:`!I`'8`90`@`&,`;P!M`&T`90!N`'0`(`!I`',`
+M(`!C`&\`<@!R`'4`<`!T`````````!$`3@!O`'0`(`!E`&X`;P!U`&<`:``@
+M`&T`90!M`&\`<@!Y`!0`50!N`&L`;@!O`'<`;@`@`&T`90!T`&@`;P!D`"``
+M:0!N`"``)0!S``X`0P!A`&X`;@!O`'0`(`!O`'``90!N`"``)0!S````````
+M```````0`$,`80!N`&X`;P!T`"``8P!R`&4`80!T`&4`(``E`',`%P!#`&$`
+M;@!N`&\`=``@`&,`<@!E`&$`=`!E`"``9@!O`&P`9`!E`'(`(``E`',`2`!#
+M`&@`90!C`&L`<P!U`&T`(`!E`'(`<@!O`'(`(`!I`&X`(`!T`&@`90`@`&4`
+M;@!C`'(`>0!P`'0`90!D`"``9@!I`&P`90`@`"4`<P`N`"``0P!O`'(`<@!U
+M`'``=``@`&8`:0!L`&4`(`!O`'(`(`!W`'(`;P!N`&<`(`!P`&$`<P!S`'<`
+M;P!R`&0`+@`4`$,`:`!E`&,`:P!S`'4`;0`@`&4`<@!R`&\`<@`@`&D`;@`@
+M`"4`<P`@`%``80!C`&L`90!D`"``9`!A`'0`80`@`&,`:`!E`&,`:P!S`'4`
+M;0`@`&4`<@!R`&\`<@`@`&D`;@`@`"4`<P``````````````````````&@!7
+M`'(`:0!T`&4`(`!E`'(`<@!O`'(`(`!I`&X`(`!T`&@`90`@`&8`:0!L`&4`
+M(``E`',`&0!2`&4`80!D`"``90!R`'(`;P!R`"``:0!N`"``=`!H`&4`(`!F
+M`&D`;`!E`"``)0!S`!``1@!I`&P`90`@`&,`;`!O`',`90`@`&4`<@!R`&\`
+M<@`=`%0`:`!E`"``<@!E`'$`=0!I`'(`90!D`"``=@!O`&P`=0!M`&4`(`!I
+M`',`(`!A`&(`<P!E`&X`=```````````````,@!4`&@`90`@`&$`<@!C`&@`
+M:0!V`&4`(`!I`',`(`!E`&D`=`!H`&4`<@`@`&D`;@`@`'4`;@!K`&X`;P!W
+M`&X`(`!F`&\`<@!M`&$`=``@`&\`<@`@`&0`80!M`&$`9P!E`&0`$@!%`'@`
+M=`!R`&$`8P!T`&D`;@!G`"``9@!R`&\`;0`@`"4`<P`+`$X`90!X`'0`(`!V
+M`&\`;`!U`&T`90`=`%0`:`!E`"``80!R`&,`:`!I`'8`90`@`&@`90!A`&0`
+M90!R`"``:0!S`"``8P!O`'(`<@!U`'``=``%`$,`;`!O`',`90``````````
+M````!0!%`'(`<@!O`'(`80!%`'(`<@!O`'(`<P`@`&4`;@!C`&\`=0!N`'0`
+M90!R`&4`9``@`'<`:`!I`&P`90`@`'``90!R`&8`;P!R`&T`:0!N`&<`(`!T
+M`&@`90`@`&\`<`!E`'(`80!T`&D`;P!N``H`3`!O`&\`:P`@`&$`=``@`'0`
+M:`!E`"``:0!N`&8`;P!R`&T`80!T`&D`;P!N`"``=P!I`&X`9`!O`'<`(`!F
+M`&\`<@`@`&T`;P!R`&4`(`!D`&4`=`!A`&D`;`!S``4`8@!Y`'0`90!S``L`
+M;0!O`&0`:0!F`&D`90!D`"``;P!N`!@`9@!O`&P`9`!E`'(`(`!I`',`(`!N
+M`&\`=``@`&$`8P!C`&4`<P!S`&D`8@!L`&4`````````````````;`!3`&\`
+M;0!E`"``9@!I`&P`90!S`"``8P!O`'4`;`!D`"``;@!O`'0`(`!B`&4`(`!C
+M`'(`90!A`'0`90!D`"X`"@!0`&P`90!A`',`90`@`&,`;`!O`',`90`@`&$`
+M;`!L`"``80!P`'``;`!I`&,`80!T`&D`;P!N`',`+``@`'(`90!B`&\`;P!T
+M`"``5P!I`&X`9`!O`'<`<P`@`&$`;@!D`"``<@!E`',`=`!A`'(`=``@`'0`
+M:`!I`',`(`!I`&X`<P!T`&$`;`!L`&$`=`!I`&\`;@!<`%,`;P!M`&4`(`!I
+M`&X`<P!T`&$`;`!L`&$`=`!I`&\`;@`@`&8`:0!L`&4`<P`@`&$`<@!E`"``
+M8P!O`'(`<@!U`'``=``N``H`4`!L`&4`80!S`&4`(`!D`&\`=P!N`&P`;P!A
+M`&0`(`!A`"``9@!R`&4`<P!H`"``8P!O`'``>0`@`&$`;@!D`"``<@!E`'0`
+M<@!Y`"``=`!H`&4`(`!I`&X`<P!T`&$`;`!L`&$`=`!I`&\`;@`)`$$`;`!L
+M`"``9@!I`&P`90!S````````````````````10`\`'4`;``^`#P`;`!I`#X`
+M4`!R`&4`<P!S`"``/`!B`#X`20!N`',`=`!A`&P`;``\`"\`8@`^`"``8@!U
+M`'0`=`!O`&X`(`!T`&\`(`!S`'0`80!R`'0`(`!E`'@`=`!R`&$`8P!T`&D`
+M;P!N`"X`/``O`&P`:0`^`#P`8@!R`#X`/`!B`'(`/@!%`#P`=0!L`#X`/`!L
+M`&D`/@!0`'(`90!S`',`(``\`&(`/@!%`'@`=`!R`&$`8P!T`#P`+P!B`#X`
+M(`!B`'4`=`!T`&\`;@`@`'0`;P`@`',`=`!A`'(`=``@`&4`>`!T`'(`80!C
+M`'0`:0!O`&X`+@`\`"\`;`!I`#X`/`!B`'(`/@`\`&(`<@`^`#8`/`!L`&D`
+M/@!5`',`90`@`#P`8@`^`$(`<@!O`'<`<P!E`#P`+P!B`#X`(`!B`'4`=`!T
+M`&\`;@`@`'0`;P`@`',`90!L`&4`8P!T`"``=`!H`&4`(`!D`&4`<P!T`&D`
+M;@!A`'0`:0!O`&X`-`!F`&\`;`!D`&4`<@`@`&8`<@!O`&T`(`!T`&@`90`@
+M`&8`;P!L`&0`90!R`',`(`!T`'(`90!E`"X`(`!)`'0`(`!C`&$`;@`@`&(`
+M90`@`&$`;`!S`&\`(`!E`&X`=`!E`'(`90!D`!8`;0!A`&X`=0!A`&P`;`!Y
+M`"X`/``O`&P`:0`^`#P`8@!R`#X`/`!B`'(`/@`X`#P`;`!I`#X`20!F`"``
+M=`!H`&4`(`!D`&4`<P!T`&D`;@!A`'0`:0!O`&X`(`!F`&\`;`!D`&4`<@`@
+M`&0`;P!E`',`(`!N`&\`=``@`&4`>`!I`',`=``L`"``:0!T`"``=P!I`&P`
+M;``@`&(`90```#(`8P!R`&4`80!T`&4`9``@`&$`=0!T`&\`;0!A`'0`:0!C
+M`&$`;`!L`'D`(`!B`&4`9@!O`'(`90`@`&4`>`!T`'(`80!C`'0`:0!O`&X`
+M+@`\`"\`;`!I`#X`/``O`'4`;``^`````````!8`5`!H`&4`(`!A`'(`8P!H
+M`&D`=@!E`"``:0!S`"``8P!O`'(`<@!U`'``=````````````!T`10!X`'0`
+M<@!A`&,`=`!I`&X`9P`@`&8`:0!L`&4`<P`@`'0`;P`@`"4`<P`@`&8`;P!L
+M`&0`90!R`"0`10!X`'0`<@!A`&,`=`!I`&X`9P`@`&8`:0!L`&4`<P`@`'0`
+M;P`@`'0`90!M`'``;P!R`&$`<@!Y`"``9@!O`&P`9`!E`'(`````````!P!%
+M`'@`=`!R`&$`8P!T`!,`10!X`'0`<@!A`&,`=`!I`&\`;@`@`'``<@!O`&<`
+M<@!E`',`<P```````````#T`5`!O`'0`80!L`"``<`!A`'0`:``@`&$`;@!D
+M`"``9@!I`&P`90`@`&X`80!M`&4`(`!L`&4`;@!G`'0`:``@`&T`=0!S`'0`
+M(`!N`&\`=``@`&4`>`!C`&4`90!D`"``)0!D`"``8P!H`&$`<@!A`&,`=`!E
+M`'(`<P```````````!\`50!N`&L`;@!O`'<`;@`@`&4`;@!C`'(`>0!P`'0`
+M:0!O`&X`(`!M`&4`=`!H`&\`9``@`&D`;@`@`"4`<P`D`%0`:`!E`"``<P!P
+M`&4`8P!I`&8`:0!E`&0`(`!P`&$`<P!S`'<`;P!R`&0`(`!I`',`(`!I`&X`
+M8P!O`'(`<@!E`&,`=``N`!D`20!N`&,`;P!R`'(`90!C`'0`(`!P`&$`<P!S
+M`'<`;P!R`&0`(`!F`&\`<@`@`"4`<P```````````````````````````!4`
+M0P!A`&X`;@!O`'0`(`!C`&\`<`!Y`"``)0!S`"``=`!O`"``)0!S`"X`````
+M````````````````````'@!#`&$`;@!N`&\`=``@`&,`<@!E`&$`=`!E`"``
+M<P!Y`&T`8@!O`&P`:0!C`"``;`!I`&X`:P`@`"4`<P`:`$,`80!N`&X`;P!T
+M`"``8P!R`&4`80!T`&4`(`!H`&$`<@!D`"``;`!I`&X`:P`@`"4`<P`H`%D`
+M;P!U`"``;@!E`&4`9``@`'0`;P`@`'4`;@!P`&$`8P!K`"``=`!H`&4`(`!L
+M`&D`;@!K`"``=`!A`'(`9P!E`'0`(`!F`&D`<@!S`'0``````````````$$`
+M60!O`'4`(`!M`&$`>0`@`&X`90!E`&0`(`!T`&\`(`!R`'4`;@`@`'0`:`!I
+M`',`(`!S`&4`;`!F`"T`90!X`'0`<@!A`&,`=`!I`&X`9P`@`&$`<@!C`&@`
+M:0!V`&4`(`!A`',`(`!A`&0`;0!I`&X`:0!S`'0`<@!A`'0`;P!R````````
+M````!0!0`&$`=0!S`&4`"`!#`&\`;@!T`&D`;@!U`&4`````````````````
+M```````````0`%,`90!C`'4`<@!I`'0`>0`@`'<`80!R`&X`:0!N`&<`2P!0
+M`&P`90!A`',`90`@`'(`90!M`&\`=@!E`"``)0!S`"``9@!R`&\`;0`@`&8`
+M;P!L`&0`90!R`"``)0!S`"X`(`!)`'0`(`!I`',`(`!U`&X`<P!E`&,`=0!R
+M`&4`(`!T`&\`(`!R`'4`;@`@`"4`<P`@`'4`;@!T`&D`;``@`&D`=``@`&D`
+M<P`@`&0`;P!N`&4`+@``````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````$```D`````$P$3`A,"LP03!6,&$P<3![,)$PFS"Q,+LPT3#;,(XQPS'W
+M,?\Q"S(E,BTR4#**,I\RLS+8,M\R_3($,R$S03-1,V`S9S-Q,Z,SOC.2-<XU
+M%39?-@XW'3?%-]0WJ3C8.!$Y&SF..;4YQSGX.3DZ3CIU.I$Z&CL^.Y<[D3QV
+M/2$^%3\A/Z$_Y#\`(```'````!TT`#9=-APW<C?A-[`],CZ9/@```#```#0`
+M```2,'0QC#&X,0LR>C)[,W$TLS4!-A8Y2SK#.O`Z'CV</;P]+S]0/UT_T3\`
+M``!````L````V3`3,5$QB3'#,?<Q+3):,I<RQ#(-,T,SA3.[,_TS*C0,-70U
+M`%```#P```!\-X8WC3>4-YLWM3=8.)DZ6#M*/',^?SZ</N$^%3\</RL_-S]&
+M/U4_:#]R/Y`_V#_F/^L_`&```!@````",`<PKC#;,.TPJC[+/@```'```'``
+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
+M,_PS`#0$-`@T##00-!0T�<-"`T)#0H-"PT,#0T-#@T/#1`-$0T2#1,-%`T
+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
+MX#7L-0PVX-D0V:#:(-I`VF#:@-J@VL#:X-L`VS#;L-@`W"#<0-Q@W'#<D
+M-S@W3#=<-VPW=#>$-Y`WF#>\-\0WS#?<-^PW]#<(.!`X*#@T.%0X8#B8.+@X
+MU#C8./0X^#@4.1@Y(#DH.3`Y-#DX.4`Y5#EP.7@Y?#F8.:`YI#F\.<`YW#G@
+M.?`Y%#H@.B@Z5#I8.F`Z:#IP.G0Z?#J0.K`ZS#K0.O`Z^#K\.A@[.#M8.W@[
+MF#NX.]@[^#L8/#@\6#QX/)@\N#S8//@\!#T</2`]0#U@/8`]H#V\/<`]`.`#
+M`#P!``"`,%@Q9#%P,7PQB#&4,:`QK#&X,<0QT#'<,>@Q]#$`,@PR&#(D,C`R
+M/#)(,E0R8#)L,G@RA#*0,IPRJ#*T,L`RS#+8,N0R\#+\,@@S%#,@,RPS.#-$
+M,U`S7#-H,W0S@#.,,Y@SI#.P,[PSR#/4,^`S[#/X,P0T$#0<-"@T-#1`-$PT
+M6#1D-'`T?#2(-)0TH#2L-+@TQ#30--PTZ#3T-``U##48-20U,#4\-4@U5#5@
+M-6PU>#6$-9`UG#6H-;0UP#7,-=@UY#7P-?@U##88-APV(#8D-B@V+#8P-C0V
+M.#8\-D`V1#9(-DPV6#>(-Y@WJ#>X-\@WX#?L-_`W]#<0.!0X'#A`/5`]5#U8
+M/5P]8#UD/6@];#UP/70]@#V$/8@]C#V0/90]F#V</=`]Z#T$/B`^.#Y@/@`@
+M!@#``````#`$,`@P##`0,!0P&#`<,"`P)#`H,"PP-#`\,$`P1#!,,%`P5#!8
+M,%PP8#!D,&@P;#!T,'@P?#"`,(0PB#",,)`PF#"@,*0PJ#"L,+`PM#"X,+PP
+MP##$,,@PS##0,-0PV##<,.`PY##H,.PP\##T,/@P_#``,00Q"#$,,1`Q%#$8
+M,1PQ(#$D,2@Q+#$P,30Q.#$\,4`Q1#%(,4PQ4#%4,5@Q7#%@,60Q:#%L,70Q
+M>#%\,8`QA#$`````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M``````````````````````````````````````````````````!287(A&@<!
+M`#.2M>4*`04&``4!`8"``/4["1PH`@,+@P`$@P`@TF-(B(````QT97-T+G1X
+;="YT>'0*`P),FW]/_;C7`3$R,QUW5E$#!00`
+`
+end
--- /dev/null
+begin 644 test_read_format_rar5_window_buf_and_size_desync.rar
+M4F%R(1H'`0`]/-[E`@$`_P$`1#[Z5P("`PL``BXB"?\`!(@B@0`)6.-AF?_1
+M^0DI&0GG(F%R(0<:)`!3@"KT`P+G(@O_X[\``#&``(?!!0$$[:L``$.M*E)A
+M<B$`O<\>P0";/P1%``A*2DI*2DYQ<6TN9'%*2DI*2DI*``!D<F--``````"Z
+MNC*ZNKJZNFYO=&%I;+JZNKJZNKJZOKJZ.KJZNKJZNKKZU@4%````0$!`0$!`
+M0$!`0$!`0$!`0$#_________/T#`0$!`0$!`-UM`0$!`0$!`0$!`0$!`0$!`
+M0$!`0'!,J+:O!IZ-WN4'@`!3*F0`````````````````````````````````
+M``````````````#T`P)287(A&@<!`%.`*O0#`N<B`_,F@`'[__\``(`4`01S
+J'`/H/O\H@?\D`#O9GIZ>GN<B"_]%``(``&1RGIZ>GIZ>8_^>GE/_``!.
+`
+end
--- /dev/null
+/*-
+ * Copyright (c) 2003-2021 Wei-Cheng Pan
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#include "test.h"
+__FBSDID("$FreeBSD$");
+
+DEFINE_TEST(test_read_format_rar_filter)
+{
+ const char *refname = "test_read_format_rar_filter.rar";
+ struct archive *a;
+ struct archive_entry *ae;
+ char *buff[12];
+ const char signature[12] = {
+ 0x4d, 0x5a, 0x90, 0x00,
+ 0x03, 0x00, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x00,
+ };
+
+ extract_reference_file(refname);
+ assert((a = archive_read_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_open_filename(a, refname, 10240));
+
+ assertA(0 == archive_read_next_header(a, &ae));
+ assertEqualString("bsdcat.exe", archive_entry_pathname(ae));
+ assertA((int)archive_entry_mtime(ae));
+ assertEqualInt(204288, archive_entry_size(ae));
+ assertA(12 == archive_read_data(a, buff, 12));
+ assertEqualMem(buff, signature, 12);
+
+ assertA(1 == archive_read_next_header(a, &ae));
+ assertEqualInt(1, archive_file_count(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+}
--- /dev/null
+begin 664 test_read_format_rar_filter.rar
+M4F%R(1H'`,^0<P``#0`````````HUW1`@"H`&'`!```>`P`"20.Q32)L250=
+M,PH`(````&)S9&-A="YE>&44(945#(D9W!8B+N7<A820NP2+`12U(XQ8(Q8*
+MR-P6[)=A=I<2""D5%(X+$S!Z!"[.A(!!LB%^\+4]S%S%SUS,7.GUS%S,<Q<&
+M'0K.A"0ZX!B$$Q4!<<N-AB+BA((%_<NKA)?5YNN<NY<A#,]]UKYK[KYK7R:"
+M<YRN56ZW6ZW6ZWT55<G^2W^@:KS7GYYYNNJZJ^<L)_3_-,<@`8``@``G,(-@
+M)0(B#3`0```!HG0@.-$Z4!62[%"KF2"Y)?`I&153`Q*N41`U62M@!!5M0&:K
+M`C1)!#8"4CZ7'^?8A"P`!S/Z,@`"8CI>`S2#`=A.D%X2[-NGU(*VLHG0+KG"
+MV2*8G'[N``/\NP%@`$+_T&``$P!_EV`L``NK^@D``H@/\NP%@`%Y_T!@`$0!
+M_EV`L``OK^@0``B`/\NP%@`%_?T+@`$P!1]UJDRA-<"D?]Z],JM,_I>F-Z%2
+M=^K_AM;?TWL7W;=)5IVMR9/,?<SBW-9OQ?!S??>&MR_?>)XGBMEOV_`6YMOX
+MBW[EQ,<ADEOA^+W_@8F7E[]-)`6SSGZ4/0P.TL^9?S?NTMG]X==OX.SWWY'W
+M(T77V?Y3^>WWWEOYN-]^!]8[[SC%LVA'\\]-V=G\K\Z<>_:\R8JS_&^V6^,^
+MV^YE\P01SFQM(R,N_\F435/L*/M\R_%3=*FE9*_]$FUXM4V3GD]5[0ZK.9%Y
+MY$N^2YBE#R3_)-FE")5N80#3:6-1HW3F_.[=R;:_/#4L3BU"[P"JJ=N?"X*0
+MF5-`^3%<ZJSN3"IN=_GK#WSZ<V=DG(&6_?$MO`S[9^876I6I*WJF[S5:*_8G
+M-]_WS;OK=7Z<3G"J;$#_UB=_J#15^)1G":SG$2%IN?MSAR5YG-9B<TC.CVEG
+M;>TDHYL`S><S>7,'(K2*#E]33/,Y>!X7BB=$24B6GL+A.:G.,3?_N?C-U)ZS
+MH5":OVIK,W'#FV:$NRDX)LZK9-J)W_3KK=558VQ(E)U\[VM!`[5"3Q13)U,;
+M*O3CQL9[9.Y:6@O82?2"6*YL3])&?)%/.\+TI2%BS<R?]U(DZ'J3^_A%WM9P
+MTWAB'S[LW:;7J@?Y(_B0@_DINJ\UBDT[4V_ZE)K`$U]XH-RPJTTV>J_"(%:_
+M$G[Z8Q%:;S(!W>%+2W7F3BU3YV='K8R%9,S5\%<;;KC6>85MA!0\"^+!L+0Z
+M\Y-)-WZ"D]4VJ@`V0*2[+SR6*?SAJ'VEO`=WRA_C6J#69P6_8H1/#NK2LW.3
+MFEC5RQFIFY<MR7<906S%@N1#4;35-<^^A:%$90V(2('6PXK""6[N)4]F%%
+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
+M'YJ#,27;*W&O.DXR5*T)I9QX5Y_IA'WT&=SG>K"Z/4M5&R:!;GPT&OH`
+M-;+'?+MYG!/=<C<MG*5^@C]>PY_P#S7S^N*Z:!/U'#@,/NLEF",-6,P)FHT#
+MYOW(EYE#4<`L*FJ*^^]V4/)M@7M<<^L.70K*4`L;/5FQ<$#P73'"-740,2HL
+MP/_GSL2K=&IJ9HYE#VY1F2,]01G-I^.8+PT,4U=\^=\,C)PT(O]S\IYT5/'3
+MP45@8^U?D\L])M8#V&;X9TS6[_<9\4A\TW!3(E9(A`2'LD&)_8I$/8]F'`R)
+MX1"G((X"*W'#Q*?AGGVDY94<Y9M9SX6CJ67)$X[1TI3BJ&:O&[D2L[`6],"X
+M7)9\,V3NU(+I]#GV?4'GP[J8]B!;5LHHXM8L[2VB:9`@ZB+!/5A4@6L%6T0K
+MVB?(<QE/U\)%F7N0KGE&)WS927G2%.>K@WS%*/!@OX^9!W6/"!_K9;F!SJ=B
+MX(W9.B`6$IPCW-WE2C!XQT#;#O:^Z5H'PBDI1[K/P@U6ZC*QXY][+5]XP7N-
+M_(WLCT'^I614ZQR>]PL%%LKJL&&2A+!]`DL8<:!>F;RP"W]GUIN^A*>>-,LB
+MOK(Z9@X=IX!\(TM3*JWQ\<7X"SNI[?LZ#"5&1912PR\GS`4:&3P"IHZ5!7?9
+M^@=42==Y)'NYS$H6;$G,$I7Q79;8%7@[VD,537-%%Q.5.`2"31Q0X!-HM:3-
+MWN#GX9^<1N=5X0K5)=!D`V>Z4G^X<XSJSB=E)M@=FW`E/;(G/66&+$']7DD&
+M`IY=V&9:Q5`4VJ-5Q*&.S?(8+9]J$!*0SC%'++XE-&YEMFA9780VVG.1F*PI
+MZAFNKM%AXFKL*D^%>[0@V0'.#Y`Q*:5'P%Z8H]'.0RP"X3[3`M;_'L?_&G.-
+MHP)E4\L^%9#TN9I\C<(HZB[%FQY%B7C"RQP`*]69]=`,M@*-18P[V#U]L-).
+M71;DK$#][8BUQ>):,5^S--<;YEQ6]/>Q4;A,;OM3^KRG]8+NP=)N535$L&B#
+M6RB2Q(`ZPL$'0%C#C'B#9=(:FCG!6-X+5#Q\<F`/2-)RTS^<A5M-)XEZDIS^
+M6D+VF:B&+G^F?8X8\\=2L[#3U,9_.V&.IC]7/0;'3Z@_:,?LT,*-'^\RUI+:
+MI\)]HB?W$TK'E\D,+E[,.R68@9K`<,B]8+BVZ@,W#1[P/_&R(J/X&PG-OGRM
+M6Z<$O8819;BL3WPB/MNB&0?>C-GK`O76RRHX8L%5?P21+O.Q9Y>N(IZ'=ZNT
+MM3VN]C:)DY==?M"!D,"^-K]<F.5-E,-YY@Q3<&9\^DYJX[+MSBV=[V!OC8RO
+MK&WMC8:&FG].2,Q8ZI1N#AD+MVKTU:7>%;?$L'M8C9ZE-/B,3?K&L5^T<8K3
+ME]$B^DZ1IE[%GF=S">HWL1/R/6DD94)[/(JR[R=B9,N8DPJ/?B]-^W/[/./T
+M_CZ+Y30%[0GU\BQ2I[-&+)+OSYBS----(Y$GD<!+RU!J=F`4Z3J^'SLG4=B@
+MDN&\9F=]9+Y_^!)>QF<.L:]//0^T6Z84Q(9NA9K@TQ\5FK:\=FG\:*%.;&XN
+M7#O'L3]8,2U2:FW2'G&X,J.Q?8_/OJVYI6Y;:-EJ*`X5'I-^-C&J)QH:$#S$
+MB7DUNL[DJ)JD5Z;W#YX_'$]T`=TTQVGJAV.'@+K4LF0GE*XUE85VK9G/<1@4
+M_+R<0**9HUP>M[)3='#?HU>0#-/8O=56'KEV0OLBT7;%LUTDFUG.*\W+.PV"
+M)KVPM$X<,MTA;;=@STH;@0[]'B2!K`]=Q#3O:8($W82D=D9.V_MM)S^\)W$T
+M%^C`2(5%LG(=7UQ;^4VH[NJKHH'/!+-?3][*K-_-HVZB(Y19@K(C*K<4]Y0P
+M_U`4@]%CWY#04?2S<P-.<B]*HT'GQJ>"%5)07)NL"P<1:`H"4EU>^QXI</E1
+MN(9N2S4,ZP#\$SZ5UHJB?*I1:\\K)!!B&0L.9PP0M1AF>^H=E%1PR1FN*WNV
+MZ-!P5J5UKG28S_K^I_HQOFQA)S_D#MO58Y/30FPO9UO"4/9CZOT)TDLK?IP#
+MW;GKO:.J26YV#6*-88/1$HW!!=BNL,[29`(E6E;P8K2'WRDZ-TT=B9A=V"HA
+MCLUC1RQP`59#S#2P8IYDDQZ0\UIF`5GO<2`01RZ0R;0LI39$0K!38R%*1%N%
+MVQ5/459KFW6%$LTIG:-0:9>A8-#3H/UFL]TAMRB=^P<%!U3H[SGU_1/TUWIF
+M=X(S(/T&MI0T))0OGQ_SQWJ>E$GX*'<(F*I[!>I1Q!41!9QJGSJ3:?]BA"#:
+M#(=G51_1/ET0KT:>VMV_(=\:%9!V)BQGR/HU@V2''9.L<GCF=3D9MR:T'KDT
+M,';#^T_6^8.LIS\BXHT;^TH#Z0Z./62QE8B-=$%JY#MECVR8H<42TP</!I:8
+M(;&ZI.M*RJ1"O&_,9(J)K;TFKG/JA_QDS4LRD<Z2*`3K/T$X[]#"'D1[:2;!
+M$O1#*DT<KQB4D\C^L_=%LA;GV%@OH2#8ZEHEQ(Q:&MW\U-M0#EMR!`P@B[+V
+MR;=2QH-=4CO"4^@P)F4;*U>&._\QGLE<^^J$^"]IC.F("';W[)#^VJBF_/#V
+MUQ9M5&AQ_;6'JC'%/Y6R^^DU^O5B[8:.30=DE?.+"99D[VK,[-/KRQA$05UV
+MJ=[,>+Z2,+HQT.#-*DK>'`CEFL(2D:X:"%#/>V5`4^U8/?=8..3@U>I;BX\+
+MKN]],T==QU/-76P^Q;A&$9H'C98*>@F"#R-XVT.\;&M!KC-M6'MA$0T-`'BC
+M>^B9ZXU/6_QO/R)>X[E=1C165F"`01W]%V%X``P:D9K(A+R3;VCF:(K''%#)
+MR:*ZK7`*>V?&FZ<%G:(?W!!C^J,U(1N>;=:3ELVCVR0M2/+^W&J=P%2_?@H\
+MAY/:D-"R[EZ12,CZ3APE=RX."Z5@]L$G-(P</5E1^T3*^@IN,&&AY+..6GT7
+M2#Q:OM;U,@E(C6>..C/+[!%[KN#8<&HXD0_4G30?)L&`*T\V:10WY!_8"@`G
+MEC]/.5@%V?X0)M9(PA2ZD[V`/Z?H-[O6-Z_5-[ZLWK]`WOL3>O$&]]8;UT)O
+M?9FZ%#\D!`MMS;II(,I;</)F3O@3^.J1ZB:!%AV/$%`DYFV2%C1H5Q>3.,PF
+MQA1(+OA.\^&@"%LA_B@.ILM\"B(LBL_.3^EJ58"/B=81!/D1S0E[2`D4UGA6
+M*P=]F9HPH[*`=]A!+9#"GQ85?%FWD\/?9&LK,S^R$3(3*,R'NC9`85G?>1IE
+MF2&B=7?X5M?A.("A_V5NV8"/H5"5@>>?!EQ$.44!XR96KG;M!,(9Q8OG_4)Q
+MA-^A.K$BLL"=ZIJEUAL7!>A/#NM473W]KT"0HS+-*!"!7O`'SB(4!/>%S2\^
+M2$!Q,.5AG0>>5MHSF?3\:^\`0"Y^>2AYG>ONXH_"14QERG4V\F9$GQ^$@,NL
+MU>0LWNQ7>R5'S>\.)O-$214$`WJB-]+I0H=RV/21)Y!,:LHCUPO?/FIK5#[^
+MF>-7A?=?97NGWJT[[4]RE,=VE0:"Z?Q$]67HHQ$>AQR$^BY\)9F#JD3N]K@G
+M\..S:3JWL8]5*8/+R`$&=K^L8![!@,SR4%UK"9N\S.0%,8R7YS?>F,I[9`'>
+M@50$=KI11*9+OI#*3GQ3[]LY[=%T7OV%VMB##\',\>=0'-E*K3DIPI@X7BV_
+M^>T&YN".A,!\>(.4<A.^O9CR_/+.H1R([`C-[HKMU@!&A;`0:E.A"TVB'T!:
+M!`]I<00EY)439"7B5$(5A1":/TXT*R()D2T#%K423[8XQ!YA$UEAXU5FCPL-
+MT01Q0S*2@!.H1]`60!K#ZEOT,,E8>EHPY=&='L\\EX\G*F5_/`6BPBTD:#\5
+M\C:!QUYT-,.J-5%Y-3D4N$@*391%]&<]GXKC98<39%+VZDZOTDC0KZ:!J]_8
+M)$\!U!D>M)4$+PU-$8_0G-6(.ZW=Z=:FC`VTX?0I9R]WT,`C<<]Z7.7&T_J(
+M3K9E'0DV:==I:/9C\WX8Z^R,8)/_'HG%2,R=NJ+A%76:1IASO-SRC9>;RGV^
+M]$S8D6]NT3O8)^;RT3LY\=^RY1J(\OVN6;;<&B%J$DU],YC!'%<5T>$*TV6Y
+MH]%X<Z)!@_#19@7-:B&X>"RBYBTWG)+44(2)N.CQ5!6LZ+JR'2PKCX#E;+XF
+M;VN8S]#SS<+?ZNFTE^\X_!&:6HT`P$SZO:SE>24]3QX#A7JU3#4-4P7W5Z?3
+M;)OQ8?^;56$D0:@'QUC'4>/A*=C`$R61=?CW-0Z%S=0>,7;9SC,*[]7I#P36
+MJ^\<7>,2\OV7,6Q!RKUM?82^S@SVAUE],41S&ML[J/M%9.8R:A'RVK[]*E]X
+M73FE.EA=Q"/M]F3?:]]9I4W"\QCKJ>E,CNVO#?ECNLK;/]J0SI7U-&7@9:[8
+M0>_#ZG48AW,9'S4]T@@C[W'8CU>_49/6)AD_4^'[29UHURLK]FMIYRNUKT1M
+M*GJJYO@JL:VCIUUBWZ.Z*@08H1*+)+$)6)<6"FJK-)PW&APJ9LJ*/D_W\U]C
+MPO5_T\P];#%P5'L%!7!WJTP(S$R4>4R;#MTC/0PVR?*WLE#(GO=(YRD)U^>^
+MA_=C<4/RV/DMPX<*P]LL5#!#>56R;T"'+AX:$J\===_4/QPHMLM!YFOJ$87B
+MT.CKPLDKJO:.ID]%?/R0B6G7=:)6V3P-CUK?L;ESBUWZ&B`<L4+5W0BI0ZU_
+M9AJ^&+$0]=N+C?S@--(:B"R0>*?U]:0/YE;"/_4P6#?0.(#H##B?DF_5GOS\
+M@B:\`E'?#`;Q.NZ8J_,(&;6$^`OY???"'P<M"(B8>CQA,VPJ]1F[]%W16C0_
+MO";N360K[J=O,\K]EC-?:2O9K:=@NV+>B8E)S138$9=Z_I#ZGGUA.(5A[1T3
+MRZQSG0)/[&EMA(*<XJ9J-D);-_.-39/!'.KEAXJS!(D$WTN/0.,=OC')QK;Q
+M44/L=B<''1YA!D4K#BG3P!,N5S*JXC93L:+")R5'XT'U/;5WB/XE8'H37K(I
+MW],6HGN\894\9_WERHA(Q@5(O?:.;<^@L?=Y.`,N`N'\0R]?[QFI;?#"!A0.
+MG4P1](P!ZZE]"-MTB9,RQ]W=R\BQ+=7"=FS5SQAY+P-ES5A3$+4`8\"9M^<@
+M/G&4B)L'%>0MF0TNI9%@O_%]XY0:"G1&7J#+E?\FFW_Z,]P:\C`59$9-PC/U
+M68?NL1\JTP_ON.<`+F]90.,U3X^$%Z[M&(VJ]-]1+3DJ2H(%GUBZQ@<.LY]Z
+M-%R<_B8-1LM[WH,8%&QV?F2?/$=<YD%S<7\A.3T(&9Q/]$WZ`\U(PF[S=$AD
+M\9?3JC2O_$;4X:2TB"[TM(BVM1I/YS#]^HCY>J8?[_Z`8?S(78\CS=X#JKF^
+M22T7A0:Y,Z:[]"`GWJTNZ0\Z9>;%5LCP@)*75)=9W:W6DH'2,Z7A^B<M<GPM
+MTDD<1@)^>WXS_\H5GWS-4/H/HNM#[&+JB4FNWD[3!SY(/,F%"QS^B:)X_D-L
+MDD?-\,6)_WL9!E<]2875K=4PUYU<;G]:60,?.%AK?&]F.3Y1(=HO+G7S1,3`
+MT9<S.L8AL^K-:I,C5%(T+`[US\#O+5U7[!+,`E\6)B?^#J31/M^NK]'U1%/S
+MK#6%4IU(ADA[J'O$H:K2`E#/FIOF4EC\BM*-EUUE`:"/]H;V*<T5X[8!X'.\
+M*)8M8=UF?T;-19W%:HT><K2"%[?<'',!XX['&ZZ&O3=Z##0YPV_6(C0!CZ<W
+MH%*9<4)#'LQ_9T#W87FW5"`%SD#3I$M=2?<^<22N,AR$Z]LL1T'M8)^YA)$;
+M2D4\@B46YT;IX+ZD]\L=)1I?=(P8DD:6E-N<*N`+WT$8E;"/#ML6&EF:S"6*
+MR<@+-#69>7`O18!"QVW@!VLNCC7^7\/-9.[QHD\!26?5WV:.??H*.MT7`@/?
+M1C4MBZUT4I;JP"L"&!O$-LC<2+AL.9PKZ3>E:>\:T$6HJ7,/^4-75FX[*14+
+MR.Q@87LTF0.;KZZ-AJYK$B+?-&9;-%=3"D!Q@Z9_"<6D=1)%D8/J("A,W"C-
+MNSQJ4\S2)="OZOEFB=\5\KS4R.RM@)#E@&AIA-W%-5Y\:)LM3-5,_#3%[EY7
+M(1];N'7*'.1FD<A8HP5?FKD4XM#`9V$-0BOSZ@8<5LZ5F0]C]D[Q%4=\:"0Q
+MP\RE#T+F[8&JTM]`V@`O:`%X:3L3O'(/H%T,Z=F3T(,XT(5J^M/*+CP[)^EI
+MB;,NB1G<R3D8'6D'_I8*WPU#_4UZY)L?70#Z*J;RL5ZFC04>,EK>UE30R29O
+MQPV`BQTR+1XP5)HSHK80=#-NJ%S#5=69OZ(MU"?T-U8N-6J(6"N,:GRU,<M1
+M:&QVG)8E5$>V%>K)H*YBR,6=Q723OU>S1!6%,;V2-E=]9K$HGI5?J*%/$H+N
+M#7>QZK8B"KB"7[VMHBN@+0,M<1H!?PVQ53GX4&TY<LD^PSY0^YX1I"EH7_TI
+M/_Q/F[-XK'DH>7T?N2>*!:^C:M%GQ@0,L\;.0@UO-*@/I/E$Q9`!&B@1/O?1
+M[5K+RI,$QBAU^2HVI.HBK0#O#Z5V3Z&-:L\^_TVO[6W6RM-?0W6':.A\6R*^
+M(OGN)1@]5)GX^BC$$ORC)#OL*\5._Z!*4Q0X!VOEA[1&*,JKY&^DA%[B*%E]
+MN4?,4;DE5Q*PZO3?Q.RU8U4A\$&909,U2^A2XRORO<'H$-D'E3R#/CV5=/#M
+MA5_,9N+"2"X'8YU9L4W9V",>./EK26H5/8K[VL@W\-1M[3D=D6SCT*?_=N,.
+M/CII-@@"=-YZ9&N6CKN!%W(C+K!4ET*W1&G:F&"$*$1B_],-UQ70OM'E`>=/
+M*\,!!T!ENFS.YZ[49%/3UKM40KZA.*PXK9(A"^!1OSB(BNXA'OE.*9,P@V[*
+M8A)U#!/&GW`-;M(AK<K&$+2CN%1LB(/(O%"0J,-+R;3E!VQ2\4;S#R`MDW%^
+MGO10UC*&'.122,6%KSW9`LY-W<^2ON'L<$5DW%CVI:9">S';U0RM;,&O,H#8
+M&'%KX[?L"VG/#$:*-Y'-]B9(;!'(U">&?,O81RR7'NKXZ^_KX0N(SR^T9IX?
+M97_7'?]BIOT-#7G%_$P5LN)#">:Z0=:$3X=S2B/AH?0&\)L$3=01\1'<KHA_
+MW/)C-/V61[0XULR$E.9GX(T9IM!X!&\O?SXBA(8<(IP)VH!OB!''TQ_42P=`
+MS..K_^]NL`<@[D7TH@.K9KLDLSU]CXHPA#6(BPXM5N<OGN$BF>=$SQ9-J,Y*
+M,W5#`H?AZU9UOSR1*3JZUS<S<G(9J\8,%.]#0"J.NC$T>RI.4/0@':$,O;HI
+M=R+3?TJC,!%@FEI!X$C0`H$0I@O9=-M=T,(R6<[K[2>+77D#U@H373M;1F!E
+M*DC4YTF2ND5&IY2<W*[9T)[=.NTDH=GT:8]G6U/4S]$WER22M[XEGCZW$G%.
+MQ/M?H37&0VJ1.6HS%PJ*1QHU:F_!!,P[%BJ>A'&XMI-OPZLCW$H(5LW?A,"5
+ME-)*HP0SIO4\A/(;4Y:H5L-9A#%3::')THQ(AS653R+[GL(ZP0;A:Q7[=B7K
+M=2V1<5ME""WX,)MWV=O=%`%[I5'+_TM;Z9X[UV)ATA,I[KOJ39NS/NK4G1A!
+M:HNI>DDK?*K-A!#5":O9C_EP=RF0:S"E&/L*#]/.(!>KJ$G^2Y-6O/U)NM[L
+MJ/NF%79J4?2?8MO-712-@(I`__38WRN.;]=AY!O\O+\@W+:&@ODS0]W-6!K2
+MGR3P]QWD(X5Y2-@NF;"I_FCP*M>")5;U6F3)8)*?I-*0T5:+([94]]_Y+RNZ
+MG!PY)>36-4-FR0LDJ35^EU=6Q8<=W6\C"H5U:[PRBR^Y7)MG^)<UR]=1J*UC
+M.63*JW31TO>M%;0ZQ^8.O(+W,(&KH%7W<(%QXBUVGZ.,]>EYG$Z\"@AT?]DH
+M4C2\.L1:/WZ/=-@^Q/-\T$0.ONEMB:.FS,NO[95MV!ELL!^V6;?:??#601;3
+M!2Z<,YG\SZ)4V_V&3SI1V?I,\&8X9FL,;0SOAC\3Y=LVPT@/V')1?2:TM2:R
+M.D6D=`Z/.\0@!@+I,D?:FO9,`][`S5SKO"XT+O.24EX9IJA9G\VI+AP#/9OH
+M)[CFPY(:#*198M2C:_(.F%F9Z7W2(R4`7E\8!@[U[)%_WS]8)]J:[OU1^HR,
+M#V8WE3&-SD7.BVD-QO8,S&5-.7=](/N,%TPU%!8P[;;5G.6;?X[T5=$*[8PZ
+MN/9L4-G"SN</7*]-MKNIP0L>/N6.'V3BU69[KFW4N':=MA2_5_&^+)T$DLM0
+M9/%X[-_;/NP?;<SQ)C<F?3#;56#-0T&/9%*+.8>X9WPQ^Y\T==HCO2%3H">J
+M&B<;6P5FPDOJ5FH4X""?;)PDRXK(9BN&*?T=30NIA7[,GO0#*=RG8(5L5%AA
+MZU75=D6K.*Z[(@=P>%D#.5[F;+:R_T5.A[Z(W?R9:I([[M[WO3YM`8E:*9N:
+ME&]!QFY4J0HT-,FAK_K.>YVHL2QFJ;6W]+1-)U2,EANGTL_C.ZA&_"G%"S\E
+MF#)TG+)<9J*FTZRIME2O3Z(>>ESZGK&'<_:;JH3<^JR7<ML&)#H,VRGWZRQP
+M)!2DU4!Y(^MC)[='BC_9F,O8G@Q8RG>4WY]BZ8*;T]82W57ZGVQHJ9/&&JZT
+M8D2A&0V]`8&>X3TL&_.7%NJ0+3?`-!%SK&0":'/$"6<YO7>%F4=5TGV^(XM5
+M,.O]"5$VNR1@;]`QJ(?;C0K02]8E"!B*D%#RE/#_*(.\8><8MZ*\ZI`_OUMQ
+MVV'*R[96/WRV_1E"62,GF$8%*'!BV2Q^_JMCI<D>"O9>D"JN'5/Z8E6JMB6>
+MO^DIE$O/L(^\9QCD=88^DSFXX@V-%WR>]15$[U20&CZV+/0XSSO1IW()#UZ,
+MF.YFR;*OH7S^AIFTW=$D;3)!L5-1/G641#\MNI"[0LIBD>S%KH4=Q;_.?L&+
+MU"PO+X'/PGC9G=-Z['%-F1SAF_9$<$WG[HW[/8B\F]8`UF^!1-V;WZKHTN$A
+MDE4+G-D'-4#A-DD;HOW<<AJMN8F$ZZ[3P8G&),'@!);[/SNA2>[F_;=:0QAW
+M/LL%T4%VA9R9G845*>?.<<MGJSFM4*9`B0R7'D-EP#`Q#7LO'2)38>.^.F:O
+M9^9'WWE+[;C%GY@'^2.QW+85^N/9]#6..!PKO:]>"H4&TP]3/X9OT86:/QMY
+MD%?27&K5K=7<B\$_8$W;FS$1`<#:O@4,_!EK`6S'!\`HN5+V"2&\BJ?-H(Y1
+M1!TN'H'X32=Q4MB!_V/2M#-NNXO@)T*#:`+49RG\=-FJB6Q8J1\4S+&Q=^Y"
+MQ<<'#.+99G9E':*=:*;!_EG*BT^IK<F[^6&C^'NI)]TQ)='.08PYI_6%P5\Z
+MT^831)8<]*?7Z>GIAXH&2ME6N<\OA%I0BZ=,.7!]K?3F(\ONQ.(%9O3]*0N#
+M)X9DD$[O+#4!TT>C)<T'$.+613)KU,$$+?<+/H[N,WP[&L3(LH?X>,4G$]D3
+M&KW,(+@/';I1D:#7C"]ZT_[VE"F;8`:J`Y[$]V<ZP+<FPNL&0-435,-329B'
+M53O@T5#(W\2;HU'#+>Q%&A]5&N_JK<#BJ@`**'BUVO@)C0:.A5U7#.WB^41%
+M8+^21*A"\LZ%,Y@&7KR2E@P&,-1*1=MC:=Z6C(=X!/;9#)-3W,L4*Q"R&RR?
+MTF$)?X]I#7<J?+>UHAH05AV"NBW#F7VXE,61?8=OH";P]]#/J],49<:Y>B:E
+MD,42UIQ^*PADL7.APLY7>>PX]JAR*K=:/#Q\]&M5(Q?^]W$:M@]5NKJGND^4
+M2D6+0K;"B/=]<R-V]%2IW\MX>Z@MJ<XMCKHA+!Q:O6]]AU8VA/8`VM%5=:8/
+MXC-+8KH(>7*&&\N!KI%>IY!#K!2H$&M01("BR8,*>N"\$,D$T1^W2PCBC5!:
+M392G;/+[J$QCA,J)^1FI<+!V\5^SYF2RHH2-'SFW<Y*&FLA/A_1@S8KJ)?HE
+MH#^JW6?P=.Y\RB*?K=6)Z_,<'E7L)2&/I5V/9Z-;`0-B:D0B!F+>3BAKWE].
+M]N]WP'MBYHF<6NBI*-=]:OR+\?+D#U-HYSZH3@UHV+5`YE@,Z+(V.\P4A;\M
+MNC4(498;_;?5(;/M8'.U:9>L>>W=F&'<C;\`]9/D;I([=^.SF]*!A&[0?X-:
+MKMRT?LO1S?$&&R+XF2#ZV9Y?Z6(ACYBNV*MT@<Q>B5!R&C5[)10,M&;A,,L1
+M4`G.96%X$D:G9!1:)P4A=8.SWM*8S^?));G"B\Y$0')?#BPASPCL:O5R3-[!
+M5BZ*%)42W=\"^C.#$0$.!(?(*X<3-3H00$/Z90V[&<V*%=N[49\/P_29$K/*
+M?X8>N*<R$-?EL.0^.Y%>>^0[:_>?!M?]N[H(D'^CFL/_]IB++UV7#3=/<35(
+M2_=6,`,G*GRHV(M71;9S+LA*,-+:HXC//,4&9MS5&XN<S(XBN@2PXV[X8?J)
+M]:`K\"EM[?[0>[V;O(W.>\'H%3<[W/G&Q$NTQB6B3#$1\!OS[,SCH,?_]8@8
+M@U$1Y^\`8&(:>"-]14EI](1&WG$[!H\LDJV.^+(X:SF(/[MK(?EUP-B%70(L
+M$8=QN.IAFNK+FS%RS);W'%5'?+U3[A;>Z5U19;E3I*4=OWSD8S@=3!/"\(5\
+M[RN42SK3[UK@H4%J+".=?:GMD[Q'LC-9QN?.PGR]]UA28:RE/GHE!MB^+"UA
+M\>-O"8J8.LCY[O4^N46$Y$-FB,0!R7V(-.6980P28,KZMCC:5.09O+`0YOAI
+MU*>,OIH;@MYV9#8$]GPD(MP?J?XB!3;+%NU[C%E'04*'YTA[%SAJ'?-[%A$K
+M=RWKHUQ[J8\H>M,PZI%5TR1;DO2&&S,/MA&RA'DK'"\-$J3;QQI+D5Z?SCI7
+MLA3$5+'+"VR?QV:`,B3L=G=N!Z$E,/P1?4Q0L;J^VZ7M(T[$W[[YS)Y0#L]-
+M\?<5Q*)OOE+=*?<R2=YIQ(TO%2:M?+XK[Q(QI95ESBH^=L`!$#+9?/YRE;31
+MU.SU[>YUM&/XK\[@U>V9C#&2KP]F+3Q3J<U-S%\7BI9`V\\6,P-;&[J=%Y6L
+M%N.S)S2\YQD]LK<5LFL#(5M[+2(RTY?/[FB<V+;6%PF);N'YD3%TOO9(A,"^
+MWUAGB#6IC'YN(:9@V6Q"_0<=Y!77EHUE%!H<AFJXB5S-Y5TSTCFW(@DV.0A1
+M5`$*70LBMH3EKHBIA<"II<.+EJ8@X/B:7NP(][AFLIXAO&/D@+3,J4<?"%-M
+M4.%KK\E%8\P-YI?1=FWOM4]U@&QB+@SPR"NJ[!\J,NJ-%ZCT^!`?2&$'8W^M
+MAX)8Z4N/(7RMX*J5"2/'2<;L4FC!SVM0OXVP4MNL/7*.GWMO=J\W9WW12RH#
+MZ_,ZWXXGLK9Q":^6%(5-LE$V^P.E^SH(JN8T7/'`HU//(@,,/O_+ZIJ,,]3-
+M]V0K=&T0\I$Z3&A(RT=2W9OU^CQ!VN?)*6`:6-IU)S0_VAYM/V];T4>2;8,"
+MU)<U.AKV.'O\C94PL%,UT)[1UZ+N'C:BZ2C_HTO/(W7KPS@EC:=05Q]>6U;Z
+MIFNEW@,#;S""]4NDW9=U^JZ:]6==)60ZF/C$V**/L1Y9AU+\#A\PHI^6-,?=
+M03*-KT'_0F23G9WQS8@(DK'/?G11>F)I=WFGPX_NO:P)0VF)-;[6EGVO;=TT
+M)JL4IC23J;:4S:NY+]GGZE#;V^'!MO"-5^-WGHV#/&)4J][*T)O'F:RIKH[>
+M(;$VTC@<O5TBBMX2J5W(\TX91C]Y?JRTO(4]+1S+?%!X<,U-QULU64*]OB^-
+M6R3>?*2DWV:,LWU+[RV_3,-9.BHV"20>K*&FPP)+I&LRQ5L;&-+7=O%CD1M'
+MAM?8>&DN;OH7AK?\/#?;3/#>(U6`D,%ILQJM.<_:;%*?)GXAU+VV,BWA^)YG
+M#NU1J6G0%#@>=IKT>9U5[%UHE%/JE\_ZGHG4P5)@>'I&A;^Z27[PB7&>F[L;
+M8(V:B\WZG4>5^82^Q"AUWC$(7\FP.X7G3#ZG%K@%>GSB=+(]W?"<6TMG5B%<
+MPK7<G<2F$O]]8PG+(JC*!I*M1#`[:`-1DYK(UOS3(Z9,]7X,+#&214;]AY/I
+MH\W'CJ:K#62:6Y3$HRR3_2FX1H-SYRGA)+W?H2Z<ZD[P$=,D@VO;N^2)0[%J
+MAQ7LQ59@3/C&7J%8AQZ1*`D:W*WFF.<BCMRBTZO4%.T/>YDH,F6QM&"MCO7=
+M1)E63:5&H//$U#@^G8R]\YDE5TRF(,2D:(R3N"LM#!S*T$N.I[(W>H9PRG.+
+M![U_.,[F/M-KC-VK1SB;3[?>BO-X7!.._CJ1+S-(65YDN\2S6/UO)%<(C>WL
+MP]!G&DG[ZWGF,/7]!H`L@58=XB6#+`\HD8_;7\@]R>^(\-GYQ1^H*.&H-Z2@
+M>(<N5FJ9HAW:^X\RS??'=)C9%K!M'?]%1%]/4SV8OO@I*`B8=D9K<YVC1@]+
+M/\KL/'I6^`IW&?4]T$R)TW(<UX=G4QY0UK3A]_(+^G.'IA'8!6..>R.3MJ'@
+M*]/0#QQ'>:PEJ_0A#QC)5BKQH1&]I+,QF^LRSA\9?DNYDZ8+QY7VZ]*JWROC
+MZ4?2;Y0'WAZ`TI9!VEI9\6,DHW8G-!K4E8%#[_HD6P[T[[RS4L3&'!J"-5MH
+M1U7OLX^J7V9*8DGZRYFI,N[,U1EDC.&0VQ[]K;=43]C)#7/W"PVGC^^2;3EO
+M%+;#OE3;H70;Z[)[B[DK%&>Z#CUKT1#)NK#H/,V]]8.EZV1N6%P.J_L:29O1
+M(WPCQ\T99_NFE(W^A])9QX9ZTK^PAIA`<6DLXML`KQM=',"%0V'RFE]-W"9]
+MWGRFMYWR_[WP`3$P:],;V;;^IK8@WKB^3YM6W3I6WPQA/GL&25V%S#.(9(2M
+M9[G!_E[.>$9:C+$&?54B%M[:*Q.T6,4.,P]S!'6'_J$G*7Z;B`X/CL$-Y(9P
+M[?GF=`*2K=9L8#[K&[RT_MESSMH8@RV,:FE2A=X#0B=N,WU>GC=J8_90($A`
+MVE@16Q?6G\P!RG%^'Z9RJ6`TI"^R'>J?7Q]*/I-\I-:(NAZT:KV;?5.N*TJ=
+MOXQ3O`C]4@A<B!TP8436BC;PL61>K`%Y)=ZPV:M]?WTN^EC69B-5WU\1G+RB
+M)/X-./D4_X9!'JG2EM@>'3V!\B=,DE@'*+ZR/0A9@\\P@`V:_JBR22#C-&[K
+M+K;@:#:Z7!;NT`<<B_*]/YI!3+UP!GP>63HAYE3[N:"@8HLGO"?IH61+^/XT
+MF7RT-1Y2K-RVAF0E/]/E-RMGV"^0W'JS:U]>!>+__N-G.F&3[NGWBOM,^\]]
+MS3;"V/G<:RK/DR?DII%JT]&FC0H!^`^CI]/7+L<Y8FZ=RCF_HA^4X0G5@=4^
+MC-8_.%5ASG%3GURNZ/FF8-?J/7])->L#+C*+I]M*B?")!;1O*L76,OKOT+^#
+M)9-WE<(=0]KY#/*C9E?Q98UMX78YSTV\Z=+/=Z;X^:AC[^,:??KYDM_O>$N+
+M[=D0B3"##,]8Y:]UD$TO?L(SH%3=94Y]5?AF_F=OTM\=W\9M<G\9I*F[\]\?
+M^YD1,_&;]51M.ITL_Q/4_OOV_2DM=5-HHJ;9/GN?BF2B8K*7R2SAE/FX\RHT
+M3X5&KC\(]G7]=6]F.P[T^D`=&DZ@?$/?=N&I$=(4T4W8+YM'X=1^+A(PZR,I
+M]\X38CZL&.G%9!?I<]2P0Y10IRDN?B7%];)\'#^?JV'!D*KB186B2V)2.NW3
+MI*:'9I]A@MB7(1"2\^T,#0[_1E^E[Z9.[]R>=]HYQ$T.$,KBM*O[@I"[CJW!
+M)ZF,_X:9%Q=,WNPYBV(]&;>6GKE-!J3N<Y9:BT#NV76#-7C;5FH^>XH8KI30
+M%PQJN@W"Y?3%A$!**"6G[KJE59^$O_O2%.<5LS"[M+KD7I4D`.(!`*&C;JG0
+MS/E0WJ*9;^!S%@_VM\M<N$=M^Y?="G;Y(/E3I+CR2U]CYH[1`9#\2?2G[QV8
+M<U^FE;%[7#K]H^5;!4-)M%TY=\0D#5)/E%<!PL>9%C09G$0^*Y,>P:DPT<J0
+M2G.*GG7Q.I4]J7%K3:*3`S/.HJZ8\YQ!]B5PRU'%N)V*27FU<YE4/^L1V5]Q
+MV^$BO3PR)VETP4CT0+Q+B^L.7<F'IZK\O"DP4!S"X(7U-E=XH8A1$AS\^;&B
+MV/JR-K0`S715D9@$W;1%"-2<!'A%V[,$7\I#"!I-O9CNN[27I[LI8&+O6?$D
+MIV\#XKWA.%5[:W66D=L3\#B#;6ZX6]27C'$D7>&%AFZZKIW+U[1H?XN+[(2M
+M^P]HE+-IK/M^!X/W/$ZK[??3W&UJ;DD1;?ML[$&'!6L`Z/P8T"@2CBXM3-V7
+M<0SZK9-H>UHG;3=R7UM.N+90WFF<Y[\$OL3Z/I6`C[5^;]"?GXUUW4E:>EX0
+MJ8<<&PSUV[J*MY,:Q.CZDYHCI9P]>3VR:+M^KJL*)D32;@AU:#C$Z&6K<7PO
+M!UY)9\L3OEM)S[+=>4]4"@P^S1?_Y=8PT\%?6:NBW((1($#;X<FCNF:KOI5N
+ML\G1:^*:0FGMG-%*(V-5&]BZ_$+@YSXKGX]Q;0:;/P5G-IVKI3SU'%TT??W6
+MET(D!IGU8VQA8]</<E];=JXM5#?#0J[-HXMD^C7\RJ!U%_$.EDGE`B0R+/N:
+MCVFBC?`+M%;/?6F9S(LQ85KTHF)=Y5(EX0]^HLSO[QG9W5VA9P>H_,F?;)+7
+MC5>6!$0.5J,&PTO8E.FZRG@'QU/B+6]\]HEQUYT@]V!J*2CH(B^/'I59SP.O
+MQ3=A$H\>6A"['VI<X'VV,BN*<!B)VAOF>6CN8X!.?OP3Z2?*L94U&`4+6S$&
+MM;?R3*+EOVJC=G2LG:QM_&N]\C\W*+B[:1WH_O.%.%DJ!^VW\QSG?Q>A`4GH
+M8:&ZHP<1W6J$3W!O^?-46MD27('"=>^@7K3,'$8EH5O]>83J_*&P#(J:>_*Z
+MKGBV$D1R;119VF*\4DN=<95X-O5'_8&HH<T,S0YOU":V*-ITYBK(Z..;M8FE
+MV.2_\1P?UA#P__U!%?!JC(CBL]3ZI+$"??=Z9]F^^Z^71C<94U=N1OP-#$8V
+M>I&CO()O:]YVB6'%IP_#C8J".=](V9_2_^2E;N<PCM9PCE%8M.7,VTIRT3&2
+ML0XY4HKJOQHX/)*IU\3G*%Q2;\8,>=4G`A]USCA=G#^VCCD=4KT^WY1U)Y"(
+M9.6+-=6J_+]H2`@0_VI'#B2%%N@3_T5$%/_,G;_'"J'\W]D`=!(U8WE,1WU#
+M@\\HY@#5(4/NF*(:DGC3*TSX7"8DLN^R`]1`4&]S23]Q(5"E-)PU":Z3XZ-1
+M9-'ZDZA8,.F+'XWO@PGE-^;3(E92HZ$U\"?$5+WXF]\RF[3M040A+\K@`UL@
+MBZ#VW*1A#Z,TO7@<$BJGKX:L'\5UID9^6F3?Z/#^):VJXK]?`8.IG;]MUQ9A
+M$Z95C:<2A/Y5/5@SI`JS`+>KOGUA13)Z6YSBU&%%O.N27.?V_";8+E_QSAP+
+MH7C'[-L99@Q_HY2-1LC)Q6ANU6[9;)1DH1]6HFL^T0HT=4;W6ICG9]JGPVL4
+MRO4Z>2/N@LOCI^F93WR0I9:)5QF#C23:D@)F@DC#D]:9?'+!:WLX9BF^0@[V
+MXML[Y.>1BOC*2+W$TR>\T49!5#Z`..J0*BPD>*'C4)%@YSRRGU1;EOT:[Y5;
+MJU!&QHK\ZZ*QTH1:;J#.PN+;!1KT=-=\B"<)/M-,HY&40OY%**QI.F5]192"
+MR.HM\Y]+1QRPB_ENYZIT">_'^!E,1DAPXLW)/+^T>UK^;RH]0.U#`Y`"KRO4
+M?>(2JK9-Y4K:24*VG"*M@AD)LDD/?DC2`/Q)S6[\SMC*J]P>KM'2G.L\6=V'
+M>62L=%LWC2<W+-QR%%1V%3HDV+;K[E3ONQ?23[%-%']V!:<E%04?+:87-BJ3
+MB0!B3LD-G:?L$B/DU?E;<2A]7X%L#(RU^#2/BUR)%%Z<2<R:WY#$+OF(67<P
+M,-N_V%;PI0+C+*5\QP4E$-^9^Y:*E75MJLU"@H8G#CT?B$D+H<6VR\<%MJ6$
+M+4GH@1I5O!("L)79W+LT*V%A4;'7&MU)LL,POQL:B5%)*>/T5C/+7$=@=FFZ
+M83MA4S^+@'H3`UM#?I,I\'2W:-K6GEYXZR:T/G)J&^[I]+HDW@>(WV@*1W[?
+M8&XR-Q(Y;4B0]ND`@,V$.BG;.AKIS40T*[@0^V2<Z38));(R\9$8V^"2#4D;
+M/51RX127M6_U1DR42JW@2S%#9,*W@X'JDXCJ73)N*HA'TMHK;U`Z<&#_)&9Y
+ML6(=#3W9B#TE`6XQ3_W2!^2-AME!\"7V)R_]G#`61>$T+]8K%;RNR*E75Q/6
+M/VH-ET>(6C<R<T+,[&_`^S9QIW%A[`U*ZKR1DLBT\:SYHZ4]>1.!G6NM"GD"
+MZRM1,@NAU0=6"_'5!M8^ZE]E6=7'53:!DF;M80T50_15.B"H>Q>L,QD2]0=3
+MSQ(4_NH15"L.7<BJ$S-34=0HA+P`?/LI5J#E98US!SCIN0&)G&8>?*+,"")J
+M9:KO\9VGD$""5NG2!TLZC?LRU_R%$O?"<9[Y#I6)S()THT6V\-)&*KAD90(I
+MSQZ^-T9!B(50D<CM1VN=(()2$>L`0ZBEF:[;-I6C+X[X>>,@C&(5EQ)61\G*
+M)CXM-3XQSTEN^28R;2=;'^>F?J`5'H]RS23WG\%GCI!VB[EZ)DTG.6U4?V>8
+ML3>V,X]/DB.#73_,E3\X[--I`0CC*_*V`\B.E4F!I^ZF>>Q<W]B$ZX_YQX.^
+MS`'P9.8L9L6B?L"LEGY%8XCZ(O7?3\`0?ZJ-^\>M@'YC0%#X([([@F)EANC7
+MWIO)+CM;NIFC0L3\2:-5U>K\FHCHT"[$,EP_U:*Z*S,MH:V9HTN#D-UI%4R1
+M_,M1EY@5AUW"/"T,;PGDXS2O0S-?;FC-]A"I3G/`7LM,\U\"EC9JEV<V%)M%
+MQ1@[_3&"YO^75\H0WSA<6`J3J1&%K]5K>;<Z4=U(HMZ;7$;TTOYN_^-XD7>2
+M2I5[NJ7D[S_?%P+>X9Z7AG^&%2??^7'BY&:+A2?Z`H\AS,(6)9MW@G4'=?->
+MBF2R_W[T>QM?3Y@FT'C//1LYR(*4'[IW,4%YUD!+"H]1-39>8^=!#4VJ+M=+
+M8H1*<WF"I8<(U-&4//6`5/R^XUQ]_C+;B"J?T*Q^AO\.=L*(N6R(9FA9C_X@
+M*J[5'?E:"(ME$#,U(;4,],U%:3O:]7E"TD87"?_;J\!#QGP(V8+L9E^J6(7F
+MFAFWP4`]D8B\NVM0C](->>@!CG]9JQ6/33L8,U<TG1XU2IU;*Q:1::GLO>^'
+M^'XT]6T$+@P<<%8TUT$JWJ>D[7[?+::WVL9X_]?>\SW-Y"4QKIY[3RMB`:1`
+ML4.K%].EJJ**ECY]HNK,WT/:.I8(=*YGQ^"SK?FZ#[E=4_@\Y-.6.9K>_>28
+MX03L`LH$Q2)`)J;$-+GO_%0`DR]RU%.N.A'6W&IGDEH6LH8%CF^B#)=@WXTX
+M_`-DQG*QAF:R0`E*-6$P]<J('4M'RSN%\N)`=^D+&8-G13HZTUS4(/27C:I,
+MF]"XBA$IDS)K&O/W%26E/X[]/9C<@OU@FOJ9(OMIFA*GQ`0W(5GRN$#UC$]L
+MG*H^$T8%*3^9><3*M!_/L>\G+?%-`L;84N?/ZH$6J`>=H3A?GXV(MGEZT^`1
+M@AE:U3!WO##D/U,2)_<EI=$;`CWT+:'WH.E?8J[B\1L^J-D.#]?I:(_1$#BI
+M;T-`EKMW.'CW9$ERH(3,G+O3HWFTPD)LS7P/@BF>8,">/TU,7Y]X0,?2S]TB
+M&Y<J!(9JM^993SVY+BH<7'5::=+`UDE(G,I3U5BVDRPBK(POAJYN,,229%Z?
+M6BU\]ORQ29I`:=SX]<]T@BJ55QSO_NCQID->S^!`72FB@;\?[AWJ=+&WIO@X
+M-=`SC%E2Y'PO/SO58P;_.D`\.9<!E'POCIW-1CD]WH7IK&V=&A1!98OI780:
+MCQ)Y7I*>W0[5JA%LK;2IZ"E`<>7TMC._C?A<1:0Z9CK`&(:+]-^@@/P[JM$+
+M"-5$]NCT5HS*<I#8&D%44+['#+;%#8GF4R8'`#RMSU@$2!YT!IQ/R[?,<<76
+M#6+S;O3SF;9(VDPAERF,>H7FS8)3\^-,Y@WP(*R?T2YN'M&(>08EB2]7<O0>
+M4@5ST<8;1$4%QMMFS+38U$;?!-CO#S7!/[#/BR+_(_JMC%T28#GAC+%XTY64
+M1V`TW::0/T<<>3@/V3:H5\;MO3EE$[KD<)/("@DT5XVS&&CHS+;,C7NN*RV:
+M/#(I.']^8XD^2*Y/\S9(Q=%8)L6);J,@YK*(Z<_X1EXH[<66N>@',V:2IN;B
+MU\-MC[DDRG/:?Z!$C$O\WZ#QMN/Y'[C[/<RTC;]=^94/UOB07V9R?80X\-NB
+M+(GQ:@KL_C5ZNL<WR[\+I"=N\897+]XQ&$!3(YG:/*4=TX(N:B2/H2=7:3F1
+M'W>ZZEN\/]7JMJ*.N9]&6[WY^/Y]:4L1GG0G/VV@\N;B-,]LJ=S+8XN48O(,
+M]P=RB_E*F'FUYX6(2^(`1QWBQ-A-K\[!$\I7IA_``;BP4`$J`K^Y9_+.-KMP
+M48<5=TH5[4-Z=18_D*6K]F5@A]@SKU.XMLJWRU/08^2;]S`>A4]FWE!X2C:A
+M,\2W9#I*0@=E"?CU3IA^6!;7!YV_7+:,!2<'GN@'MOW8MU@Z2T(E]+[#@)EU
+M)/'*E1X!Z(]U'XB1W\TS#D\&UI:1DA]1Z[[U]2PWH5*==6ML@S=8]3JAPH<R
+M@DPDAPH&*TA&X@^U"01:20L.5)#NN&9;TG,3,36L?6SX99S:_P-7J6!WGNPA
+M<Y;!UXTGC'6*U:&W.1VBQB-VZ+G>Z<N+L=.).>K"8;J0F"Z/\.-I371^I+NI
+MAMMT=MSX\]]%@J<;'DL@ZXNBCS/[9K]0;)BC]A7$KSSYUVHVZB:R!Z^_8+C(
+M,[!Y4HL'J2`E>E]Y`,<`D3^!@_^$<&')@Z"(('S!]"3]_&?Z,>FW[-&,V%;R
+M?@;/&"QGA450;I>,95UC%O.+/FOB.$5R=FNWN;6$=?B`<<1*6R=[4-0(_FZD
+MV.V(4]NKU>"DKQ@E#('(,F:_M\HEOA'(:(.[;8'9VOHC<,]#BBFUJTYLJI[!
+M.$B47Z@@>G6'>Y;O*^')?-,,"9/ZLCBJ9IK]LD'Q;@PT]I'Y/BI+C>AJZQ>4
+M\06U/N&\V+!^W%#TS81)FRM%`C\&+]8Y.S>V`<+^QZW=.F'X/3Y3:3J;;QV\
+MJC*60F5\N?VZQQ6;]Q:Y)7IY4F";SAZ=-?,KYA*.VITZ_F#11N'O!)S%1)]@
+MJ.&R[*GD?=;++D\(!3D>.VE&>7[RU')QZY0G?:#H/X]4..AB)$T7?`WDWZ^`
+M9Z./OP^EK]FUL"^ZPJRU@EQ_C$X'TT:M_N&#[>'+Z\EQ[QZ8TLZ4ZL?/O9RS
+M#P_>8NI.],D1%09)"3$"Z$G\&ZF*W:%QV!FK961?9KK25*<G]7X#-(R4>Y7A
+MB=<=/C'%#C$S?ZR&SU:$_*RF".H1*^S,Y9752:<^#3L_9D/D(B(9*L09Q8#1
+M"1&#PJ]S00\_)&)DK-B30C$@"PK&%3:^*VIZ%N-<F_8LS<P,1K!&-C5OS*2%
+M^1&G'QJXY!'G@W<DQ%9P"15D-Y&H=Z$]>8D3U4E4:HU*#97Q\+MK;^/31KR$
+MC30<_JAS.H2'U;&W%6>,24K^1SS9,&=K?OAR3#_J_O&6%,>B^DA+II3_T_B=
+M^Y(V2A2CUC2TF7[DI#.`XT$5@?3.>KNW/8!N$H1U6MF4>%^R<D^WH3!-5PQ'
+MO@1<E_74)GCQOW\YT(\_4,X[65.DUF\ZXUA<>L]%'[0_;=X7$M^ZK"!>DA$0
+M:"N\F08C2;18$_-U(0)UYZVUS]GXH/)=\?B45G8:4]5\UPQ6C^+TB&ZSUD1!
+M;-EQ$D?Y^7ZQH$KMBN*KWY?6--^W^0=]6INW.3UNJLV>6K[LIXP9E$A0R4R-
+MF4T!;,_V,=RWNK@0B9AT;9)8-"_[\?^`J9ETIY1P>D/MYJU,V-M842U.DNFZ
+M20EO]FY@,!?7:)<)ZH!E'S:K55-1T8M,Z[M.W^O6C^*Q77:5L7BP[&0WY)LA
+MXQ(N*6RJZQ+2['LF;K)7XE0Q).:BM?,*M'*.QQ^*OSJ8^[8IT5]M>CK07<'1
+M#V#*?.[YG0^@XOES8[$1*V44AUE!KD9JYSTZ?D"D<+@_Y.Z"BA+D[$-GC!`4
+M_VFH9Q/2]C'=F75V)#7MR^6'S\%5XX.GQS8%>1H@=71E"I*!*?<*P?ZQ76V`
+MNP9V=`=)Q`%:81=0W._I_-Y>,,&3.1AT<)ZIH$N,ZL[02/$A7@EY7<Z<[=\C
+MOU:0T.=.F7W`A6M@K#4:#>=8.-%B!<?ZHOD%_PY]%1-'YI&HWY^Y\\MI)MI.
+M<-#(0CS'8$21<\+YS9CGEVW3`FQHE'2;2:E3NL1%J:S1!,L_7;ZY%<[]SL#K
+MXF-<!\AIF^-0KWNT*_AT8+8$`R@[!/SL*'!D(>@.!V^M?-LD!C+XD9O#\T)$
+MO!X"$3]$^7-!^&YW8$5YV(-?Z3HV]&%0X*OKOU=4E](_:@F\@07T:'"4<"XN
+M+:.-20D^!/QF0Z`^Y.#%K:N@+M325/I-H/H*'5@4,IB-85J8:@-HM-J*>/I=
+M\?D'_(Q%>S,^K$,ZACZL@_QTVCA*1G9"><_N#5G::=TFNBH:QO<ANQ2S\0B%
+M:3'F5;V!HV_H``=P]P%QO+@4KH30M0NJL@3RCT1;%P9"JDH2>.1[1X`AW2W8
+M0>F'&J7-D>4+Z'`/T^'5_5%F6(>@EQ_5.W;F\F-^2*,&@&)S>HE^&(PF/K]7
+M7WC$=YHD+LR"_Z40/IND1^.2%3482WX=AUYM*#KS?]^_7F_K_/UQM_O=<;'Y
+M:\W&3MJXUV1M.VKS>'8]<:W6=<;\3N("18?09>^AVDVXMH;4N'>``BPHCF.(
+M8_$)2GP&F(,X4]#,IFS0^=>D84`.^5UDBQGW>%#FM<T4T1Y^5`!BG]$H0F3+
+M#SR=+.9YBF3_$O9I-HNF1WQY+UQM4OIK)V$,;]56J];P%6;ZD+QECIJR1^//
+MH.I`3YJTVA_?'@!MT0+6=^=P#=-^CK4Z:[,<$3C$4M<=+2Z\*:]8/1VD.V^\
+M9G&2"G:^*-#@EUI3)V9C^,+7Z;^</_Z+[TRGV8?0`RJ>90PV)2&J.-+7\)F?
+M[:I]TZB4&ERQ=[7\)]`T90\E?W5)B8W(K&#A;K3@1[6L9_%*F_'A^<L1$"G.
+M@Z+%_C!`M</H(0!#JC\ZZ/XOYP5S\%&6H+FP1B3PZ9>="W8))C4/L!W/6)._
+M[3?$'CNNL,]K&J':JF2&QHZ!.VZXH_4A6EJN&Z'\;7E2327JB_B2&*3F3`=@
+M717M="?BMR(K5N6_\V#I>G9Y<N.";KE7RI4&>-`<Y;6@G8']U'2C:'PEE%$K
+MD-X/2RAUE.KD/X9Z!U^(;!/*W-?9&6OI`OF*9>%%_=:M1=S2,R*MR)KTO\>E
+M.O.$5\4F?&^?I'O+T/!G,;MY@_XK;J2+E-(X"0P6$/0CU2&@%Q07PIU92)YB
+ME"NJ:@@S!P]3Z1B,7&H.(=WK_AS8[?4<XK%]+UGEAF/6#+UBP/Q'M?6@*L/I
+M]?)S6:!JE65$S#V8P$ZG.S"]A)(P@S,(_(G`Z2>K1]/121P80%A3[>I*DY\R
+MWR7M>IW[HZF/2*LUOE.SK:T>.L^HC9B2O::W#NM7\X["?5DD<7J/5`ZM)]6A
+M&H_0U3<"D0CY=('>>>IV6J*%'QP#P6?S#T\XP$=(^H"Q4U>`93H\)]'Z[L_(
+MF%B?XWW`'`,R^M0GR_4Z)]P"J>;'8L%=G6\QWK;""^81[N*',<W6CL";["IS
+MV.^O$HB>E3#&@Z[`Z8?Q5UWEBW[L>"=]82?V.+E(&`V-U+]?[:<27R&L&/G$
+MF<GN!(/+X_4GL1V'_B!\ZF,()Z=X5>EB3Y.(DO7>R><P'UW[GX-[=RL:).,'
+MHR6J,3["D$X!LGV!-!=_GMU`G[9T\M4G44,',4&"7XC1T7P"7=,4&5FY3EI9
+MD/W&)10'J`J?$>\4S4$_=ZHI^/?3K.J2-_HY%I(##]ENKG_"6RYLX>N1MP9M
+M*0GN4J9FHTAGXP-?W\$TB.QO/*&K5&OCO]=9ELS\U=>A!\M"Z]W.W'G%[[0Q
+MMQ=A1GC*,I?)5G7:6@329'$OI#E-#:D+EO9@<G1?QT06;LG/L3XLIB>>ZH]R
+M>&C3-UI(.H*;9^-_E/D_0;4&@?*_(ZJ].'XH-",.THR$\P%*+-'CX%YWR,OL
+MT5"#.S'?P#1#D#N=R7G&3O7^?&U_MJ-TCP;B;,;%)F]6H[*+"2%=4T//$^<(
+M7\=\09QU1S2"&14ZI>%:?,`?A\P;G-H?FD&K4:A3@R5`AE\_2>&NE_&L\;(4
+M;WPMUOR1X&&FR(NF%`FES/+D6:CE'_DEY#>HC&(<CL&W=CDJ^<4-Y.I[-,VQ
+MY]V:2-+Z`4-_(U(T&RUQ7C(R:-[OA35*BKMTB7R,A>'X#?O-_=FU$BX84"/R
+M]YNL.8G(+"X^K!!OOA[_RR(%]B*S.(1/FQIEN!J&V"/\")7E\DL/>VY4[F`Z
+M(P-WU6,,6AKHI'0E%8+!>K8,=FJO#9O>W!;Z1><"-#F4EHQ'F6UJA](XE')4
+MJY&FB%8$9>*%:WG8[GF;_0TG.7=OC&$?X3")5U/=B$]L(C=ED]#E6^#A7Y[3
+M;H_&&&:3H@.<)GC:AZ5O]L7U"I&`G,T99)/"0VP,:;%K)1FHLWF%JTZ7;@84
+M@_--791P2]KS@)O[B7\#D)_Q&)SX@_14^?>0I?8\O\C/Z'V(O4:JRI3W[///
+M)'Z[6[_B.I;\BT^4K$?PH[P2UR;FQ_"-;C03H/L\%'NGS&5?$U(HZKB0)D##
+M2@HX+53(PP0[=4Z\C:A0^<6N&5Z?K3SMH(M('W71D$UO0/WUA:4+H/&50JJS
+M&EY'9A0_M\&PL&2I>.W6E^BI(G9Z9$2R,RB&$-`J93SV'-X;-DA77-WC5BY\
+MR:JP3@7OY\N_T3%SZ\N60'$7]W/F'71=;2@QWSAJ!34^V3W/;1[P0-RP?P=9
+M&KBT\,,(8>/><Z,F&U9;BO5RB&TW?`>[A0[9O=BXKU0]N;X7&KI)MW.EY6&0
+M`ZY$-SD[<RH`6=5IKMQ$H$]0R=\F%T!9K<)Q]<_0]:-;']T"?/<7Q$(77/J8
+MPT093;)SH@Z2*QM*V"]>2%DAKAZIXBE@`$OB*[9#85KM56\%4HL:NJ68Q5Q^
+M"A6SE=N7:BN@LIS-9AEUB?CM.$::5T*H+++J3ZT*-S0E@\579&-:\P?J=BK<
+MFMXBE#;.."K<5H^Q$RD1FCG8:#BV5YYA#)SV+.<P+-;O@%9P#QA7;76P1A45
+M`?>/[Q6)<?UDK=0W&NEVV+MR`O#'J^<]CXKS>^X;D/1Y)N97!],E#P%<5IY0
+MW853,KZGE(VBR-[`[C[!,$YX\RS!N;1#MYN+W6VBI#8$M_2HMSP$[F*:@RF0
+MQ+7W.3;#C,EBEMTB_4%P(N+SVH:S76<XO,`:Z]\",/).)"M1-*L),W-:9%?8
+M5]"ASF%+#CP\!R(0V[)_781#SUH+Z4:W8F:D]ZU;Q)D_`Y[K2FD]>HD=@;)(
+M\"]_T6&=&8V3:8!K>P<L%2&V(6@11RSEH8!R/1Q??^TA^?-1Z!28\:.(/64F
+M^D/T7N4B1')DV,0:NFNJ^(X4]>E)=9>F%QY+QBS*1]R"(5*`T/>_ORMQJD1Z
+MI&*''7;ABKQOT%$*,Z1BY&'Z%JAVRRC'9/0?QF%A'V-S=I,OK)C.;)A.;FB=
+M2U_&".!]DKQU<T4;,<CFH;PM<6QS,80U<\0NAEOE[[H8]C#$Y;-1Q674-Z0A
+M%',/'GC^4YW.BI"&OL7Q6^5)<!*$3K/%,XEI\G!`1[$45ZNAG8UJ0S?Z1:0^
+MX`@HN9S><5,=10P(]94C+3/6TFQ7<?-V,<JG_B%_"M$73F<\]NY0+8PUKGRP
+M!71D,^YDC3G`Q3ILY\W\E-)&XSK%!'(?D,U"^0[<7,\*^YS(1SBNGDC=D:\P
+MS!7[,.Q<[;!MDDZ+77A",\9HFU1JWP5;R+ZXX2=S24)2*/WJV\Y"YTEI`,LO
+MF,,C4:4\O&:%]"LO?ICY:XL]`7L%J`]:5__29-'0Q4Z<W9`LBK@+-+P4SV$)
+M0#JOB'GP500J],4B$)*BM4;`K!2(K=D8&6Q@@;KB+_=#\2?6,-O-6&8.L;]@
+MVK#R=\F/3I9,VY]#:%[>U,..#?-WQ)S?6F8.G?J$1X_>F-S4&-AN>($PXJ:6
+M@*`%$)?2([M;7F<V5557/ISY(NSUB<6)DCW*PO\J-<P>K!+I23$UQX9H_+IZ
+M3IO6*\QD.-9NWJS]V8'M;2:1E['&;CERA_YMZ1!A%P=1B0-0(>+4SQ7=BZ<B
+M-PQH#6$1R9@'%34`5$TJ!#^*+,59W'WC5OU+)<'4?BI8R7.B(58LAOJW4\/+
+M%D2VHOKCD!^%8<>;0+W:P'[,IP@?0VKO"ZM&+(E)=$9>V,5?))7ESO\49%@8
+M1&T]KZ&T2+X1ERVGU1%Y&O/_.#+^P5^SMN/9#)=76)\S2JJS<@H/Z1)._QCX
+MB4Z;X0^IRE*(T)&?;=TNW"$$0NTXVM8+JX)7_%?0D^P81QG15=D=)".:U.<L
+M^`F+EO!C?M5%C&5T#'0=8,)):B(Z1O:2AK?\YTAD=(C*<N]K(OYC;0#]-;Q)
+M-QP<,A[VEK2<(I>/",M@+*U#C@*PJ%.*Q2]KH&\VI1/HS^EMA#-$RO3G.$Y'
+M1P!,F&3GVM,D92R/:]5'\ET)V<[\CXI%2Q8<J]A`H?B-(!=J<740^U!'7H%T
+MU%69B234\/S4LCY3YZ>;R%2YOT'%KSV<ZH6A&E(]&B,:]_JX.-//9O>-'5'F
+MKCJJ0'O[!.-*L4;H[A^+`'<:>#7FE2!,UBA,FC_8=9[9,73#GG>5]JW2/PI4
+M?P,^!CG\=6;X25[WC:LW)(F6MQO9HDWQIHZ(DS)#MZA@HV;"@='(<XY">/_!
+M``:1FC_Q!]1PBTS#=\&*OLA=<ALF>'",\I_X0LJWYE0S>%>KA?!W`KC%+MIG
+M:$B\4G)-\%?_"TS6PMUICR#<\][M.P<6JS.!H'V8E-WQ!UG-\!K(0"Y3349L
+MV1JM,E^LD9>Z;]TXKI)=[^<Z(^7C[+TOW@YF_C@HUFNN2NYALPX#N^TGNQ[T
+M('+<<)06+]7*'MBR5^RC?BT5@/R%?`-UX],:HLT;[U8-V>[OB1(=P`SPKX*2
+M_2AYV=SWR-03IO"V-400X"TAE*OKY.5JBS2(:+!E=\+N5#*H#!/GDE(![,@X
+MA$?4B1L@^+()'[H9#UOOKO?VQ75JOR,"2#X9?VEY!T@--\MJ(10#OX_E1^F;
+MD;G4^P;KCKV]"1]T9/E"!5$??HW7M$?$<_>,?I"`?[80C@21B7]"N.;O>#^B
+M2*])>]7D#A^,,[9DB1NZPHS`3T5%@G&T<CU4?"TCOQS!')0T4>](U6Q0M4JN
+M_GZYN263Q&RIW'("7[Y92\*%=TI\LRFKV4S?CL-+R)(67S?C'RL@MD'RKADM
+M,G.3D<J"658[PM>`%I=$=+11BB#*-*<H&$#-`P&X0Z9F,FI5U5!QRR"*KY.A
+M']6:/7J3331YK6QL9&[X3W9H;!#9C&*$#!3D^,RQ##2KU>R&+$Z9ZJU-S0KH
+MV+_'F,]9#3$/8`?>GQ4<Z]!LL9X+.[88;#M7\3T+VXG\0F1@HV0QN,(:X0DL
+M'MBQP^P@-V(&^HHP7$YK62BM8KJ_.]MS%[.5FNO(4GO'-A$*Q%"0>*-O$>`-
+M`H?D-';@'R0T6ZA@U[_?8F,][`FN[XC"<^%@Y=%;V-8E@G/Y$@4*2"B+1TA0
+MPXKPZ.-?WZ:ULLD2NTI2:\YEE;_`W(6OAO9*2:&`%:489J4+OW9!`3T9U`'3
+M\?G"`I#9H\T)3GOQ68JH'9.RI+C\U&[,=SFJ=F8#W:(Y^C:-?+F#9WK>]Z_&
+M-^!7K?O-_7VYJ24(=/QO_C7LB]<B3V\C8@[TO0E=GU?K&^,Q^:ZQC1C!LG=7
+MB8\VV+C)S/`^O_T7AY,UP$FKYD-UGL.`&+U(-P]8H>S75N=R,X%;)E/YW#A,
+M)P.A3).43S?WWJ.8OZH11)1]`.*9`QN<L4-S<]BT4=NOABU@5^+$?/6,G-+R
+M]C.<LAZV2[9PFW%!K9'5X,9S<VZK8R$9I`K)S"33ZH<$XOS#4)VCVM<5KUNB
+ML",*"CI%<37Z45F\SCJ,A6*[KZC$*@.>?Q@]V=V1/KM0@O,CD`3X3!+C^,L8
+MZ#ZN<KB&4Y7,D\7W"W(R"0-DL]-2V[&'K__01)X!P>(`'A36'B!8$%N@H$#`
+M(8)2J;$`(!5XQ4A3A@F!52,PS`<<QM.**U.(&8)=%T,`$Z,8HG1E69LKAFH7
+M4WG85.D)=$-N'O]][WO@\+4"@`DF]^?/^0?P0)EEC?5;G/S[]>O@K'`KSJ6;
+M;1\A\5!'<$+"_29=%GL@2W++)L/=DK*T)CP@C%(]9/8.<$K9K46;A;8#\DV:
+MS<KU>Z:M$DRBWHF0G/W%L0G.=>4P.;DV+:2Z0%]LXF()PX5#+N;:THX#Z+3=
+M%Y[F<<?<(K?VEJI3J4$*9"ZZE)6Q3VRSTIC"$:H41.\Y_N8II`*W2Y&AH0LW
+M_0#LI)X64R&,6NAM3R!?2+%)E1P<T;F<1;OV@`BA<4)J=:@DV5`YKPQUQRR:
+MP>A<)J30DSK9G#'D=$3"Z!UL41[`NZ6GE$8^V$YTSO]OISK]N<UKK<LU5V@>
+M;@RV'BVEBBB;,"::@J-S+&!5X=>JBO#7.8UU5!TX1BX(?UG%(KXPNGXJMQCX
+MZWP='CZ[1_R\H1V$@IE^SC]:0U\PEMR-`*O'!_MA*Q(\?]Q+@$=(#F'5PBL"
+M"=U/H0EAB/+4Z,#^[3T82>BTD:V$;4%*X/40E^82W_K"/-U1+^1&W]4EW00D
+M,_"/)$!N?75N#JY7=?VB+@:<=DW32H0SA72DL6A6:M&N&O#G[J=$OZ;"F@]6
+M>!S>$AU1,U6)VVPNW'9I!E`;&3L35&+E4Q3,=QL%'3MMB<F2(6YZB'FT@<BZ
+M9SR1:[A'WPW4L*K'GTNN!CB6+(-I"IXEQ1`$[VILK!3YX'6/'&9Z-5]X>;/]
+M]&73X2'QWQEG<0B2>R@+C"-OAN]H7,P+X(;#RPYQE"K>W>GWAUO6S/"2$3M^
+M/&`(4??#/X)61%D4NG"/'-!4_,Z]FO,01_"JG=0S40M/QM>_$%G+I$@LRB_2
+MAZ1VQGN#[,-SPN;D=">(MA@L-#B@X54'O)<4/=__2`QY"=JKU<LZ@S_?+77Q
+MQ(07$R\Q-G$5+J3:(1[(#PVCACAL]/N)B0..,EGF;ONF/(9]4!]^:4D>C>OR
+MHP?9.HN?8\WX,-S45/W1T)I7`!-8?H.^\PK3C^'5@+TBX_867^A8TI='1`]Z
+M<A+O<!:$R-&'A>$`(;NQKWFC;HT2$>9\T[T_AXH^,%4;SO/JIT"64']D10K$
+M#WT`=.\8:HF*.[VCBGD6`'U:U?GSJNSFXM3)1,[8A'%"^I-M[!DRP<90HC15
+MC$5$6`%IU6$E7_I^#;^VJ47<\Z3[;[GCYXS+Z)JQ;B(1D<1U?(Y^D>)+%<YN
+MXNG6B8KL!]2B(IL$%")#S6^NOYX321?>2?>X4\"1TE!OJJ"YO8@GV$0+\;L_
+M!3T++YLR#[M>%**VGMY)7/:=&)GZ?#P,9$=APYSW`9<1AB>(UGO<-\K55+?/
+M?,:V'C00RU=S]EWEHF.;6=[A[58=E:U)@TU@^KDHZ$=E/++:\D>O,1_8_`'^
+M3#2D&:<>T-@3)_AP=29]FU>=9ZGE16:5/;Q+[3?V)F)^?2WU:M<<X*Z;F!;C
+M*#9H1'ZUM!K:"9T+9U`6.?Z<AX4VPT%"?VUV0.Q0^^U>P)9KEJZR;K=O<,=G
+MI4%XC@AHJ,(_8O0!'0(,&>/H11_%/[X@5F+2@J?"->B<C7:$1L]'?H1J]!24
+M%$N"$6==NK`"O3_TX!7E[\RHQ4OMR]X0=</7D03]1`,U_W@#P#9U6S=M`5@I
+MLT]%X1^\JX35!HO%.``1:/?K+6H]YJ".&%5\G$1@'AB"05V9[.E3U[9Z_E6V
+M6>\.T@R+Q$:Z,>]1(ZYQ+(AZ1%EIKB<?K'.II:KWW'/R,FS^8I7G8+(IH+$!
+M90+'M,?VW]C#7DF+D!0??Y#4V]_#`KP4%D@GTL/4UL2UFIU(A%;8Y_@[T(^3
+M1YH&`-9M&%%6T;Q<OZPW-Y5FY0QL'NY8I3%A%B&2B;E<\HEE</?8T[8Z,/.7
+M#*Q\P?"U'6B'WQ+Y<_P%8:SY/3_BJ)>HA#U+?[E[NF&6K6"2V.59"&:R*=G[
+M/S[\+2#H.B62ATOVNGW_IZ;):K]>I[QMO[)O/>\VL8#=;R%[`F6V5KJ;=13+
+M6UFIQX?=RRCOE0A]#.W8``KTRI<+5%RDLI=E)=1>I=U+PI,*3*EY4O2C!`C*
+MUB@2H52#"JQL&0(M`ALK6F)M;8(<4K@Y1'6!SMQ'WTA&6;0E>8]V&@KH0V3V
+M8^2K:Y:MW@$89-__WY?M76Z$D,84N+Y=!&,@3"/PQ%;11;KK2MH4A:A[EBTF
+M`F%/;@7G%-\[9A0"0>AIUYXN0:H[/OE*OUEZN"><_\B%_,G+>1BI.L@?ED-T
+M_'G&*$V84V?5G$+WU/W3RY+I4]Z=9+3!I\TTUUHF_B_;<8ODQP[L*A>/UH^7
+MZ=6<VP=,C6!L&MR;2))=E$G7!89K<AAV\U;@=G$Z(:_6)[6YL=7^H-16)7)Q
+MX&F4,5#G=Q>UNI'W$*6H8(T+\2]5&HQ&&SL03GKQ2'D=0CJ1T]3#23YYLEQ2
+MIA&">\)U6\()6:RG]2!?AW<.`;IQ(%W'^\6`MI%OM4C(6U/6BV2V$:+6N<&V
+M3O0Q(V=XIC#"P7VSJ[+@Z*]%!6)5ZU%DY;U@!K5'U10-?FL`/AHOPH-7B.Z%
+MS,I!@-ZLE8=[C,[M*(".EM4(3;1A1V+2-J=DPD:,WVMC"5C#U&\:\6YUA5[L
+M:X2UIBZ^("RSU\Y!\K"IW`=#D(PJMD.D#>]6<_(B@7LCT`1B=:3/X<FMJ9DW
+M3)N^1Z(@QJ(&?N25>#IHS5W17K^I*FP*^%WVTJY1$&KNO-T@U*.\-$G!>R!2
+MWYGVZ5/JPH03^Q`:N_-G!J>CM?B3W:`3LY0GQ"1YU(-'G=01/K.!)SRX8@B]
+MQN\Z;]]8&'WA]2B$@;^0<-RH?=0DA=\_&6%5]__15D@5FU1A&%$"XTD/+*JK
+M&R%JZP:ZSL/`'QE2K%P2H0!B#KSY0I\LN6G*DNT/[8=Y+:/V%AVPE8JND@R1
+M-ZX<6L)O,1!.YH41?G^)C0/;-Z86K6<.^_\#J;Z@%,ZJ]@ZF^C[V<!:D/N6+
+M4A;;;(4(<&+<-2)_-`YJV+O1Y!`MP/?UR72ZNKB@\^&-%HDJ9AZDR:5:RK:>
+M9U@^RYR8@?H('4LM=F>@-ND^>US5:%<>N6#TYLW%G$C:R(5H1,6CR)T@.,C*
+M_B_:]*>V#06X]!/Z>U2VHNQ/8;7=+=M"J'VT2=KOS!2\.?[Q=L5!D)H=5M7$
+MP@L^QW5JG/!&#MQ1CP6W6^]0;2`NX^G[R9R=-LA,*@1.N.5D7=8*8KGH`7LP
+MJ?F.+[>2)A1C@L%<`;C@V@[9]`SV6W8>!\HR*7"^VP7"29<,%W#N!,=*\POI
+MR:'%(P:/HT7N`HV,T(=I^DAQ7*Y=WIJT/9ZQC1YZ\@SZ"P%NT%-7,_"K$@6:
+M,DL3:_$MW9H`*]6=&!,#*(F9M8@DK0_P-#9>7T_L_(FOC1\/ZG+M*N^RJ/QI
+M*K#SBO8#-?A[$R!XWN5.1AR'?[T&$!1FOJ>O.8)G#S&R)@7:[P34=\8C5Q*6
+M44E8>*;\BT=L:"L?M+0/(89!D]]C?1NMO`^YXA`%@@RL[ZR)T$EX4#;%T^EH
+MJO4AFJ];K*5.E`C*1-SA[4]\+.SVD=/4047/T+R>6V<..T;J=QD3+EFDZTZT
+M^>X\"+V(4L6%58U3'50FREZG[@<38TOU9D<4KB#KAJ%Z=06O'AT:CN^SB3KA
+M,*?G@JSDD+>)YBEX2"O3Q"RU?(XUVLE8?US%.NDKJK1)E6U@-)[<<9"X6W%(
+MT"BP&356CWU:Q<TG(&;"JY\311)A)"C"&NZ\%M5H2/UVE1[H?TF`#]9$".?9
+MB+^_+.Q]HB_Z.O%L+^!@XG6@6X-[D@R%;*+M=->"A><G(?!5P@**M%%][ZU(
+M+1(EA')5D.[D`387"11I,YR!PY0G*E<R]UZLAHF_#+L<>R`X,-NCM@-`8@!8
+MWERD8AQA5Q-K\8H#SP)N@[+!<(Y'+>!%696;#P.V.K(V4]8,M$B<;-7J2N;8
+MSMX("LH<]4T58UEB7UM*MV23+7,'7H([K%5%?64KQLL2JS&P:XB^5_]W6'A1
+M<+DUEO:?&2?>2GMB$;U6`:>G'NTL7;)Z,9K\W#W-Y2QC:1E\\2H7Y=)/;;)Z
+M.Z(?@=.!,2('GD`+;_2OW0_TZ^E)-XM@0<97--DGG6\33^9^SCF_W-CNK5K$
+M>[<LT'XB*WB#WQU)"!V:P^B5;12UH[!^UBUK/;!SMD+NW/2/2,P:Q5C./I[F
+M:[N1[9]\#_,U`]81)FU3>;[C/+3AX1*'KQ3B$?L&3#AA-F]N(=<3DFT"^
+MTM?[A#EXMW@U&"UJ>G;LJ^G[I.^SC^L"8AOJT5`2&(T7%XD8&P@9`595\\4G
+M16V%1L3)?`\E_+B1Y.E*][+HO+A`A1G)=1,7K^.3/6:;W/UZ*T">WCO\84T^
+M$>+M@@Z!/;<S<\U/!<$Z_:_#'VEHDE\'88*!2!=1FNJPHS:&Y+7VY?7WH5<)
+MPNG]Z?/)\?1GV8:8856A'0&,I34W@PE,>N-`/D(S[CJ.]P8]/7A<WX>Q*?:)
+M#&T\^?K.J;@AI[/#.F@Q(U5:Q5G`&U/JD)ZK,3,H:F@W_NNT=451;G>C5;S,
+MZ;BG4*.LH'8++'YD?%=0PV1MYX#TP`&=YN0^UA"&\^/?#W5>*9P@R3/WT,!&
+M12W!%C64#VOCF&CBNT.`V!QW@:MT:]],[@]<^[-<XB7B".JJZ(Y7U3%5L^=&
+M3X$AB74=]!67#L3>E,=_"QQ9TJ_!Q":;@I2($D\N35;VZ5[<,@"G#%6)>&7+
+M3KOIER!;_!7JKL/\'(^\$X4%Q]]KAF`;.O\6F.,$-LX-FL'&!5N^+CK=RQ15
+MD2ZXR?D=2%V1/W3\%!Q2Z<IDL>C5S$R8/:E%6QDM"9'0PPIH=0B%$J$">_*9
+M.)_$0.\6%E[6M3;'F"ZPO-6L)XJ,DRK7-YU&C,E._?W'^P+V80:DW!6\YX.S
+M.`+\>"*N4RCY"[!&7>D(1J%JUFW=6B9H9;A\?G&=7G,'R.KR*'*KQROX8O(B
+M9]WF,+RF4IEP$%=6BGERF?3X!M^:VS?YK;A&F?:^$='Z<@M^O*,_!^85Q;F%
+MCG^$I['J%6H6H\.RX/)_!_F9/"SWN7Q%Z>XI*#WU;G;Q+R^S25CP6V2K66`T
+M%(P;UH_MJ+TDI$_>%Z3AMY3^1R67I*L*2G:[VN2.UQZ#@'%AD17A6UZ94.%=
+MRS1(^H[P8EMUYYPD]-H>C@P4(GXU;JO>&S,W#GP06MAOQ,7'8PP[":!W^9JY
+M6/]GSI:GV)(4.T5*@%=+9`X<LC?U/B;-C'U@MA>,J'M&`9C84I!:S9_ZSG",
+M-F)QS^FU4[`_1%*\,S/7(G9F>0E2B]G(N?-D,/"FER(C9Y7O)WR/`C*5<6U-
+M+#N\JQ95[!T-@R+=/]1SZ1-I!7_X6IX__.,&+Q?=_>P](;(YV2Q>`AF`-7DA
+M;&W:6`ZP8O6<K7?XL`=^KO/O+(BXFG?YT1RR]Z+M=SNPI/O&;1EJT]L*LC6,
+M-+6B3#+W7"]WBV;_.^T;$L!SUQ`_TC!YPC$Q>/'4V*C\AL7IM'F/*&BL<TA/
+MPN*1%U.,[16FM:4;(E*D4:>`T4:C7POQ"V\<G&G-E(LL]TQFB+/$E3E%?=$2
+MUT+\861DF,(L$B,Y$2!:!Q8F*(=^T11J-!AO'=0FSAU]8B!XS@Q3(JXAVU5&
+ML$*N\^B<.@L9(>`F-/T%26/#,H,\<#_BF4\=-IY6+VFJ!_>,[8D&.M:K."]S
+M,K.C):(-GCSD?+GJ`ZV'K"!;D'&;23VD'8&7<D]^!?25?VFQY3C:P%^4E
+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
+MOZX[S+1Q+RCR\>UX>#$,I:A_><_N1P;"S#U[9+J2I^5Q=A,+JX"X3":L?
+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
+MR&[^44^,<>6IA_VK-XX>ORKOXWQ]VP&�`:4SQ5/^(E_G,(`$9^[6?QN#_Q
+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
+:72R]434OO)=-+STN,1U\CTC_TL0]>P!`!P``
+`
+end
--- /dev/null
+/*-
+ * Copyright (c) 2020 Ben Wagner
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#include "test.h"
+__FBSDID("$FreeBSD$");
+
+/*
+ * The pax size attribute can be used to override the size.
+ * It should be validated the same way the normal size is validated.
+ * The test data is fuzzer output from
+ * https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=48467 .
+ */
+DEFINE_TEST(test_read_format_tar_invalid_pax_size)
+{
+ /*
+ * An archive that contains a PAX 'size' record with a large negative value.
+ */
+ struct archive_entry *ae;
+ struct archive *a;
+ const char *refname = "test_read_format_tar_invalid_pax_size.tar";
+
+ extract_reference_file(refname);
+ assert((a = archive_read_new()) != NULL);
+ assertEqualInt(ARCHIVE_OK, archive_read_support_filter_all(a));
+ assertEqualInt(ARCHIVE_OK, archive_read_support_format_all(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_open_filename(a, refname, 10240));
+ /* This assert will pass a normal debug build without the pax size check. */
+ /* Run this test with `-fsanitize=undefined` to verify. */
+ assertEqualIntA(a, ARCHIVE_FATAL, archive_read_next_header(a, &ae));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+}
--- /dev/null
+begin 644 test_read_format_tar_invalid_pax_size.tar.uu
+M+B]087A(96%D97)S+C$T-#8S+V%A80``````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````#`P,#`V-#0`,#`P,#`P,``P,#`P,#`P`#`P,#`P,#`P,S$R
+M`#$R-3,Q,30U,S<Q`"`Q,30R,"`@>```````````````````````````````
+M````````````````````````````````````````````````````````````
+M``````````````````````````````````````````!U='-A<@`P,```````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M```````````````````````S,"`@("`@(#T@("`@("`@("`@("`@("`@("`@
+M(`HS,"`@("`@(#T@("`@("`@("`@("`@("`@("`@(`HS,"`@("`@("`]("`@
+M("`@("`@("`@("`@("`@(`HS,"!S:7IE/2TQ.3<V.30Q,3$Q,S8U.3<R-S0S
+M-@H@("`@("`@("`@_R`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@
+M("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@
+M("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@
+M("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@
+M("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@
+M("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@
+M("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@____("`@("`@("`@
+M("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@
+M("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@(&%A80``````````
+M````````````````````````````````````````````````````````````
+M```````````````````````````````````````````````````````````P
+M,#,P.#$V`#`S-S0U,S0`,#`Q,38Q,``P,#`P,#`P,#`P-P`Q,C4S,3$T-3,W
+M,``@,3(P-S$@(#$`````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````=7-T87(`,#!D=GEU:V]V````````````````````````````````96YG
+M`````````````````````````/\!````````````````,#`Q`#`P,#`P,#`P
+M,#`P````````````````````````````````````````````````````]P``
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+&````````
+`
+end
assertEqualIntA(a, ARCHIVE_OK, archive_read_free(a));
}
+DEFINE_TEST(test_read_format_zip_zstd_one_file)
+{
+ const char *refname = "test_read_format_zip_zstd.zipx";
+ struct archive *a;
+ struct archive_entry *ae;
+
+ assert((a = archive_read_new()) != NULL);
+ if (ARCHIVE_OK != archive_read_support_filter_zstd(a)) {
+ skipping("zstd is not fully supported on this platform");
+ archive_read_close(a);
+ archive_read_free(a);
+ return;
+ }
+ extract_reference_file(refname);
+
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_zip(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_open_filename(a, refname, 37));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualString("ZIP 2.0 (zstd)", archive_format_name(a));
+ assertEqualString("vimrc", archive_entry_pathname(ae));
+ assertEqualIntA(a, 0, extract_one(a, ae, 0xBA8E3BAA));
+ assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_free(a));
+}
+
+DEFINE_TEST(test_read_format_zip_zstd_one_file_blockread)
+{
+ const char *refname = "test_read_format_zip_zstd.zipx";
+ struct archive *a;
+ struct archive_entry *ae;
+
+ assert((a = archive_read_new()) != NULL);
+ if (ARCHIVE_OK != archive_read_support_filter_zstd(a)) {
+ skipping("zstd is not fully supported on this platform");
+ archive_read_close(a);
+ archive_read_free(a);
+ return;
+ }
+ extract_reference_file(refname);
+
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_zip(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_open_filename(a, refname, 37));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualString("ZIP 2.0 (zstd)", archive_format_name(a));
+ assertEqualString("vimrc", archive_entry_pathname(ae));
+ assertEqualIntA(a, 0, extract_one_using_blocks(a, 13, 0xBA8E3BAA));
+ assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_free(a));
+}
+
+DEFINE_TEST(test_read_format_zip_zstd_multi)
+{
+ const char *refname = "test_read_format_zip_zstd_multi.zipx";
+ struct archive *a;
+ struct archive_entry *ae;
+
+ assert((a = archive_read_new()) != NULL);
+ if (ARCHIVE_OK != archive_read_support_filter_zstd(a)) {
+ skipping("zstd is not fully supported on this platform");
+ archive_read_close(a);
+ archive_read_free(a);
+ return;
+ }
+ extract_reference_file(refname);
+
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_zip(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_open_filename(a, refname, 37));
+
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualString("ZIP 2.0 (zstd)", archive_format_name(a));
+ assertEqualString("smartd.conf", archive_entry_pathname(ae));
+ assertEqualIntA(a, 0, extract_one(a, ae, 0x8DD7379E));
+
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualString("ZIP 2.0 (zstd)", archive_format_name(a));
+ assertEqualString("ts.conf", archive_entry_pathname(ae));
+ assertEqualIntA(a, 0, extract_one(a, ae, 0x7AE59B31));
+
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualString("ZIP 2.0 (zstd)", archive_format_name(a));
+ assertEqualString("vimrc", archive_entry_pathname(ae));
+ assertEqualIntA(a, 0, extract_one(a, ae, 0xBA8E3BAA));
+
+ assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_free(a));
+}
+
+DEFINE_TEST(test_read_format_zip_zstd_multi_blockread)
+{
+ const char *refname = "test_read_format_zip_zstd_multi.zipx";
+ struct archive *a;
+ struct archive_entry *ae;
+
+ assert((a = archive_read_new()) != NULL);
+ if (ARCHIVE_OK != archive_read_support_filter_zstd(a)) {
+ skipping("zstd is not fully supported on this platform");
+ archive_read_close(a);
+ archive_read_free(a);
+ return;
+ }
+ extract_reference_file(refname);
+
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_zip(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_open_filename(a, refname, 37));
+
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualString("ZIP 2.0 (zstd)", archive_format_name(a));
+ assertEqualString("smartd.conf", archive_entry_pathname(ae));
+ assertEqualIntA(a, 0, extract_one_using_blocks(a, 12, 0x8DD7379E));
+
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualString("ZIP 2.0 (zstd)", archive_format_name(a));
+ assertEqualString("ts.conf", archive_entry_pathname(ae));
+ assertEqualIntA(a, 0, extract_one_using_blocks(a, 13, 0x7AE59B31));
+
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualString("ZIP 2.0 (zstd)", archive_format_name(a));
+ assertEqualString("vimrc", archive_entry_pathname(ae));
+ assertEqualIntA(a, 0, extract_one_using_blocks(a, 14, 0xBA8E3BAA));
+
+ assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_free(a));
+}
+
DEFINE_TEST(test_read_format_zip_xz_multi)
{
const char *refname = "test_read_format_zip_xz_multi.zipx";
if(ARCHIVE_OK != archive_read_support_filter_lzma(a)) {
skipping("lzma reading is not fully supported on this platform");
archive_read_close(a);
+ archive_read_free(a);
return;
}
const char *refname = "test_read_format_zip_7z_deflate.zip";
struct archive_entry *ae;
struct archive *a;
+ int r;
assert((a = archive_read_new()) != NULL);
assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
assertEqualIntA(a, ARCHIVE_OK,
archive_read_open_filename(a, refname, 10240));
//read first symlink
- assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ r = archive_read_next_header(a, &ae);
+ if (archive_zlib_version() == NULL) {
+ assertEqualInt(ARCHIVE_FAILED, r);
+ assertEqualString(archive_error_string(a),
+ "Unsupported ZIP compression method during decompression "
+ "of link entry (8: deflation)");
+ assert(archive_errno(a) != 0);
+ } else {
+ assertEqualIntA(a, ARCHIVE_OK, r);
+ assertEqualString("libxkbcommon-x11.so.0.0.0",
+ archive_entry_symlink(ae));
+ }
assertEqualInt(AE_IFLNK, archive_entry_filetype(ae));
- assertEqualString("libxkbcommon-x11.so.0.0.0",
- archive_entry_symlink(ae));
//read second symlink
- assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ r = archive_read_next_header(a, &ae);
+ if (archive_zlib_version() == NULL) {
+ assertEqualInt(ARCHIVE_FAILED, r);
+ assertEqualString(archive_error_string(a),
+ "Unsupported ZIP compression method during decompression "
+ "of link entry (8: deflation)");
+ assert(archive_errno(a) != 0);
+ } else {
+ assertEqualIntA(a, ARCHIVE_OK, r);
+ assertEqualString("libxkbcommon-x11.so.0.0.0",
+ archive_entry_symlink(ae));
+ }
assertEqualInt(AE_IFLNK, archive_entry_filetype(ae));
- assertEqualString("libxkbcommon-x11.so.0.0.0",
- archive_entry_symlink(ae));
assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
assertEqualIntA(a, ARCHIVE_OK, archive_read_free(a));
}
} else {
assertEqualInt(ARCHIVE_FAILED, archive_read_data(a, buff, 19));
assertEqualString(archive_error_string(a),
- "Unsupported ZIP compression method (deflation)");
+ "Unsupported ZIP compression method (8: deflation)");
assert(archive_errno(a) != 0);
}
assertEqualInt(ARCHIVE_FAILED,
archive_read_data(a, buff, sizeof(buff)));
assertEqualString(archive_error_string(a),
- "Unsupported ZIP compression method (deflation)");
+ "Unsupported ZIP compression method (8: deflation)");
assert(archive_errno(a) != 0);
}
assertEqualInt(ARCHIVE_FAILED,
archive_read_data(a, buff, sizeof(buff)));
assertEqualString(archive_error_string(a),
- "Unsupported ZIP compression method (deflation)");
+ "Unsupported ZIP compression method (8: deflation)");
assert(archive_errno(a) != 0);
}
assertEqualInt(ARCHIVE_FAILED,
archive_read_data(a, buff, sizeof(buff)));
assertEqualString(archive_error_string(a),
- "Unsupported ZIP compression method (deflation)");
+ "Unsupported ZIP compression method (8: deflation)");
assert(archive_errno(a) != 0);
}
assertEqualInt(ARCHIVE_FAILED,
archive_read_data(a, buff, sizeof(buff)));
assertEqualString(archive_error_string(a),
- "Unsupported ZIP compression method (deflation)");
+ "Unsupported ZIP compression method (8: deflation)");
assert(archive_errno(a) != 0);
}
--- /dev/null
+begin 644 test_read_format_zip_zstd.zipx
+M4$L#!!0```!=`#TQD4VJ.XZZ&P(``)`#```%````=FEM<F,HM2_]`%B5$``F
+M*&PC(&_;!LR_L%[])MU@R?]OORW$@9`DQ+<"F#-&'$Y6"9""0&%E`%\`7@"1
+M7?FX:LJ\X?*WT9.43+L]A_#MKX7+T^E'CZM<W%N^:O@!SJ4,4TAA"BGIT&'%
+M\5.>I.97\6@M?/P$SA1R6+RFRUD<*@L-#!$.$A`-#!,!;_I.?CH\]WK(I'HJ
+MC1"P;([X:RD\"4NZL[X9?H=*YI9Q^9SUG`U"%GS.%'JF0M<\[PV?3#MR">63
+MU+);7<0EM,_'U]+(<VG*;PPLCBFD+)V*P',I<U:G]:N>)+7>.MS@IFGS.GUF
+M'S5\-@V=Y=MW6",,P^\(`,FALG&E(V`ZX;1&#G$;^?8[^=%R^:Q[GB1^JPZA
+M-SI]3O>XY5O/>)70LG3/QWO;L^DZJQ/Q)"5'6^UGS\CUT,:'[<)XDMY"B%WV
+MPK<V35TV@^>$('N2MJ]2M61L`\D@@2E$0?$HA-^YDM0T959VUCN4BS.J<-=[
+M6P)HFD)TO47V[FWT;?<:9=HN25KX&K(SA?9*P8'"=&]T1G?9G8^[AR>)P11R
+MY'H86B0%XTKA&U$O;*N]M,>LJ)E`K77)I'N2E`(B(!!&C.+TY**V^BU(V9R8
+M!ZLXW)6;"!YPP'E,4_F\OB!T"4Z:6/#"Z823+@5V#BNHGHC-+4@`)>?""C,)
+M2+G'/1,#D-1'B&&R288:'(KD,I>"_/85<Z&-7Q#VF647!5!+`0(_`Q0```!=
+M`#TQD4VJ.XZZ&P(``)`#```%``````````````"D@0````!V:6UR8U!+!08`
+1`````0`!`#,````^`@``````
+`
+end
--- /dev/null
+begin 644 test_read_format_zip_zstd_multi.zipx
+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
+I``````````"D@08-``!V:6UR8U!+!08``````P`#`*$```!$#P``````
+`
+end
/* Check correct behavior on large reads. */
DEFINE_TEST(test_read_large)
{
- unsigned int i;
int tmpfilefd;
char tmpfilename[] = "test-read_large.XXXXXX";
size_t used;
struct archive_entry *entry;
FILE *f;
- for (i = 0; i < sizeof(testdata); i++)
- testdata[i] = (unsigned char)(rand());
+ fill_with_pseudorandom_data(testdata, sizeof(testdata));
assert(NULL != (a = archive_write_new()));
assertA(0 == archive_write_set_format_ustar(a));
assert((ae = archive_entry_new()) != NULL);
archive_entry_copy_pathname(ae, "file");
archive_entry_set_mode(ae, S_IFREG | 0755);
- for (i = 0; i < filedata_size; i++)
- filedata[i] = (unsigned char)rand();
+ fill_with_pseudorandom_data(filedata, filedata_size);
+
archive_entry_set_atime(ae, 1, 2);
archive_entry_set_ctime(ae, 3, 4);
archive_entry_set_mtime(ae, 5, 6);
assert((ae = archive_entry_new()) != NULL);
archive_entry_copy_pathname(ae, "file");
archive_entry_set_mode(ae, S_IFREG | 0755);
- for (i = 0; i < sizeof(buff2); i++)
- buff2[i] = (unsigned char)rand();
+ fill_with_pseudorandom_data(buff2, sizeof(buff2));
archive_entry_set_size(ae, sizeof(buff2));
assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae));
archive_entry_free(ae);
char path[16];
char *buff, *data;
size_t buffsize, datasize, used1;
- int i, j, r, use_prog;
+ int i, r, use_prog;
buffsize = 2000000;
assert(NULL != (buff = (char *)malloc(buffsize)));
archive_entry_set_filetype(ae, AE_IFREG);
archive_entry_set_size(ae, datasize);
for (i = 0; i < 100; i++) {
- sprintf(path, "%s%d", compression, i);
+ snprintf(path, sizeof(path), "%s%d", compression, i);
archive_entry_copy_pathname(ae, path);
failure("%s", path);
if (!assertEqualIntA(a, ARCHIVE_OK,
free(buff);
return;
}
- for (j = 0; j < (int)datasize; ++j) {
- data[j] = (char)(rand() % 256);
- }
+ fill_with_pseudorandom_data(data, datasize);
failure("%s", path);
if (!assertEqualIntA(a, datasize,
archive_write_data(a, data, datasize))) {
assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
- assertEqualIntA(a, ARCHIVE_OK,
- archive_read_open_memory(a, buff, used1 - used1/64));
+ r = archive_read_open_memory(a, buff, used1 - used1/64);
+ if (r != ARCHIVE_OK) {
+ assertEqualStringA(a, "truncated bzip2 input",
+ archive_error_string(a));
+ goto out;
+ }
+
for (i = 0; i < 100; i++) {
if (ARCHIVE_OK != archive_read_next_header(a, &ae)) {
failure("Should have non-NULL error message for %s",
assert(NULL != archive_error_string(a));
break;
}
- sprintf(path, "%s%d", compression, i);
+ snprintf(path, sizeof(path), "%s%d", compression, i);
assertEqualString(path, archive_entry_pathname(ae));
if (datasize != (size_t)archive_read_data(a, data, datasize)) {
failure("Should have non-NULL error message for %s",
archive_read_close(a));
assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+out:
free(data);
free(buff);
}
DEFINE_TEST(test_read_truncated_filter_lzip)
{
- test_truncation("lzip", archive_write_add_filter_lzip, 0);
+ test_truncation("lzip", archive_write_add_filter_lzip, canLzip());
}
DEFINE_TEST(test_read_truncated_filter_lzma)
{
- test_truncation("lzma", archive_write_add_filter_lzma, 0);
+ test_truncation("lzma", archive_write_add_filter_lzma, canLzma());
}
DEFINE_TEST(test_read_truncated_filter_lzop)
DEFINE_TEST(test_read_truncated_filter_xz)
{
- test_truncation("xz", archive_write_add_filter_xz, 0);
+ test_truncation("xz", archive_write_add_filter_xz, canXz());
}
{
free(checker->shortbuf);
free(checker->fullbuf);
+ archive_read_free(checker->short_archive);
+ archive_read_free(checker->full_archive);
free(checker);
}
#if defined(HAVE_LINUX_FIEMAP_H)
if (r < 0)
return (is_sparse_supported_fiemap(path));
-#endif
+ return (1);
+#else
return (r >= 0);
+#endif
}
#elif !defined(HAVE_LINUX_FIEMAP_H)
#if DEBUG
fprintf(stderr, " overlapping hole expected_offset=%d, size=%d\n", (int)expected_offset, (int)sparse->size);
#endif
- /* Must be a hole, overlap must be filled with '\0' */
- if (assert(sparse->type == HOLE)) {
+ if (sparse->type == HOLE) {
assertMemoryFilledWith(start, end - start, '\0');
+ } else if (assert(sparse->type == DATA)) {
+ assertMemoryFilledWith(start, end - start, ' ');
}
start = end;
expected_offset += sparse->size;
#if DEBUG
fprintf(stderr, " trailing overlap expected_offset=%d, size=%d\n", (int)expected_offset, (int)sparse->size);
#endif
- /* Must be a hole, overlap must be filled with '\0' */
- if (assert(sparse->type == HOLE)) {
+ if (sparse->type == HOLE) {
assertMemoryFilledWith(start, end - start, '\0');
+ } else if (assert(sparse->type == DATA)) {
+ assertMemoryFilledWith(start, end - start, ' ');
}
}
last_offset = offset + bytes_read;
verify_sparse_file2(a, "file0", sparse_file0, 5, 1);
assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+
+ /*
+ * Test that setting ARCHIVE_READDISK_NO_SPARSE
+ * creates no sparse entries.
+ */
+ assert((a = archive_read_disk_new()) != NULL);
+
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_disk_set_behavior(a,
+ ARCHIVE_READDISK_NO_SPARSE));
+
+ verify_sparse_file(a, "file0", sparse_file0, 0);
+ verify_sparse_file(a, "file1", sparse_file1, 0);
+ verify_sparse_file(a, "file2", sparse_file2, 0);
+ verify_sparse_file(a, "file3", sparse_file3, 0);
+ verify_sparse_file(a, "file4", sparse_file4, 0);
+
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+
+ assert((a = archive_read_disk_new()) != NULL);
+
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_disk_set_behavior(a,
+ ARCHIVE_READDISK_NO_SPARSE));
+
+ verify_sparse_file2(a, "file0", sparse_file0, 0, 0);
+ verify_sparse_file2(a, "file0", sparse_file0, 0, 1);
+
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
free(cwd);
}
*/
for (i = 0; tests[i] != 0; i++) {
assert((ae = archive_entry_new()) != NULL);
- sprintf(namebuff, "file_%d", i);
+ snprintf(namebuff, sizeof(namebuff), "file_%d", i);
archive_entry_copy_pathname(ae, namebuff);
archive_entry_set_mode(ae, S_IFREG | 0755);
filesize = tests[i];
*/
for (i = 0; tests[i] > 0; i++) {
assertEqualIntA(a, 0, archive_read_next_header(a, &ae));
- sprintf(namebuff, "file_%d", i);
+ snprintf(namebuff, sizeof(namebuff), "file_%d", i);
assertEqualString(namebuff, archive_entry_pathname(ae));
assert(tests[i] == archive_entry_size(ae));
}
/*
* Create a file
*/
- assertMakeFile("victim", 0600, "a");
+ assertMakeFile("file", 0600, "a");
+
+ /*
+ * Create a directory
+ */
+ assertMakeDir("dir", 0700);
/*
* Create a directory and a symlink with the same name
*/
- /* Directory: dir */
+ /* Directory: dir1 */
+ assert((ae = archive_entry_new()) != NULL);
+ archive_entry_copy_pathname(ae, "dir1/");
+ archive_entry_set_mode(ae, AE_IFDIR | 0555);
+ assertEqualIntA(ad, 0, archive_write_header(ad, ae));
+ assertEqualIntA(ad, 0, archive_write_finish_entry(ad));
+ archive_entry_free(ae);
+
+ /* Directory: dir2 */
assert((ae = archive_entry_new()) != NULL);
- archive_entry_copy_pathname(ae, "dir");
- archive_entry_set_mode(ae, AE_IFDIR | 0606);
+ archive_entry_copy_pathname(ae, "dir2/");
+ archive_entry_set_mode(ae, AE_IFDIR | 0555);
assertEqualIntA(ad, 0, archive_write_header(ad, ae));
assertEqualIntA(ad, 0, archive_write_finish_entry(ad));
archive_entry_free(ae);
- /* Symbolic Link: dir -> foo */
+ /* Symbolic Link: dir1 -> dir */
+ assert((ae = archive_entry_new()) != NULL);
+ archive_entry_copy_pathname(ae, "dir1");
+ archive_entry_set_mode(ae, AE_IFLNK | 0777);
+ archive_entry_set_size(ae, 0);
+ archive_entry_copy_symlink(ae, "dir");
+ assertEqualIntA(ad, 0, r = archive_write_header(ad, ae));
+ if (r >= ARCHIVE_WARN)
+ assertEqualIntA(ad, 0, archive_write_finish_entry(ad));
+ archive_entry_free(ae);
+
+ /* Symbolic Link: dir2 -> file */
assert((ae = archive_entry_new()) != NULL);
- archive_entry_copy_pathname(ae, "dir");
+ archive_entry_copy_pathname(ae, "dir2");
archive_entry_set_mode(ae, AE_IFLNK | 0777);
archive_entry_set_size(ae, 0);
- archive_entry_copy_symlink(ae, "victim");
+ archive_entry_copy_symlink(ae, "file");
assertEqualIntA(ad, 0, r = archive_write_header(ad, ae));
if (r >= ARCHIVE_WARN)
assertEqualIntA(ad, 0, archive_write_finish_entry(ad));
assertEqualInt(ARCHIVE_OK, archive_write_free(ad));
/* Test the entries on disk. */
- assertIsSymlink("dir", "victim", 0);
- assertFileMode("victim", 0600);
+ assertIsSymlink("dir1", "dir", 0);
+ assertIsSymlink("dir2", "file", 0);
+ assertFileMode("dir", 0700);
+ assertFileMode("file", 0600);
#endif
}
archive_entry_free(ae);
*p++ = '/';
- sprintf(p, "target%d", n);
+ snprintf(p, buff_size - (p - buff), "target%d", n);
/* Try to create a file through the symlink, should fail. */
assert((ae = archive_entry_new()) != NULL);
*/
DEFINE_TEST(test_write_disk_secure746a)
{
-#if defined(_WIN32) && !defined(__CYGWIN__)
- skipping("archive_write_disk security checks not supported on Windows");
-#else
struct archive *a;
struct archive_entry *ae;
assertEqualIntA(a, ARCHIVE_FATAL, archive_write_close(a));
archive_write_free(a);
-#endif
}
/*
assert((ae = archive_entry_new()) != NULL);
archive_entry_set_filetype(ae, AE_IFREG);
archive_entry_set_size(ae, datasize);
- sprintf(path, "file%03d", i);
+ snprintf(path, sizeof(path), "file%03d", i);
archive_entry_copy_pathname(ae, path);
assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae));
assertA(datasize
assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
assertEqualIntA(a, ARCHIVE_OK, archive_read_open_memory(a, buff, used1));
for (i = 0; i < 99; i++) {
- sprintf(path, "file%03d", i);
+ snprintf(path, sizeof(path), "file%03d", i);
if (!assertEqualIntA(a, 0, archive_read_next_header(a, &ae)))
break;
assertEqualString(path, archive_entry_pathname(ae));
assertEqualIntA(a, ARCHIVE_OK,
archive_write_open_memory(a, buff, buffsize, &used2));
for (i = 0; i < 99; i++) {
- sprintf(path, "file%03d", i);
+ snprintf(path, sizeof(path), "file%03d", i);
assert((ae = archive_entry_new()) != NULL);
archive_entry_copy_pathname(ae, path);
archive_entry_set_size(ae, datasize);
assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
assertEqualIntA(a, ARCHIVE_OK, archive_read_open_memory(a, buff, used2));
for (i = 0; i < 99; i++) {
- sprintf(path, "file%03d", i);
+ snprintf(path, sizeof(path), "file%03d", i);
if (!assertEqualInt(0, archive_read_next_header(a, &ae)))
break;
assertEqualString(path, archive_entry_pathname(ae));
archive_entry_set_filetype(ae, AE_IFREG);
archive_entry_set_size(ae, datasize);
for (i = 0; i < 999; i++) {
- sprintf(path, "file%03d", i);
+ snprintf(path, sizeof(path), "file%03d", i);
archive_entry_copy_pathname(ae, path);
assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae));
assertA(datasize
assertEqualIntA(a, ARCHIVE_OK,
archive_read_open_memory(a, buff, used1));
for (i = 0; i < 999; i++) {
- sprintf(path, "file%03d", i);
+ snprintf(path, sizeof(path), "file%03d", i);
if (!assertEqualInt(0, archive_read_next_header(a, &ae)))
break;
assertEqualString(path, archive_entry_pathname(ae));
assertEqualIntA(a, ARCHIVE_OK,
archive_write_open_memory(a, buff, buffsize, &used2));
for (i = 0; i < 999; i++) {
- sprintf(path, "file%03d", i);
+ snprintf(path, sizeof(path), "file%03d", i);
assert((ae = archive_entry_new()) != NULL);
archive_entry_copy_pathname(ae, path);
archive_entry_set_size(ae, datasize);
assertEqualIntA(a, ARCHIVE_OK,
archive_read_open_memory(a, buff, used2));
for (i = 0; i < 999; i++) {
- sprintf(path, "file%03d", i);
+ snprintf(path, sizeof(path), "file%03d", i);
if (!assertEqualInt(0, archive_read_next_header(a, &ae)))
break;
assertEqualString(path, archive_entry_pathname(ae));
assertEqualIntA(a, ARCHIVE_OK,
archive_write_open_memory(a, buff, buffsize, &used2));
for (i = 0; i < 999; i++) {
- sprintf(path, "file%03d", i);
+ snprintf(path, sizeof(path), "file%03d", i);
assert((ae = archive_entry_new()) != NULL);
archive_entry_copy_pathname(ae, path);
archive_entry_set_size(ae, datasize);
assertEqualIntA(a, ARCHIVE_OK,
archive_read_open_memory(a, buff, used2));
for (i = 0; i < 999; i++) {
- sprintf(path, "file%03d", i);
+ snprintf(path, sizeof(path), "file%03d", i);
if (!assertEqualInt(0, archive_read_next_header(a, &ae)))
break;
assertEqualString(path, archive_entry_pathname(ae));
archive_write_open_memory(a, buff, buffsize, &used));
for (i = 0; i < 100; i++) {
- sprintf(path, "file%03d", i);
+ snprintf(path, sizeof(path), "file%03d", i);
assert((ae = archive_entry_new()) != NULL);
archive_entry_copy_pathname(ae, path);
archive_entry_set_size(ae, datasize);
for (i = 0; i < 100; i++) {
- sprintf(path, "file%03d", i);
+ snprintf(path, sizeof(path), "file%03d", i);
if (!assertEqualInt(0, archive_read_next_header(a, &ae)))
break;
assertEqualString(path, archive_entry_pathname(ae));
archive_entry_set_filetype(ae, AE_IFREG);
archive_entry_set_size(ae, datasize);
for (i = 0; i < 100; i++) {
- sprintf(path, "file%03d", i);
+ snprintf(path, sizeof(path), "file%03d", i);
archive_entry_copy_pathname(ae, path);
assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae));
assertA(datasize
assertEqualIntA(a, ARCHIVE_OK,
archive_read_open_memory(a, buff, used1));
for (i = 0; i < 100; i++) {
- sprintf(path, "file%03d", i);
+ snprintf(path, sizeof(path), "file%03d", i);
if (!assertEqualInt(ARCHIVE_OK,
archive_read_next_header(a, &ae)))
break;
archive_write_set_options(a, "gzip:compression-level=9"));
assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, buffsize, &used2));
for (i = 0; i < 100; i++) {
- sprintf(path, "file%03d", i);
+ snprintf(path, sizeof(path), "file%03d", i);
assert((ae = archive_entry_new()) != NULL);
archive_entry_copy_pathname(ae, path);
archive_entry_set_size(ae, datasize);
assertEqualIntA(a, ARCHIVE_OK,
archive_read_open_memory(a, buff, used2));
for (i = 0; i < 100; i++) {
- sprintf(path, "file%03d", i);
+ snprintf(path, sizeof(path), "file%03d", i);
if (!assertEqualInt(ARCHIVE_OK,
archive_read_next_header(a, &ae)))
break;
assertEqualIntA(a, ARCHIVE_OK,
archive_write_open_memory(a, buff, buffsize, &used2));
for (i = 0; i < 100; i++) {
- sprintf(path, "file%03d", i);
+ snprintf(path, sizeof(path), "file%03d", i);
assert((ae = archive_entry_new()) != NULL);
archive_entry_copy_pathname(ae, path);
archive_entry_set_size(ae, datasize);
assertEqualIntA(a, ARCHIVE_OK,
archive_read_open_memory(a, buff, used2));
for (i = 0; i < 100; i++) {
- sprintf(path, "file%03d", i);
+ snprintf(path, sizeof(path), "file%03d", i);
if (!assertEqualInt(ARCHIVE_OK,
archive_read_next_header(a, &ae)))
break;
archive_entry_set_filetype(ae, AE_IFREG);
archive_entry_set_size(ae, datasize);
for (i = 0; i < 100; i++) {
- sprintf(path, "file%03d", i);
+ snprintf(path, sizeof(path), "file%03d", i);
archive_entry_copy_pathname(ae, path);
assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae));
assertA(datasize
assertEqualIntA(a, ARCHIVE_OK,
archive_read_open_memory(a, buff, used1));
for (i = 0; i < 100; i++) {
- sprintf(path, "file%03d", i);
+ snprintf(path, sizeof(path), "file%03d", i);
if (!assertEqualInt(ARCHIVE_OK,
archive_read_next_header(a, &ae)))
break;
archive_entry_set_filetype(ae, AE_IFREG);
archive_entry_set_size(ae, datasize);
for (i = 0; i < filecount; i++) {
- sprintf(path, "file%03d", i);
+ snprintf(path, sizeof(path), "file%03d", i);
archive_entry_copy_pathname(ae, path);
assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae));
assertA(datasize
assertEqualIntA(a, ARCHIVE_OK,
archive_read_open_memory(a, buff, used1));
for (i = 0; i < filecount; i++) {
- sprintf(path, "file%03d", i);
+ snprintf(path, sizeof(path), "file%03d", i);
if (!assertEqualInt(ARCHIVE_OK,
archive_read_next_header(a, &ae)))
break;
assertEqualIntA(a, ARCHIVE_OK,
archive_write_open_memory(a, buff, buffsize, &used2));
for (i = 0; i < filecount; i++) {
- sprintf(path, "file%03d", i);
+ snprintf(path, sizeof(path), "file%03d", i);
assert((ae = archive_entry_new()) != NULL);
archive_entry_copy_pathname(ae, path);
archive_entry_set_size(ae, datasize);
assertEqualIntA(a, ARCHIVE_OK,
archive_read_open_memory(a, buff, used2));
for (i = 0; i < filecount; i++) {
- sprintf(path, "file%03d", i);
+ snprintf(path, sizeof(path), "file%03d", i);
if (!assertEqualInt(ARCHIVE_OK,
archive_read_next_header(a, &ae)))
break;
assertEqualIntA(a, ARCHIVE_OK,
archive_write_open_memory(a, buff, buffsize, &used2));
for (i = 0; i < filecount; i++) {
- sprintf(path, "file%03d", i);
+ snprintf(path, sizeof(path), "file%03d", i);
assert((ae = archive_entry_new()) != NULL);
archive_entry_copy_pathname(ae, path);
archive_entry_set_size(ae, datasize);
assertEqualIntA(a, ARCHIVE_OK,
archive_read_open_memory(a, buff, used2));
for (i = 0; i < filecount; i++) {
- sprintf(path, "file%03d", i);
+ snprintf(path, sizeof(path), "file%03d", i);
if (!assertEqualInt(ARCHIVE_OK,
archive_read_next_header(a, &ae)))
break;
archive_entry_set_filetype(ae, AE_IFREG);
archive_entry_set_size(ae, datasize);
for (i = 0; i < filecount; i++) {
- sprintf(path, "file%03d", i);
+ snprintf(path, sizeof(path), "file%03d", i);
archive_entry_copy_pathname(ae, path);
assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae));
assertA(datasize
assertEqualIntA(a, ARCHIVE_OK,
archive_read_open_memory(a, buff, used1));
for (i = 0; i < filecount; i++) {
- sprintf(path, "file%03d", i);
+ snprintf(path, sizeof(path), "file%03d", i);
if (!assertEqualInt(ARCHIVE_OK,
archive_read_next_header(a, &ae)))
break;
archive_entry_set_filetype(ae, AE_IFREG);
archive_entry_set_size(ae, datasize);
for (i = 0; i < 100; i++) {
- sprintf(path, "file%03d", i);
+ snprintf(path, sizeof(path), "file%03d", i);
archive_entry_copy_pathname(ae, path);
assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae));
assertA(datasize
assertEqualIntA(a, ARCHIVE_OK,
archive_read_open_memory(a, buff, used1));
for (i = 0; i < 100; i++) {
- sprintf(path, "file%03d", i);
+ snprintf(path, sizeof(path), "file%03d", i);
if (!assertEqualInt(ARCHIVE_OK,
archive_read_next_header(a, &ae)))
break;
archive_write_set_filter_option(a, NULL, "compression-level", "9"));
assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, buffsize, &used2));
for (i = 0; i < 100; i++) {
- sprintf(path, "file%03d", i);
+ snprintf(path, sizeof(path), "file%03d", i);
assert((ae = archive_entry_new()) != NULL);
archive_entry_copy_pathname(ae, path);
archive_entry_set_size(ae, datasize);
assertEqualIntA(a, ARCHIVE_OK,
archive_read_open_memory(a, buff, used2));
for (i = 0; i < 100; i++) {
- sprintf(path, "file%03d", i);
+ snprintf(path, sizeof(path), "file%03d", i);
failure("Trying to read %s", path);
if (!assertEqualIntA(a, ARCHIVE_OK,
archive_read_next_header(a, &ae)))
archive_write_set_filter_option(a, NULL, "compression-level", "0"));
assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, buffsize, &used2));
for (i = 0; i < 100; i++) {
- sprintf(path, "file%03d", i);
+ snprintf(path, sizeof(path), "file%03d", i);
assert((ae = archive_entry_new()) != NULL);
archive_entry_copy_pathname(ae, path);
archive_entry_set_size(ae, datasize);
assertEqualIntA(a, ARCHIVE_OK,
archive_read_open_memory(a, buff, used2));
for (i = 0; i < 100; i++) {
- sprintf(path, "file%03d", i);
+ snprintf(path, sizeof(path), "file%03d", i);
if (!assertEqualInt(ARCHIVE_OK,
archive_read_next_header(a, &ae)))
break;
archive_entry_set_filetype(ae, AE_IFREG);
archive_entry_set_size(ae, datasize);
for (i = 0; i < 100; i++) {
- sprintf(path, "file%03d", i);
+ snprintf(path, sizeof(path), "file%03d", i);
archive_entry_copy_pathname(ae, path);
assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae));
assertA(datasize
assertEqualIntA(a, ARCHIVE_OK,
archive_read_open_memory(a, buff, used1));
for (i = 0; i < 100; i++) {
- sprintf(path, "file%03d", i);
+ snprintf(path, sizeof(path), "file%03d", i);
if (!assertEqualInt(ARCHIVE_OK,
archive_read_next_header(a, &ae)))
break;
archive_write_set_filter_option(a, NULL, "compression-level", "9"));
assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, buffsize, &used2));
for (i = 0; i < 100; i++) {
- sprintf(path, "file%03d", i);
+ snprintf(path, sizeof(path), "file%03d", i);
assert((ae = archive_entry_new()) != NULL);
archive_entry_copy_pathname(ae, path);
archive_entry_set_size(ae, datasize);
assertEqualIntA(a, ARCHIVE_OK,
archive_read_open_memory(a, buff, used2));
for (i = 0; i < 100; i++) {
- sprintf(path, "file%03d", i);
+ snprintf(path, sizeof(path), "file%03d", i);
failure("Trying to read %s", path);
if (!assertEqualIntA(a, ARCHIVE_OK,
archive_read_next_header(a, &ae)))
archive_write_set_filter_option(a, NULL, "compression-level", "0"));
assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, buffsize, &used2));
for (i = 0; i < 100; i++) {
- sprintf(path, "file%03d", i);
+ snprintf(path, sizeof(path), "file%03d", i);
assert((ae = archive_entry_new()) != NULL);
archive_entry_copy_pathname(ae, path);
archive_entry_set_size(ae, datasize);
assertEqualIntA(a, ARCHIVE_OK,
archive_read_open_memory(a, buff, used2));
for (i = 0; i < 100; i++) {
- sprintf(path, "file%03d", i);
+ snprintf(path, sizeof(path), "file%03d", i);
if (!assertEqualInt(ARCHIVE_OK,
archive_read_next_header(a, &ae)))
break;
archive_entry_set_filetype(ae, AE_IFREG);
archive_entry_set_size(ae, datasize);
for (i = 0; i < filecount; i++) {
- sprintf(path, "file%03d", i);
+ snprintf(path, sizeof(path), "file%03d", i);
archive_entry_copy_pathname(ae, path);
assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae));
assertA(datasize
assertEqualIntA(a, ARCHIVE_OK,
archive_read_open_memory(a, buff, used1));
for (i = 0; i < filecount; i++) {
- sprintf(path, "file%03d", i);
+ snprintf(path, sizeof(path), "file%03d", i);
if (!assertEqualInt(ARCHIVE_OK,
archive_read_next_header(a, &ae)))
break;
assertEqualIntA(a, ARCHIVE_OK,
archive_write_open_memory(a, buff, buffsize, &used2));
for (i = 0; i < filecount; i++) {
- sprintf(path, "file%03d", i);
+ snprintf(path, sizeof(path), "file%03d", i);
assert((ae = archive_entry_new()) != NULL);
archive_entry_copy_pathname(ae, path);
archive_entry_set_size(ae, datasize);
assertEqualIntA(a, ARCHIVE_OK,
archive_read_open_memory(a, buff, used2));
for (i = 0; i < filecount; i++) {
- sprintf(path, "file%03d", i);
+ snprintf(path, sizeof(path), "file%03d", i);
if (!assertEqualInt(ARCHIVE_OK,
archive_read_next_header(a, &ae)))
break;
assertEqualIntA(a, ARCHIVE_OK,
archive_write_open_memory(a, buff, buffsize, &used2));
for (i = 0; i < filecount; i++) {
- sprintf(path, "file%03d", i);
+ snprintf(path, sizeof(path), "file%03d", i);
assert((ae = archive_entry_new()) != NULL);
archive_entry_copy_pathname(ae, path);
archive_entry_set_size(ae, datasize);
assertEqualIntA(a, ARCHIVE_OK,
archive_read_open_memory(a, buff, used2));
for (i = 0; i < filecount; i++) {
- sprintf(path, "file%03d", i);
+ snprintf(path, sizeof(path), "file%03d", i);
if (!assertEqualInt(ARCHIVE_OK,
archive_read_next_header(a, &ae)))
break;
assert((ae = archive_entry_new()) != NULL);
archive_entry_set_filetype(ae, AE_IFREG);
archive_entry_set_size(ae, datasize);
- sprintf(path, "file%03d", i);
+ snprintf(path, sizeof(path), "file%03d", i);
archive_entry_copy_pathname(ae, path);
assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae));
assertA(datasize
assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
assertEqualIntA(a, ARCHIVE_OK, archive_read_open_memory(a, buff, used1));
for (i = 0; i < 99; i++) {
- sprintf(path, "file%03d", i);
+ snprintf(path, sizeof(path), "file%03d", i);
if (!assertEqualIntA(a, 0, archive_read_next_header(a, &ae)))
break;
assertEqualString(path, archive_entry_pathname(ae));
assertEqualIntA(a, ARCHIVE_OK,
archive_write_open_memory(a, buff, buffsize, &used2));
for (i = 0; i < 99; i++) {
- sprintf(path, "file%03d", i);
+ snprintf(path, sizeof(path), "file%03d", i);
assert((ae = archive_entry_new()) != NULL);
archive_entry_copy_pathname(ae, path);
archive_entry_set_size(ae, datasize);
assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
assertEqualIntA(a, ARCHIVE_OK, archive_read_open_memory(a, buff, used2));
for (i = 0; i < 99; i++) {
- sprintf(path, "file%03d", i);
+ snprintf(path, sizeof(path), "file%03d", i);
if (!assertEqualInt(0, archive_read_next_header(a, &ae)))
break;
assertEqualString(path, archive_entry_pathname(ae));
archive_entry_set_filetype(ae, AE_IFREG);
archive_entry_set_size(ae, datasize);
for (i = 0; i < 100; i++) {
- sprintf(path, "file%03d", i);
+ snprintf(path, sizeof(path), "file%03d", i);
archive_entry_copy_pathname(ae, path);
assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae));
assertA(datasize
assertEqualIntA(a, ARCHIVE_OK,
archive_read_open_memory(a, buff, used1));
for (i = 0; i < 100; i++) {
- sprintf(path, "file%03d", i);
+ snprintf(path, sizeof(path), "file%03d", i);
if (!assertEqualInt(ARCHIVE_OK,
archive_read_next_header(a, &ae)))
break;
archive_write_set_filter_option(a, NULL, "compression-level", "9"));
assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, buffsize, &used2));
for (i = 0; i < 100; i++) {
- sprintf(path, "file%03d", i);
+ snprintf(path, sizeof(path), "file%03d", i);
assert((ae = archive_entry_new()) != NULL);
archive_entry_copy_pathname(ae, path);
archive_entry_set_size(ae, datasize);
assertEqualIntA(a, ARCHIVE_OK,
archive_read_open_memory(a, buff, used2));
for (i = 0; i < 100; i++) {
- sprintf(path, "file%03d", i);
+ snprintf(path, sizeof(path), "file%03d", i);
failure("Trying to read %s", path);
if (!assertEqualIntA(a, ARCHIVE_OK,
archive_read_next_header(a, &ae)))
archive_write_set_filter_option(a, NULL, "compression-level", "0"));
assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, buffsize, &used2));
for (i = 0; i < 100; i++) {
- sprintf(path, "file%03d", i);
+ snprintf(path, sizeof(path), "file%03d", i);
assert((ae = archive_entry_new()) != NULL);
archive_entry_copy_pathname(ae, path);
archive_entry_set_size(ae, datasize);
assertEqualIntA(a, ARCHIVE_OK,
archive_read_open_memory(a, buff, used2));
for (i = 0; i < 100; i++) {
- sprintf(path, "file%03d", i);
+ snprintf(path, sizeof(path), "file%03d", i);
if (!assertEqualInt(ARCHIVE_OK,
archive_read_next_header(a, &ae)))
break;
archive_entry_set_filetype(ae, AE_IFREG);
archive_entry_set_size(ae, datasize);
for (i = 0; i < 100; i++) {
- sprintf(path, "file%03d", i);
+ snprintf(path, sizeof(path), "file%03d", i);
archive_entry_copy_pathname(ae, path);
assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae));
assertA(datasize
assertEqualIntA(a, ARCHIVE_OK,
archive_read_open_memory(a, buff, used1));
for (i = 0; i < 100; i++) {
- sprintf(path, "file%03d", i);
+ snprintf(path, sizeof(path), "file%03d", i);
if (!assertEqualInt(ARCHIVE_OK,
archive_read_next_header(a, &ae)))
break;
archive_write_set_filter_option(a, NULL, "compression-level", "-1")); */
assertEqualIntA(a, ARCHIVE_OK,
archive_write_set_filter_option(a, NULL, "compression-level", "7"));
+ assertEqualIntA(a, ARCHIVE_FAILED,
+ archive_write_set_filter_option(a, NULL, "threads", "-1")); /* negative */
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_write_set_filter_option(a, NULL, "threads", "4"));
+#if HAVE_ZSTD_H && HAVE_LIBZSTD_COMPRESSOR
+ /* frame-per-file: boolean */
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_write_set_filter_option(a, NULL, "frame-per-file", ""));
+ /* min-frame-size: >= 0 */
+ assertEqualIntA(a, ARCHIVE_FAILED,
+ archive_write_set_filter_option(a, NULL, "min-frame-size", ""));
+ assertEqualIntA(a, ARCHIVE_FAILED,
+ archive_write_set_filter_option(a, NULL, "min-frame-size", "-1"));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_write_set_filter_option(a, NULL, "min-frame-size", "0"));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_write_set_filter_option(a, NULL, "min-frame-size", "1048576"));
+ /* max-frame-size: >= 1024 */
+ assertEqualIntA(a, ARCHIVE_FAILED,
+ archive_write_set_filter_option(a, NULL, "max-frame-size", ""));
+ assertEqualIntA(a, ARCHIVE_FAILED,
+ archive_write_set_filter_option(a, NULL, "max-frame-size", "-1"));
+ assertEqualIntA(a, ARCHIVE_FAILED,
+ archive_write_set_filter_option(a, NULL, "max-frame-size", "0"));
+ assertEqualIntA(a, ARCHIVE_FAILED,
+ archive_write_set_filter_option(a, NULL, "max-frame-size", "1023"));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_write_set_filter_option(a, NULL, "max-frame-size", "1024"));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_write_set_filter_option(a, NULL, "max-frame-size", "1048576"));
+#endif
+#if ZSTD_VERSION_NUMBER >= MINVER_LONG
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_write_set_filter_option(a, NULL, "long", "27"));
+ assertEqualIntA(a, ARCHIVE_FAILED,
+ archive_write_set_filter_option(a, NULL, "long", "-1")); /* negative */
+#endif
assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, buffsize, &used2));
for (i = 0; i < 100; i++) {
- sprintf(path, "file%03d", i);
+ snprintf(path, sizeof(path), "file%03d", i);
assert((ae = archive_entry_new()) != NULL);
archive_entry_copy_pathname(ae, path);
archive_entry_set_size(ae, datasize);
assertEqualIntA(a, ARCHIVE_OK,
archive_read_open_memory(a, buff, used2));
for (i = 0; i < 100; i++) {
- sprintf(path, "file%03d", i);
+ snprintf(path, sizeof(path), "file%03d", i);
failure("Trying to read %s", path);
if (!assertEqualIntA(a, ARCHIVE_OK,
archive_read_next_header(a, &ae)))
archive_entry_set_filetype(ae, AE_IFREG);
archive_entry_set_size(ae, datasize);
for (i = 0; i < 100; i++) {
- sprintf(path, "file%03d", i);
+ snprintf(path, sizeof(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));
assertEqualIntA(a, ARCHIVE_OK,
archive_read_open_memory(a, buff, used3));
for (i = 0; i < 100; i++) {
- sprintf(path, "file%03d", i);
+ snprintf(path, sizeof(path), "file%03d", i);
failure("Trying to read %s", path);
if (!assertEqualIntA(a, ARCHIVE_OK,
archive_read_next_header(a, &ae)))
#include "test.h"
__FBSDID("$FreeBSD$");
-#define LARGE_SIZE (16*1024*1024)
+#define LARGE_SIZE (1*1024*1024)
static void
test_large(const char *compression_type)
{
size_t buffsize = LARGE_SIZE + 1024 * 256;
size_t datasize = LARGE_SIZE;
char *buff, *filedata, *filedata2;
- unsigned i;
assert((buff = malloc(buffsize)) != NULL);
assert((filedata = malloc(datasize)) != NULL);
/* NOTE: PPMd cannot handle random data correctly.*/
memset(filedata, 'a', datasize);
} else {
- for (i = 0; i < datasize; i++)
- filedata[i] = (char)rand();
+ fill_with_pseudorandom_data(filedata, datasize);
}
assertEqualInt(datasize, archive_write_data(a, filedata, datasize));
/* Misc variables */
unsigned long crc;
- struct tm *tm = localtime(&now);
-
+ struct tm *tm;
+#if defined(HAVE_LOCALTIME_R) || defined(HAVE_LOCALTIME_S)
+ struct tm tmbuf;
+#endif
/* p is the pointer to walk over the central directory,
* q walks over the local headers, the data and the data descriptors. */
const char *p, *q, *local_header, *extra_start;
+#if defined(HAVE_LOCALTIME_S)
+ tm = localtime_s(&tmbuf, &now) ? NULL : &tmbuf;
+#elif defined(HAVE_LOCALTIME_R)
+ tm = localtime_r(&now, &tmbuf);
+#else
+ tm = localtime(&now);
+#endif
+
/* Remember the end of the archive in memory. */
buffend = buff + used;
--- /dev/null
+/*-
+ * Copyright (c) 2021 Jia Cheong Tan
+ * 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$");
+
+/* File data */
+static const char file_name[] = "file";
+static const char file_data1[] = {'a', 'b', 'c', 'd', 'e'};
+static const char file_data2[] = {'f', 'g', 'h', 'i', 'j'};
+static const int file_perm = 00644;
+static const short file_uid = 10;
+static const short file_gid = 20;
+
+/* Folder data */
+static const char folder_name[] = "folder/";
+static const int folder_perm = 00755;
+static const short folder_uid = 30;
+static const short folder_gid = 40;
+
+#define ZIP_ENTRY_FLAG_LENGTH_AT_END (1 << 3)
+
+/* Quick and dirty: Read 2-byte and 4-byte integers from Zip file. */
+static unsigned i2(const char *p) { return ((p[0] & 0xff) | ((p[1] & 0xff) << 8)); }
+static unsigned i4(const char *p) { return (i2(p) | (i2(p + 2) << 16)); }
+
+static unsigned long
+bitcrc32(unsigned long c, const void *_p, size_t s)
+{
+ /* This is a drop-in replacement for crc32() from zlib.
+ * Libarchive should be able to correctly generate
+ * uncompressed zip archives (including correct CRCs) even
+ * when zlib is unavailable, and this function helps us verify
+ * that. Yes, this is very, very slow and unsuitable for
+ * production use, but it's correct, compact, and works well
+ * enough for this particular usage. Libarchive internally
+ * uses a much more efficient implementation. */
+ const unsigned char *p = _p;
+ int bitctr;
+
+ if (p == NULL)
+ return (0);
+
+ for (; s > 0; --s)
+ {
+ c ^= *p++;
+ for (bitctr = 8; bitctr > 0; --bitctr)
+ {
+ if (c & 1)
+ c = (c >> 1);
+ else
+ c = (c >> 1) ^ 0xedb88320;
+ c ^= 0x80000000;
+ }
+ }
+ return (c);
+}
+
+static void write_archive(struct archive *a)
+{
+ struct archive_entry *entry = archive_entry_new();
+ assert(entry != NULL);
+
+ /* Does not set size for file entry */
+ archive_entry_set_pathname(entry, file_name);
+ archive_entry_set_mode(entry, S_IFREG | 0644);
+ archive_entry_set_uid(entry, file_uid);
+ archive_entry_set_gid(entry, file_gid);
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, entry));
+ assertEqualIntA(a, sizeof(file_data1), archive_write_data(a, file_data1, sizeof(file_data1)));
+ assertEqualIntA(a, sizeof(file_data2), archive_write_data(a, file_data2, sizeof(file_data2)));
+ archive_entry_free(entry);
+
+ /* Folder */
+ assert((entry = archive_entry_new()) != NULL);
+ archive_entry_set_pathname(entry, folder_name);
+ archive_entry_set_mode(entry, S_IFDIR | folder_perm);
+ archive_entry_set_size(entry, 0);
+ archive_entry_set_uid(entry, folder_uid);
+ archive_entry_set_gid(entry, folder_gid);
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, entry));
+ archive_entry_free(entry);
+}
+
+static void verify_contents(const char *zip_buff, size_t size)
+{
+ unsigned long crc = bitcrc32(0, file_data1, sizeof(file_data1));
+ crc = bitcrc32(crc, file_data2, sizeof(file_data2));
+
+ const char *zip_end = zip_buff + size;
+ /* Since there are no comments, the end of central directory
+ * is 22 bytes from the end of content */
+ const char *end_of_central_dir = zip_end - 22;
+ /* Check for end of central directory signature */
+ assertEqualMem(end_of_central_dir, "PK\x5\x6", 4);
+ /* Check for number of disk */
+ assertEqualInt(i2(end_of_central_dir + 4), 0);
+ /* Check for disk where central directory starts */
+ assertEqualInt(i2(end_of_central_dir + 6), 0);
+ /* Check for number of central directory records on disk */
+ assertEqualInt(i2(end_of_central_dir + 8), 2);
+ /* Check for total number of central directory records */
+ assertEqualInt(i2(end_of_central_dir + 10), 2);
+ /* Check for size of central directory and offset
+ * The size + offset must equal the end of the central directory */
+ assertEqualInt(i4(end_of_central_dir + 12) + i4(end_of_central_dir + 16), end_of_central_dir - zip_buff);
+ /* Check for empty comment length */
+ assertEqualInt(i2(end_of_central_dir + 20), 0);
+
+ /* Get address of central directory */
+ const char *central_directory = zip_buff + i4(end_of_central_dir + 16);
+
+ /* Check for entry in central directory signature */
+ assertEqualMem(central_directory, "PK\x1\x2", 4);
+ /* Check for version used to write entry */
+ assertEqualInt(i2(central_directory + 4), 3 * 256 + 10);
+ /* Check for version needed to extract entry */
+ assertEqualInt(i2(central_directory + 6), 10);
+ /* Check flags */
+ assertEqualInt(i2(central_directory + 8), ZIP_ENTRY_FLAG_LENGTH_AT_END);
+ /* Check compression method */
+ assertEqualInt(i2(central_directory + 10), 0);
+ /* Check crc value */
+ assertEqualInt(i4(central_directory + 16), crc);
+ /* Check compressed size*/
+ assertEqualInt(i4(central_directory + 20), sizeof(file_data1) + sizeof(file_data2));
+ /* Check uncompressed size */
+ assertEqualInt(i4(central_directory + 24), sizeof(file_data1) + sizeof(file_data2));
+ /* Check file name length */
+ assertEqualInt(i2(central_directory + 28), strlen(file_name));
+ /* Check extra field length */
+ assertEqualInt(i2(central_directory + 30), 20);
+ /* Check file comment length */
+ assertEqualInt(i2(central_directory + 32), 0);
+ /* Check disk number where file starts */
+ assertEqualInt(i2(central_directory + 34), 0);
+ /* Check internal file attrs */
+ assertEqualInt(i2(central_directory + 36), 0);
+ /* Check external file attrs */
+ assertEqualInt(i4(central_directory + 38) >> 16 & 01777, file_perm);
+ /* Check offset of local header */
+ assertEqualInt(i4(central_directory + 42), 0);
+ /* Check for file name contents */
+ assertEqualMem(central_directory + 46, file_name, strlen(file_name));
+
+ /* Get address of local file entry */
+ const char *local_file_header = zip_buff;
+
+ /* Check local file header signature */
+ assertEqualMem(local_file_header, "PK\x3\x4", 4);
+ /* Check version needed to extract */
+ assertEqualInt(i2(local_file_header + 4), 10);
+ /* Check flags */
+ assertEqualInt(i2(local_file_header + 6), 8);
+ /* Check compression method */
+ assertEqualInt(i2(local_file_header + 8), 0);
+ /* Check crc */
+ assertEqualInt(i4(local_file_header + 14), 0);
+ /* Check compressed size
+ * 0 because it was unknown at time of writing */
+ assertEqualInt(i4(local_file_header + 18), 0);
+ /* Check uncompressed size
+ * 0 because it was unknown at time of writing */
+ assertEqualInt(i4(local_file_header + 22), 0);
+ /* Check pathname length */
+ assertEqualInt(i2(local_file_header + 26), strlen(file_name));
+ /* Check extra field length */
+ assertEqualInt(i2(local_file_header + 28), 20);
+ /* Check path name match */
+ assertEqualMem(local_file_header + 30, file_name, strlen(file_name));
+
+ /* Start of data */
+ const char *data = local_file_header + i2(local_file_header + 28) + strlen(file_name) + 30;
+ /* Check for file data match */
+ assertEqualMem(data, file_data1, sizeof(file_data1));
+ assertEqualMem(data + sizeof(file_data1), file_data2, sizeof(file_data2));
+
+ /* Start of data descriptor */
+ const char *data_descriptor = data + sizeof(file_data1) + sizeof(file_data2);
+ /* Check data descriptor signature */
+ assertEqualMem(data_descriptor, "PK\x7\x8", 4);
+ /* Check crc value */
+ assertEqualInt(i4(data_descriptor + 4), crc);
+ /* Check compressed size */
+ assertEqualInt(i4(data_descriptor + 8), sizeof(file_data1) + sizeof(file_data2));
+ /* Chcek uncompresed size */
+ assertEqualInt(i4(data_descriptor + 12), sizeof(file_data1) + sizeof(file_data2));
+
+ /* Get folder entry in central directory */
+ const char *central_directory_folder_entry = central_directory + 46 + 20 + strlen(file_name);
+
+ /* Get start of folder entry */
+ const char *local_folder_header = data_descriptor + 16;
+
+ /* Check for entry in central directory signature */
+ assertEqualMem(central_directory_folder_entry, "PK\x1\x2", 4);
+ /* Check version made by */
+ assertEqualInt(i2(central_directory_folder_entry + 4), 3 * 256 + 20);
+ /* Check version needed to extract */
+ assertEqualInt(i2(central_directory_folder_entry + 6), 20);
+ /* Check flags */
+ assertEqualInt(i2(central_directory_folder_entry + 8), 0);
+ /* Check compression method */
+ assertEqualInt(i2(central_directory_folder_entry + 10), 0);
+ /* Check crc */
+ assertEqualInt(i2(central_directory_folder_entry + 16), 0);
+ /* Check compressed size */
+ assertEqualInt(i4(central_directory_folder_entry + 20), 0);
+ /* Check uncompressed size */
+ assertEqualInt(i4(central_directory_folder_entry + 24), 0);
+ /* Check path name length */
+ assertEqualInt(i2(central_directory_folder_entry + 28), strlen(folder_name));
+ /* Check extra field length */
+ assertEqualInt(i2(central_directory_folder_entry + 30), 20);
+ /* Check file comment length */
+ assertEqualInt(i2(central_directory_folder_entry + 32), 0);
+ /* Check disk number start */
+ assertEqualInt(i2(central_directory_folder_entry + 34), 0);
+ /* Check internal file attrs */
+ assertEqualInt(i2(central_directory_folder_entry + 36), 0);
+ /* Check external file attrs */
+ assertEqualInt(i4(central_directory_folder_entry + 38) >> 16 & 01777, folder_perm);
+ /* Check offset of local header*/
+ assertEqualInt(i4(central_directory_folder_entry + 42), local_folder_header - zip_buff);
+ /* Check path name */
+ assertEqualMem(central_directory_folder_entry + 46, folder_name, strlen(folder_name));
+
+ /* Check local header */
+ assertEqualMem(local_folder_header, "PK\x3\x4", 4);
+ /* Check version to extract */
+ assertEqualInt(i2(local_folder_header + 4), 20);
+ /* Check flags */
+ assertEqualInt(i2(local_folder_header + 6), 0);
+ /* Check compression method */
+ assertEqualInt(i2(local_folder_header + 8), 0);
+ /* Check crc */
+ assertEqualInt(i4(local_folder_header + 14), 0);
+ /* Check compressed size */
+ assertEqualInt(i2(local_folder_header + 18), 0);
+ /* Check uncompressed size */
+ assertEqualInt(i4(local_folder_header + 22), 0);
+ /* Check path name length */
+ assertEqualInt(i2(local_folder_header + 26), strlen(folder_name));
+ /* Check extra field length */
+ assertEqualInt(i2(local_folder_header + 28), 20);
+ /* Check path name */
+ assertEqualMem(local_folder_header + 30, folder_name, strlen(folder_name));
+
+ const char *post_local_folder = local_folder_header + 30 + strlen(folder_name) + 20;
+ assertEqualMem(post_local_folder, central_directory, 4);
+}
+
+DEFINE_TEST(test_write_format_zip_size_unset)
+{
+ struct archive *a;
+ char zip_buffer[100000];
+ size_t size;
+
+ /* Use compression=store to disable compression. */
+ assert((a = archive_write_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_zip(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_set_options(a, "zip:compression=store"));
+ /* Disable zip64 explicitly since it is automatically enabled if no size is set */
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_set_options(a, "zip:zip64="));
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_none(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_set_bytes_per_block(a, 1));
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_set_bytes_in_last_block(a, 1));
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, zip_buffer, sizeof(zip_buffer), &size));
+
+ write_archive(a);
+
+ /* Close the archive . */
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+ dumpfile("constructed_size_unset.zip", zip_buffer, size);
+
+ verify_contents(zip_buffer, size);
+
+ /* Use compression-level=0 to disable compression. */
+ assert((a = archive_write_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_zip(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_set_options(a, "zip:compression-level=0"));
+ /* Disable zip64 explicitly since it is automatically enabled if no size is set */
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_set_options(a, "zip:zip64="));
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_none(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_set_bytes_per_block(a, 1));
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_set_bytes_in_last_block(a, 1));
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, zip_buffer, sizeof(zip_buffer), &size));
+
+ write_archive(a);
+
+ /* Close the archive . */
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+ dumpfile("constructed_size_unset.zip", zip_buffer, size);
+
+ verify_contents(zip_buffer, size);
+}
struct archive *a;
struct archive_entry *ae;
time_t t = 1234567890;
- struct tm *tm = localtime(&t);
+ struct tm *tm;
+#if defined(HAVE_LOCALTIME_R) || defined(HAVE_LOCALTIME_S)
+ struct tm tmbuf;
+#endif
size_t used, buffsize = 1000000;
unsigned long crc;
int file_perm = 00644;
zip_compression = 0;
#endif
+#if defined(HAVE_LOCALTIME_S)
+ tm = localtime_s(&tmbuf, &t) ? NULL : &tmbuf;
+#elif defined(HAVE_LOCALTIME_R)
+ tm = localtime_r(&t, &tmbuf);
+#else
+ tm = localtime(&t);
+#endif
buff = malloc(buffsize);
/* Create a new archive in memory. */
struct archive *a;
struct archive_entry *ae;
time_t t = 1234567890;
- struct tm *tm = localtime(&t);
+ struct tm *tm;
+#if defined(HAVE_LOCALTIME_R) || defined(HAVE_LOCALTIME_S)
+ struct tm tmbuf;
+#endif
size_t used, buffsize = 1000000;
unsigned long crc;
int file_perm = 00644;
zip_compression = 0;
#endif
+#if defined(HAVE_LOCALTIME_S)
+ tm = localtime_s(&tmbuf, &t) ? NULL : &tmbuf;
+#elif defined(HAVE_LOCALTIME_R)
+ tm = localtime_r(&t, &tmbuf);
+#else
+ tm = localtime(&t);
+#endif
buff = malloc(buffsize);
/* Create a new archive in memory. */
for (i = 0; test_sizes[i] > 0; i++) {
assertEqualIntA(a, ARCHIVE_OK,
archive_read_next_header(a, &ae));
- sprintf(namebuff, "file_%d", i);
+ snprintf(namebuff, sizeof(namebuff), "file_%d", i);
assertEqualString(namebuff, archive_entry_pathname(ae));
assertEqualInt(test_sizes[i], archive_entry_size(ae));
}
*/
for (i = 0; test_sizes[i] != 0; i++) {
assert((ae = archive_entry_new()) != NULL);
- sprintf(namebuff, "file_%d", i);
+ snprintf(namebuff, sizeof(namebuff), "file_%d", i);
archive_entry_copy_pathname(ae, namebuff);
archive_entry_set_mode(ae, S_IFREG | 0755);
filesize = test_sizes[i];
#if GCC_VERSION >= 409
__attribute__((__no_sanitize_undefined__))
+#else
+# if defined(__clang__)
+__attribute__((no_sanitize("undefined")))
+# endif
#endif
#if defined(_MSC_VER)
static __inline U32 A32(const void * x)
int input, output, save_errno, i, need_restart;
char ch, *p, *end;
struct termios term, oterm;
+#ifdef HAVE_SIGACTION
struct sigaction sa, savealrm, saveint, savehup, savequit, saveterm;
struct sigaction savetstp, savettin, savettou, savepipe;
+#endif
/* I suppose we could alloc on demand in this case (XXX). */
if (bufsiz == 0) {
oterm.c_lflag |= ECHO;
}
+#ifdef HAVE_SIGACTION
/*
* Catch signals that would otherwise cause the user to end
* up with echo turned off in the shell. Don't worry about
(void)sigaction(SIGTSTP, &sa, &savetstp);
(void)sigaction(SIGTTIN, &sa, &savettin);
(void)sigaction(SIGTTOU, &sa, &savettou);
+#endif
if (!(flags & RPP_STDIN)) {
int r = write(output, prompt, strlen(prompt));
continue;
signo[SIGTTOU] = sigttou;
}
+#ifdef HAVE_SIGACTION
(void)sigaction(SIGALRM, &savealrm, NULL);
(void)sigaction(SIGHUP, &savehup, NULL);
(void)sigaction(SIGINT, &saveint, NULL);
(void)sigaction(SIGTSTP, &savetstp, NULL);
(void)sigaction(SIGTTIN, &savettin, NULL);
(void)sigaction(SIGTTOU, &savettou, NULL);
+#endif
if (input != STDIN_FILENO)
(void)close(input);
.\"
.\" $FreeBSD$
.\"
-.Dd January 31, 2020
+.Dd December 1, 2022
.Dt TAR 1
.Os
.Sh NAME
and the default behavior if
.Nm
is run as non-root in x mode.
+.It Fl Fl no-read-sparse
+(c, r, u modes only)
+Do not read sparse file information from disk.
+This is the reverse of
+.Fl Fl read-sparse .
.It Fl Fl no-safe-writes
(x mode only)
Do not create temporary files and use
.It Cm zstd:compression-level
A decimal integer specifying the zstd compression level. Supported values depend
on the library version, common values are from 1 to 22.
+.It Cm zstd:threads
+Specify the number of worker threads to use.
+Setting threads to a special value 0 makes
+.Xr zstd 1
+use as many threads as there are CPU cores on the system.
+.It Cm zstd:frame-per-file
+Start a new compression frame at the beginning of each file in the
+archive.
+.It Cm zstd:min-frame-size Ns = Ns Ar N
+In combination with
+.Cm zstd:frame-per-file ,
+do not start a new compression frame unless the current frame is at least
+.Ar N
+bytes.
+.It Cm zstd:max-frame-size Ns = Ns Ar N
+Start a new compression frame as soon as the current frame exceeds
+.Ar N
+bytes.
.It Cm lzop:compression-level
A decimal integer from 1 to 9 specifying the lzop compression level.
.It Cm xz:compression-level
A decimal integer from 0 to 9 specifying the xz compression level.
+.It Cm xz:threads
+Specify the number of worker threads to use.
+Setting threads to a special value 0 makes
+.Xr xz 1
+use as many threads as there are CPU cores on the system.
.It Cm mtree: Ns Ar keyword
The mtree writer module allows you to specify which mtree keywords
will be included in the output.
there can be multiple entries with the same name and, by convention,
later entries overwrite earlier entries.
This option is provided as a performance optimization.
+.It Fl Fl read-sparse
+(c, r, u modes only)
+Read sparse file information from disk.
+This is the reverse of
+.Fl Fl no-read-sparse
+and the default behavior.
.It Fl S
(x mode only)
Extract files as sparse files.
.Sh ENVIRONMENT
The following environment variables affect the execution of
.Nm :
-.Bl -tag -width ".Ev BLOCKSIZE"
+.Bl -tag -width indent
.It Ev TAR_READER_OPTIONS
The default options for format readers and compression readers.
The
#include "bsdtar.h"
#include "err.h"
-/*
- * Per POSIX.1-1988, tar defaults to reading/writing archives to/from
- * the default tape device for the system. Pick something reasonable here.
- */
-#ifdef __linux
-#define _PATH_DEFTAPE "/dev/st0"
+#if ARCHIVE_VERSION_NUMBER < 4000000 && !defined(_PATH_DEFTAPE)
+// Libarchive 4.0 and later will NOT define _PATH_DEFTAPE
+// but will honor it if it's set in the build.
+// Until then, we'll continue to set it by default on certain platforms:
+#if defined(__linux)
+#define _PATH_DEFTAPE "/dev/st0"
+#elif defined(_WIN32) && !defined(__CYGWIN__)
+#define _PATH_DEFTAPE "\\\\.\\tape0"
+#elif !defined(__APPLE__)
+#define _PATH_DEFTAPE "/dev/tape"
#endif
-#if defined(_WIN32) && !defined(__CYGWIN__)
-#define _PATH_DEFTAPE "\\\\.\\tape0"
-#endif
-#if defined(__APPLE__)
-#undef _PATH_DEFTAPE
-#define _PATH_DEFTAPE "-" /* Mac OS has no tape support, default to stdio. */
#endif
-#ifndef _PATH_DEFTAPE
-#define _PATH_DEFTAPE "/dev/tape"
-#endif
+#define _PATH_STDIO "-"
#ifdef __MINGW32__
int _CRT_glob = 0; /* Disable broken CRT globbing. */
/* Default: open tape drive. */
bsdtar->filename = getenv("TAPE");
- if (bsdtar->filename == NULL)
- bsdtar->filename = _PATH_DEFTAPE;
+#if defined(_PATH_DEFTAPE)
+ if (bsdtar->filename == NULL) {
+#if defined(_WIN32) && !defined(__CYGWIN__)
+ int tapeExists = !_access(_PATH_DEFTAPE, 0);
+#else
+ int tapeExists = !access(_PATH_DEFTAPE, F_OK);
+#endif
+ if (tapeExists) {
+ bsdtar->filename = _PATH_DEFTAPE;
+ }
+ }
+#endif
+ if (bsdtar->filename == NULL) {
+ bsdtar->filename = _PATH_STDIO;
+ }
/* Default block size settings. */
bsdtar->bytes_per_block = DEFAULT_BYTES_PER_BLOCK;
bsdtar->extract_flags &= ~ARCHIVE_EXTRACT_MAC_METADATA;
bsdtar->flags |= OPTFLAG_NO_MAC_METADATA;
break;
+ case OPTION_NO_READ_SPARSE:
+ bsdtar->readdisk_flags |= ARCHIVE_READDISK_NO_SPARSE;
+ bsdtar->flags |= OPTFLAG_NO_READ_SPARSE;
+ break;
case OPTION_NO_SAFE_WRITES:
bsdtar->extract_flags &= ~ARCHIVE_EXTRACT_SAFE_WRITES;
break;
case 'r': /* SUSv2 */
set_mode(bsdtar, opt);
break;
+ case OPTION_READ_SPARSE:
+ bsdtar->readdisk_flags &= ~ARCHIVE_READDISK_NO_SPARSE;
+ bsdtar->flags |= OPTFLAG_READ_SPARSE;
+ break;
case 'S': /* NetBSD pax-as-tar */
bsdtar->extract_flags |= ARCHIVE_EXTRACT_SPARSE;
break;
"Must specify one of -c, -r, -t, -u, -x");
/* Check boolean options only permitted in certain modes. */
- if (bsdtar->flags & OPTFLAG_AUTO_COMPRESS)
- only_mode(bsdtar, "-a", "c");
+ if (bsdtar->flags & OPTFLAG_AUTO_COMPRESS) {
+ only_mode(bsdtar, "-a", "cx");
+ if (bsdtar->mode == 'x') {
+ bsdtar->flags &= ~OPTFLAG_AUTO_COMPRESS;
+ lafe_warnc(0,
+ "Ignoring option -a in mode -x");
+ }
+ }
if (bsdtar->readdisk_flags & ARCHIVE_READDISK_NO_TRAVERSE_MOUNTS)
only_mode(bsdtar, "--one-file-system", "cru");
if (bsdtar->flags & OPTFLAG_FAST_READ)
#define OPTFLAG_FFLAGS (0x00100000) /* --fflags */
#define OPTFLAG_NO_MAC_METADATA (0x00200000) /* --no-mac-metadata */
#define OPTFLAG_MAC_METADATA (0x00400000) /* --mac-metadata */
+#define OPTFLAG_NO_READ_SPARSE (0x00800000) /* --no-read-sparse */
+#define OPTFLAG_READ_SPARSE (0x01000000) /* --read-sparse */
/* Fake short equivalents for long options that otherwise lack them. */
enum {
OPTION_NO_ACLS,
OPTION_NO_FFLAGS,
OPTION_NO_MAC_METADATA,
+ OPTION_NO_READ_SPARSE,
OPTION_NO_SAFE_WRITES,
OPTION_NO_SAME_OWNER,
OPTION_NO_SAME_PERMISSIONS,
OPTION_OPTIONS,
OPTION_PASSPHRASE,
OPTION_POSIX,
+ OPTION_READ_SPARSE,
OPTION_SAFE_WRITES,
OPTION_SAME_OWNER,
OPTION_STRIP_COMPONENTS,
{ "no-acls", 0, OPTION_NO_ACLS },
{ "no-fflags", 0, OPTION_NO_FFLAGS },
{ "no-mac-metadata", 0, OPTION_NO_MAC_METADATA },
+ { "no-read-sparse", 0, OPTION_NO_READ_SPARSE },
{ "no-recursion", 0, 'n' },
{ "no-safe-writes", 0, OPTION_NO_SAFE_WRITES },
{ "no-same-owner", 0, OPTION_NO_SAME_OWNER },
{ "posix", 0, OPTION_POSIX },
{ "preserve-permissions", 0, 'p' },
{ "read-full-blocks", 0, 'B' },
+ { "read-sparse", 0, OPTION_READ_SPARSE },
{ "safe-writes", 0, OPTION_SAFE_WRITES },
{ "same-owner", 0, OPTION_SAME_OWNER },
{ "same-permissions", 0, 'p' },
{ ".7z", "7zip" },
{ ".ar", "arbsd" },
{ ".cpio", "cpio" },
- { ".iso", "iso9960" },
+ { ".iso", "iso9660" },
{ ".mtree", "mtree" },
{ ".shar", "shar" },
{ ".tar", "paxr" },
r = archive_read_extract2(a, entry, writer);
if (r != ARCHIVE_OK) {
if (!bsdtar->verbose)
- safe_fprintf(stderr, "%s",
- archive_entry_pathname(entry));
- safe_fprintf(stderr, ": %s",
- archive_error_string(a));
+ safe_fprintf(stderr, "%s", archive_entry_pathname(entry));
+ fprintf(stderr, ": %s: ", archive_error_string(a));
+ fprintf(stderr, "%s", strerror(errno));
if (!bsdtar->verbose)
fprintf(stderr, "\n");
bsdtar->return_value = 1;
while ((rule = subst->first_rule) != NULL) {
subst->first_rule = rule->next;
free(rule->result);
+ regfree(&rule->re);
free(rule);
}
free(subst);
test_option_fflags.c
test_option_gid_gname.c
test_option_grzip.c
+ test_option_ignore_zeros.c
test_option_j.c
test_option_k.c
test_option_keep_newer_files.c
DEFINE_TEST(test_option_gid_gname)
DEFINE_TEST(test_option_grzip)
DEFINE_TEST(test_option_H_upper)
+DEFINE_TEST(test_option_ignore_zeros_mode_t)
+DEFINE_TEST(test_option_ignore_zeros_mode_x)
+DEFINE_TEST(test_option_ignore_zeros_mode_c)
+DEFINE_TEST(test_option_ignore_zeros_mode_r)
+DEFINE_TEST(test_option_ignore_zeros_mode_u)
DEFINE_TEST(test_option_j)
DEFINE_TEST(test_option_k)
DEFINE_TEST(test_option_keep_newer_files)
failure("Internal sanity check failed: i = %d", i);
assert(filenames[i] != NULL);
- sprintf(buff, "f/%s", filenames[i]);
+ snprintf(buff, sizeof(buff), "f/%s", filenames[i]);
assertMakeFile(buff, 0777, buff);
/* Create a link named "l/abcdef..." to the above. */
- sprintf(buff2, "l/%s", filenames[i]);
+ snprintf(buff2, sizeof(buff2), "l/%s", filenames[i]);
assertMakeHardlink(buff2, buff);
/* Create a link named "m/abcdef..." to the above. */
- sprintf(buff2, "m/%s", filenames[i]);
+ snprintf(buff2, sizeof(buff2), "m/%s", filenames[i]);
assertMakeHardlink(buff2, buff);
if (canSymlink()) {
/* Create a symlink named "s/abcdef..." to the above. */
- sprintf(buff, "s/%s", filenames[i]);
- sprintf(buff2, "../f/%s", filenames[i]);
+ snprintf(buff, sizeof(buff), "s/%s", filenames[i]);
+ snprintf(buff2, sizeof(buff2), "../f/%s", filenames[i]);
failure("buff=\"%s\" buff2=\"%s\"", buff, buff2);
assertMakeSymlink(buff, buff2, 0);
}
/* Generate the names we know should be there and verify them. */
for (i = 1; i < LOOP_MAX; i++) {
/* Verify a file named "f/abcdef..." */
- sprintf(name1, "f/%s", filenames[i]);
+ snprintf(name1, sizeof(name1), "f/%s", filenames[i]);
if (i <= limit) {
assertFileExists(name1);
assertFileContents(name1, (int)strlen(name1), name1);
}
- sprintf(name2, "l/%s", filenames[i]);
+ snprintf(name2, sizeof(name2), "l/%s", filenames[i]);
if (i + 2 <= limit) {
/* Verify hardlink "l/abcdef..." */
assertIsHardlink(name1, name2);
if (canSymlink()) {
/* Verify symlink "s/abcdef..." */
- sprintf(name1, "s/%s", filenames[i]);
- sprintf(name2, "../f/%s", filenames[i]);
+ snprintf(name1, sizeof(name1), "s/%s", filenames[i]);
+ snprintf(name2, sizeof(name2), "../f/%s", filenames[i]);
if (strlen(name2) <= limit)
assertIsSymlink(name1, name2, 0);
}
/* Verify dir "d/abcdef...". */
- sprintf(name1, "d/%s", filenames[i]);
+ snprintf(name1, sizeof(name1), "d/%s", filenames[i]);
if (i + 1 <= limit) { /* +1 for trailing slash */
if (assertIsDir(name1, -1)) {
/* TODO: opendir/readdir this
DEFINE_TEST(test_option_b)
{
char *testprog_ustar;
+ size_t testprog_ustar_len;
assertMakeFile("file1", 0644, "file1");
if (systemf("cat file1 > test_cat.out 2> test_cat.err") != 0) {
skipping("This test requires a `cat` program");
return;
}
- testprog_ustar = malloc(strlen(testprog) + sizeof(USTAR_OPT) + 1);
- strcpy(testprog_ustar, testprog);
- strcat(testprog_ustar, USTAR_OPT);
+ testprog_ustar_len = strlen(testprog) + sizeof(USTAR_OPT) + 1;
+ testprog_ustar = malloc(testprog_ustar_len);
+ strncpy(testprog_ustar, testprog, testprog_ustar_len);
+ strncat(testprog_ustar, USTAR_OPT, testprog_ustar_len);
/*
* Bsdtar does not pad if the output is going directly to a disk file.
--- /dev/null
+/*-
+ * Copyright (c) 2021 Ryan Libby
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer
+ * in this position and unchanged.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#include "test.h"
+__FBSDID("$FreeBSD$");
+
+static int
+make_files(void)
+{
+ int ret;
+
+ assertMakeDir("in", 0755);
+ assertMakeDir("out", 0755);
+ assertMakeFile("in/a", 0644, "a");
+ assertMakeFile("in/b", 0644, "b");
+ assertMakeFile("in/c", 0644, "c");
+ assertEqualInt(0, systemf("%s cf a.tar -C in a", testprog));
+ assertEqualInt(0, systemf("%s cf b.tar -C in b", testprog));
+ /* An archive formed with cat, and readable with --ignore-zeros. */
+ ret = systemf("cat a.tar b.tar > ab-cat.tar");
+ if (ret != 0) {
+ skipping("This test requires a `cat` program");
+ return (ret);
+ }
+
+ return (0);
+}
+
+DEFINE_TEST(test_option_ignore_zeros_mode_t)
+{
+ if (make_files())
+ return;
+
+ /* Generate expected t-mode output. */
+ assertEqualInt(0, systemf(
+ "%s cf ab-norm.tar -C in a b > norm-c.out 2> norm-c.err",
+ testprog));
+ assertEmptyFile("norm-c.err");
+ assertEmptyFile("norm-c.out");
+ assertEqualInt(0, systemf(
+ "%s tf ab-norm.tar > norm-t.out 2> norm-t.err",
+ testprog));
+ assertEmptyFile("norm-t.err");
+
+ /* Test output. */
+ assertEqualInt(0, systemf(
+ "%s tf ab-cat.tar --ignore-zeros > test.out 2> test.err",
+ testprog));
+ assertEmptyFile("test.err");
+
+ assertEqualFile("test.out", "norm-t.out");
+}
+
+DEFINE_TEST(test_option_ignore_zeros_mode_x)
+{
+ if (make_files())
+ return;
+
+ assertEqualInt(0, systemf(
+ "%s xf ab-cat.tar --ignore-zeros -C out > test.out 2> test.err",
+ testprog));
+ assertEmptyFile("test.err");
+ assertEmptyFile("test.out");
+
+ assertEqualFile("out/a", "in/a");
+ assertEqualFile("out/b", "in/b");
+}
+
+DEFINE_TEST(test_option_ignore_zeros_mode_c)
+{
+ if (make_files())
+ return;
+
+ assertEqualInt(0, systemf(
+ "%s cf abc.tar --ignore-zeros @ab-cat.tar -C in c "
+ "> test-c.out 2> test-c.err",
+ testprog));
+ assertEmptyFile("test-c.err");
+ assertEmptyFile("test-c.out");
+
+ assertEqualInt(0, systemf(
+ "%s xf abc.tar -C out > test-x.out 2> test-x.err",
+ testprog));
+ assertEmptyFile("test-x.err");
+ assertEmptyFile("test-x.out");
+
+ assertEqualFile("out/a", "in/a");
+ assertEqualFile("out/b", "in/b");
+ assertEqualFile("out/c", "in/c");
+}
+
+static void
+test_option_ignore_zeros_mode_ru(const char *mode)
+{
+ if (make_files())
+ return;
+
+ assertEqualInt(0, systemf(
+ "%s %sf ab-cat.tar --ignore-zeros -C in c "
+ "> test-ru.out 2> test-ru.err",
+ testprog, mode));
+ assertEmptyFile("test-ru.err");
+ assertEmptyFile("test-ru.out");
+
+ assertEqualInt(0, systemf(
+ "%s xf ab-cat.tar --ignore-zeros -C out "
+ "> test-x.out 2> test-x.err",
+ testprog));
+ assertEmptyFile("test-x.err");
+ assertEmptyFile("test-x.out");
+
+ assertEqualFile("out/a", "in/a");
+ assertEqualFile("out/b", "in/b");
+ assertEqualFile("out/c", "in/c");
+}
+
+DEFINE_TEST(test_option_ignore_zeros_mode_r)
+{
+ test_option_ignore_zeros_mode_ru("r");
+}
+
+DEFINE_TEST(test_option_ignore_zeros_mode_u)
+{
+ test_option_ignore_zeros_mode_ru("u");
+}
if (strstr(p, "Unsupported compression") != NULL) {
skipping("This version of bsdtar was compiled "
"without lzma support");
+ free(p);
return;
}
failure("--lzma option is broken");
#include "err.h"
#include "passphrase.h"
-static size_t bsdtar_expand_char(char *, size_t, char);
+static size_t bsdtar_expand_char(char *, size_t, size_t, char);
static const char *strip_components(const char *path, int elements);
#if defined(_WIN32) && !defined(__CYGWIN__)
/* Not printable, format the bytes. */
while (n-- > 0)
i += (unsigned)bsdtar_expand_char(
- outbuff, i, *p++);
+ outbuff, sizeof(outbuff), i, *p++);
}
} else {
/* After any conversion failure, don't bother
* trying to convert the rest. */
- i += (unsigned)bsdtar_expand_char(outbuff, i, *p++);
+ i += (unsigned)bsdtar_expand_char(outbuff, sizeof(outbuff), i, *p++);
try_wc = 0;
}
* Render an arbitrary sequence of bytes into printable ASCII characters.
*/
static size_t
-bsdtar_expand_char(char *buff, size_t offset, char c)
+bsdtar_expand_char(char *buff, size_t buffsize, size_t offset, char c)
{
size_t i = offset;
case '\v': buff[i++] = 'v'; break;
case '\\': buff[i++] = '\\'; break;
default:
- sprintf(buff + i, "%03o", 0xFF & (int)c);
+ snprintf(buff + i, buffsize - i, "%03o", 0xFF & (int)c);
i += 3;
}
}
/* The -C /foo -C bar case; concatenate */
char *old_pending = bsdtar->pending_chdir;
size_t old_len = strlen(old_pending);
- bsdtar->pending_chdir = malloc(old_len + strlen(newdir) + 2);
+ size_t new_len = old_len + strlen(newdir) + 2;
+ bsdtar->pending_chdir = malloc(new_len);
if (old_pending[old_len - 1] == '/')
old_pending[old_len - 1] = '\0';
if (bsdtar->pending_chdir != NULL)
- sprintf(bsdtar->pending_chdir, "%s/%s",
+ snprintf(bsdtar->pending_chdir, new_len, "%s/%s",
old_pending, newdir);
free(old_pending);
}
time_t tim;
static time_t now;
struct tm *ltime;
-#if defined(HAVE_LOCALTIME_R) || defined(HAVE__LOCALTIME64_S)
+#if defined(HAVE_LOCALTIME_R) || defined(HAVE_LOCALTIME_S)
struct tm tmbuf;
#endif
-#if defined(HAVE__LOCALTIME64_S)
- errno_t terr;
- __time64_t tmptime;
-#endif
/*
* We avoid collecting the entire list in memory at once by
/* Use uname if it's present, else uid. */
p = archive_entry_uname(entry);
if ((p == NULL) || (*p == '\0')) {
- sprintf(tmp, "%lu ",
+ snprintf(tmp, sizeof(tmp), "%lu ",
(unsigned long)archive_entry_uid(entry));
p = tmp;
}
fprintf(out, "%s", p);
w = strlen(p);
} else {
- sprintf(tmp, "%lu",
+ snprintf(tmp, sizeof(tmp), "%lu",
(unsigned long)archive_entry_gid(entry));
w = strlen(tmp);
fprintf(out, "%s", tmp);
*/
if (archive_entry_filetype(entry) == AE_IFCHR
|| archive_entry_filetype(entry) == AE_IFBLK) {
- sprintf(tmp, "%lu,%lu",
+ snprintf(tmp, sizeof(tmp), "%lu,%lu",
(unsigned long)archive_entry_rdevmajor(entry),
(unsigned long)archive_entry_rdevminor(entry));
} else {
fmt = bsdtar->day_first ? DAY_FMT " %b %Y" : "%b " DAY_FMT " %Y";
else
fmt = bsdtar->day_first ? DAY_FMT " %b %H:%M" : "%b " DAY_FMT " %H:%M";
-#if defined(HAVE_LOCALTIME_R)
+#if defined(HAVE_LOCALTIME_S)
+ ltime = localtime_s(&tmbuf, &tim) ? NULL : &tmbuf;
+#elif defined(HAVE_LOCALTIME_R)
ltime = localtime_r(&tim, &tmbuf);
-#elif defined(HAVE__LOCALTIME64_S)
- tmptime = tim;
- terr = _localtime64_s(&tmbuf, &tmptime);
- if (terr)
- ltime = NULL;
- else
- ltime = &tmbuf;
#else
ltime = localtime(&tim);
#endif
else
archive_clear_error(a);
}
+ if (bsdtar->flags & OPTFLAG_IGNORE_ZEROS)
+ if (archive_read_set_options(a,
+ "read_concatenated_archives") != ARCHIVE_OK)
+ lafe_errc(1, 0, "%s", archive_error_string(a));
}
void
while (ARCHIVE_OK == (e = archive_read_next_header(ina, &in_entry))) {
if (archive_match_excluded(bsdtar->matching, in_entry))
continue;
+ if(edit_pathname(bsdtar, in_entry))
+ continue;
if ((bsdtar->flags & OPTFLAG_INTERACTIVE) &&
!yes("copy '%s'", archive_entry_pathname(in_entry)))
continue;
#include <dmalloc.h>
#endif
+#include "test_utils.h"
+
#endif /* TEST_COMMON_H */
int r;
memset(bhfi, 0, sizeof(*bhfi));
- h = CreateFile(path, FILE_READ_ATTRIBUTES, 0, NULL,
+ h = CreateFileA(path, FILE_READ_ATTRIBUTES, 0, NULL,
OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, NULL);
if (h == INVALID_HANDLE_VALUE)
return (0);
nextmsg = NULL;
} else {
va_start(ap, fmt);
- vsprintf(msgbuff, fmt, ap);
+ vsnprintf(msgbuff, sizeof(msgbuff), fmt, ap);
va_end(ap);
nextmsg = msgbuff;
}
va_list ap;
va_start(ap, fmt);
- vsprintf(buff, fmt, ap);
+ vsnprintf(buff, sizeof(buff), fmt, ap);
va_end(ap);
/* Use failure() message if set. */
msg = nextmsg;
/* Note: FILE_FLAG_BACKUP_SEMANTICS applies to open
* a directory file. If not, CreateFile() will fail when
* the pathname is a directory. */
- h = CreateFile(pathname, FILE_READ_ATTRIBUTES, 0, NULL,
+ h = CreateFileA(pathname, FILE_READ_ATTRIBUTES, 0, NULL,
OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, NULL);
if (h == INVALID_HANDLE_VALUE) {
failure_start(file, line, "Can't access %s\n", pathname);
failure_finish(NULL);
return (0);
}
- if (0 != chmod(path, mode)) {
+#ifdef HAVE_FCHMOD
+ if (0 != fchmod(fd, mode))
+#else
+ if (0 != chmod(path, mode))
+#endif
+ {
failure_start(file, line, "Could not chmod %s", path);
failure_finish(NULL);
close(fd);
q += 3;
s -= 3;
}
-
+
/* Skip a single trailing a,b,c, or d. */
if (*q == 'a' || *q == 'b' || *q == 'c' || *q == 'd')
++q;
/* Version message should start with name of program, then space. */
assert(s > prog_len + 1);
-
+
failure("Version must start with '%s': ``%s''", base, p);
if (!assertEqualMem(q, base, prog_len)) {
free(p);
static int tested = 0, value = 0;
if (!tested) {
tested = 1;
- if (systemf("lzma %s", redirectArgs) == 0)
+ if (systemf("lzma --help %s", redirectArgs) == 0)
value = 1;
}
return (value);
/* Get extended attribute value from a path */
void *
getXattr(const char *path, const char *name, size_t *sizep)
-{
+{
void *value = NULL;
#if ARCHIVE_XATTR_SUPPORT
ssize_t size;
int r;
va_start(ap, fmt);
- vsprintf(buff, fmt, ap);
+ vsnprintf(buff, sizeof(buff), fmt, ap);
if (verbosity > VERBOSITY_FULL)
logprintf("Cmd: %s\n", buff);
r = system(buff);
int r;
va_start(ap, fmt);
- vsprintf(filename, fmt, ap);
+ vsnprintf(filename, sizeof(filename), fmt, ap);
va_end(ap);
f = fopen(filename, "rb");
char buff[1024];
FILE *in, *out;
- sprintf(buff, "%s/%s.uu", refdir, name);
+ snprintf(buff, sizeof(buff), "%s/%s.uu", refdir, name);
in = fopen(buff, "r");
failure("Couldn't open reference file %s", buff);
assert(in != NULL);
while (bytes > 0) {
int n = 0;
/* Write out 1-3 bytes from that. */
- if (bytes > 0) {
- assert(VALID_UUDECODE(p[0]));
- assert(VALID_UUDECODE(p[1]));
- n = UUDECODE(*p++) << 18;
- n |= UUDECODE(*p++) << 12;
- fputc(n >> 16, out);
- --bytes;
- }
+ assert(VALID_UUDECODE(p[0]));
+ assert(VALID_UUDECODE(p[1]));
+ n = UUDECODE(*p++) << 18;
+ n |= UUDECODE(*p++) << 12;
+ fputc(n >> 16, out);
+ --bytes;
if (bytes > 0) {
assert(VALID_UUDECODE(p[0]));
n |= UUDECODE(*p++) << 6;
FILE *in, *out;
size_t rbytes;
- sprintf(buff, "%s/%s", refdir, name);
+ snprintf(buff, sizeof(buff), "%s/%s", refdir, name);
in = fopen(buff, "rb");
failure("Couldn't open reference file %s", buff);
assert(in != NULL);
* DEFINE_TEST(test_function)
* for each test.
*/
+struct test_list_t
+{
+ void (*func)(void);
+ const char *name;
+ int failures;
+};
/* Use "list.h" to declare all of the test functions. */
#undef DEFINE_TEST
exit(1);
}
/* Create a log file for this test. */
- sprintf(logfilename, "%s.log", tests[i].name);
+ snprintf(logfilename, sizeof(logfilename), "%s.log", tests[i].name);
logfile = fopen(logfilename, "w");
fprintf(logfile, "%s\n\n", tests[i].name);
/* Chdir() to a work dir for this specific test. */
return p;
}
+/* Filter tests against a glob pattern. Returns non-zero if test matches
+ * pattern, zero otherwise. A '^' at the beginning of the pattern negates
+ * the return values (i.e. returns zero for a match, non-zero otherwise.
+ */
+static int
+test_filter(const char *pattern, const char *test)
+{
+ int retval = 0;
+ int negate = 0;
+ const char *p = pattern;
+ const char *t = test;
+
+ if (p[0] == '^')
+ {
+ negate = 1;
+ p++;
+ }
+
+ while (1)
+ {
+ if (p[0] == '\\')
+ p++;
+ else if (p[0] == '*')
+ {
+ while (p[0] == '*')
+ p++;
+ if (p[0] == '\\')
+ p++;
+ if ((t = strchr(t, p[0])) == 0)
+ break;
+ }
+ if (p[0] != t[0])
+ break;
+ if (p[0] == '\0') {
+ retval = 1;
+ break;
+ }
+ p++;
+ t++;
+ }
+
+ return (negate) ? !retval : retval;
+}
+
+static int
+get_test_set(int *test_set, int limit, const char *test)
+{
+ int start, end;
+ int idx = 0;
+
+ if (test == NULL) {
+ /* Default: Run all tests. */
+ for (;idx < limit; idx++)
+ test_set[idx] = idx;
+ return (limit);
+ }
+ if (*test >= '0' && *test <= '9') {
+ const char *vp = test;
+ start = 0;
+ while (*vp >= '0' && *vp <= '9') {
+ start *= 10;
+ start += *vp - '0';
+ ++vp;
+ }
+ if (*vp == '\0') {
+ end = start;
+ } else if (*vp == '-') {
+ ++vp;
+ if (*vp == '\0') {
+ end = limit - 1;
+ } else {
+ end = 0;
+ while (*vp >= '0' && *vp <= '9') {
+ end *= 10;
+ end += *vp - '0';
+ ++vp;
+ }
+ }
+ } else
+ return (-1);
+ if (start < 0 || end >= limit || start > end)
+ return (-1);
+ while (start <= end)
+ test_set[idx++] = start++;
+ } else {
+ for (start = 0; start < limit; ++start) {
+ const char *name = tests[start].name;
+ if (test_filter(test, name))
+ test_set[idx++] = start;
+ }
+ }
+ return ((idx == 0)?-1:idx);
+}
+
int
main(int argc, char **argv)
{
static const int limit = sizeof(tests) / sizeof(tests[0]);
int test_set[sizeof(tests) / sizeof(tests[0])];
int i = 0, j = 0, tests_run = 0, tests_failed = 0, option;
+ int testprogdir_len;
+#ifdef PROGRAM
+ int tmp2_len;
+#endif
time_t now;
+ struct tm *tmptr;
+#if defined(HAVE_LOCALTIME_R) || defined(HAVE_LOCALTIME_S)
+ struct tm tmbuf;
+#endif
char *refdir_alloc = NULL;
const char *progname;
char **saved_argv;
* tree.
*/
progname = p = argv[0];
- if ((testprogdir = (char *)malloc(strlen(progname) + 1)) == NULL)
+ testprogdir_len = strlen(progname) + 1;
+ if ((testprogdir = (char *)malloc(testprogdir_len)) == NULL)
{
fprintf(stderr, "ERROR: Out of memory.");
exit(1);
}
- strcpy(testprogdir, progname);
+ strncpy(testprogdir, progname, testprogdir_len);
while (*p != '\0') {
/* Support \ or / dir separators for Windows compat. */
if (*p == '/' || *p == '\\')
#ifdef PROGRAM
if (testprogfile == NULL)
{
- if ((tmp2 = (char *)malloc(strlen(testprogdir) + 1 +
- strlen(PROGRAM) + 1)) == NULL)
+ tmp2_len = strlen(testprogdir) + 1 + strlen(PROGRAM) + 1;
+ if ((tmp2 = (char *)malloc(tmp2_len)) == NULL)
{
fprintf(stderr, "ERROR: Out of memory.");
exit(1);
}
- strcpy(tmp2, testprogdir);
- strcat(tmp2, "/");
- strcat(tmp2, PROGRAM);
+ strncpy(tmp2, testprogdir, tmp2_len);
+ strncat(tmp2, "/", tmp2_len);
+ strncat(tmp2, PROGRAM, tmp2_len);
testprogfile = tmp2;
}
{
char *testprg;
+ int testprg_len;
#if defined(_WIN32) && !defined(__CYGWIN__)
/* Command.com sometimes rejects '/' separators. */
testprg = strdup(testprogfile);
testprogfile = testprg;
#endif
/* Quote the name that gets put into shell command lines. */
- testprg = malloc(strlen(testprogfile) + 3);
- strcpy(testprg, "\"");
- strcat(testprg, testprogfile);
- strcat(testprg, "\"");
+ testprg_len = strlen(testprogfile) + 3;
+ testprg = malloc(testprg_len);
+ strncpy(testprg, "\"", testprg_len);
+ strncat(testprg, testprogfile, testprg_len);
+ strncat(testprg, "\"", testprg_len);
testprog = testprg;
}
#endif
*/
now = time(NULL);
for (i = 0; ; i++) {
+#if defined(HAVE_LOCALTIME_S)
+ tmptr = localtime_s(&tmbuf, &now) ? NULL : &tmbuf;
+#elif defined(HAVE_LOCALTIME_R)
+ tmptr = localtime_r(&now, &tmbuf);
+#else
+ tmptr = localtime(&now);
+#endif
strftime(tmpdir_timestamp, sizeof(tmpdir_timestamp),
- "%Y-%m-%dT%H.%M.%S",
- localtime(&now));
+ "%Y-%m-%dT%H.%M.%S", tmptr);
if ((strlen(tmp) + 1 + strlen(progname) + 1 +
strlen(tmpdir_timestamp) + 1 + 3) >
(sizeof(tmpdir) / sizeof(char))) {
do {
int test_num;
- test_num = get_test_set(test_set, limit, *argv, tests);
+ test_num = get_test_set(test_set, limit, *argv);
if (test_num < 0) {
printf("*** INVALID Test %s\n", *argv);
free(refdir_alloc);
#include "test_utils.h"
+#include <errno.h>
#include <stdlib.h>
+#include <stdio.h>
#include <string.h>
+#include <assert.h>
-/* Filter tests against a glob pattern. Returns non-zero if test matches
- * pattern, zero otherwise. A '^' at the beginning of the pattern negates
- * the return values (i.e. returns zero for a match, non-zero otherwise.
- */
-static int
-test_filter(const char *pattern, const char *test)
+static inline uint64_t
+xorshift64(uint64_t *state)
{
- int retval = 0;
- int negate = 0;
- const char *p = pattern;
- const char *t = test;
+ uint64_t x = *state;
+ x ^= x << 13;
+ x ^= x >> 7;
+ x ^= x << 17;
+ *state = x;
+ return (x);
+}
- if (p[0] == '^')
- {
- negate = 1;
- p++;
+/*
+ * Fill a buffer with reproducible pseudo-random data using a simple xorshift
+ * algorithm. Originally, most tests filled buffers with a loop that calls
+ * rand() once for each byte. However, this initialization can be extremely
+ * slow when running on emulated platforms such as QEMU where 16M calls to
+ * rand() take a long time: Before the test_write_format_7zip_large_copy test
+ * took ~22 seconds, whereas using a xorshift random number generator (that can
+ * be inlined) reduces it to ~17 seconds on QEMU RISC-V.
+ */
+static void
+fill_with_pseudorandom_data_seed(uint64_t seed, void *buffer, size_t size)
+{
+ uint64_t *aligned_buffer;
+ size_t num_values;
+ size_t i;
+ size_t unaligned_suffix;
+ size_t unaligned_prefix = 0;
+ /*
+ * To avoid unaligned stores we only fill the aligned part of the buffer
+ * with pseudo-random data and fill the unaligned prefix with 0xab and
+ * the suffix with 0xcd.
+ */
+ if ((uintptr_t)buffer % sizeof(uint64_t)) {
+ unaligned_prefix =
+ sizeof(uint64_t) - (uintptr_t)buffer % sizeof(uint64_t);
+ aligned_buffer =
+ (uint64_t *)((char *)buffer + unaligned_prefix);
+ memset(buffer, 0xab, unaligned_prefix);
+ } else {
+ aligned_buffer = (uint64_t *)buffer;
}
-
- while (1)
- {
- if (p[0] == '\\')
- p++;
- else if (p[0] == '*')
- {
- while (p[0] == '*')
- p++;
- if (p[0] == '\\')
- p++;
- if ((t = strchr(t, p[0])) == 0)
- break;
- }
- if (p[0] != t[0])
- break;
- if (p[0] == '\0') {
- retval = 1;
- break;
- }
- p++;
- t++;
+ assert((uintptr_t)aligned_buffer % sizeof(uint64_t) == 0);
+ num_values = (size - unaligned_prefix) / sizeof(uint64_t);
+ unaligned_suffix =
+ size - unaligned_prefix - num_values * sizeof(uint64_t);
+ for (i = 0; i < num_values; i++) {
+ aligned_buffer[i] = xorshift64(&seed);
+ }
+ if (unaligned_suffix) {
+ memset((char *)buffer + size - unaligned_suffix, 0xcd,
+ unaligned_suffix);
}
-
- return (negate) ? !retval : retval;
}
-int get_test_set(int *test_set, int limit, const char *test,
- struct test_list_t *tests)
+void
+fill_with_pseudorandom_data(void *buffer, size_t size)
{
- int start, end;
- int idx = 0;
-
- if (test == NULL) {
- /* Default: Run all tests. */
- for (;idx < limit; idx++)
- test_set[idx] = idx;
- return (limit);
- }
- if (*test >= '0' && *test <= '9') {
- const char *vp = test;
- start = 0;
- while (*vp >= '0' && *vp <= '9') {
- start *= 10;
- start += *vp - '0';
- ++vp;
+ uint64_t seed;
+ const char* seed_str;
+ /*
+ * Check if a seed has been specified in the environment, otherwise fall
+ * back to using rand() as a seed.
+ */
+ if ((seed_str = getenv("TEST_RANDOM_SEED")) != NULL) {
+ errno = 0;
+ seed = strtoull(seed_str, NULL, 10);
+ if (errno != 0) {
+ fprintf(stderr, "strtoull(%s) failed: %s", seed_str,
+ strerror(errno));
+ seed = rand();
}
- if (*vp == '\0') {
- end = start;
- } else if (*vp == '-') {
- ++vp;
- if (*vp == '\0') {
- end = limit - 1;
- } else {
- end = 0;
- while (*vp >= '0' && *vp <= '9') {
- end *= 10;
- end += *vp - '0';
- ++vp;
- }
- }
- } else
- return (-1);
- if (start < 0 || end >= limit || start > end)
- return (-1);
- while (start <= end)
- test_set[idx++] = start++;
} else {
- for (start = 0; start < limit; ++start) {
- const char *name = tests[start].name;
- if (test_filter(test, name))
- test_set[idx++] = start;
- }
+ seed = rand();
}
- return ((idx == 0)?-1:idx);
+ fill_with_pseudorandom_data_seed(seed, buffer, size);
}
#ifndef TEST_UTILS_H
#define TEST_UTILS_H
-struct test_list_t
-{
- void (*func)(void);
- const char *name;
- int failures;
-};
+#include <stddef.h>
+#include <stdint.h>
-int get_test_set(int *, int, const char *, struct test_list_t *);
+/* Fill a buffer with pseudorandom data */
+void fill_with_pseudorandom_data(void* buffer, size_t size);
#endif /* TEST_UTILS_H */
--- /dev/null
+############################################
+#
+# How to build bsdunzip
+#
+############################################
+IF(ENABLE_UNZIP)
+
+ SET(bsdunzip_SOURCES
+ bsdunzip.c
+ bsdunzip.h
+ bsdunzip_platform.h
+ cmdline.c
+ la_getline.c
+ la_queue.h
+ ../libarchive_fe/err.c
+ ../libarchive_fe/err.h
+ ../libarchive_fe/lafe_platform.h
+ ../libarchive_fe/passphrase.c
+ ../libarchive_fe/passphrase.h
+ )
+ INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/../libarchive_fe)
+
+ # bsdunzip documentation
+ SET(bsdunzip_MANS bsdunzip.1)
+
+ # How to build bsdunzip
+ ADD_EXECUTABLE(bsdunzip ${bsdunzip_SOURCES})
+ IF(ENABLE_UNZIP_SHARED)
+ TARGET_LINK_LIBRARIES(bsdunzip archive ${ADDITIONAL_LIBS})
+ ELSE(ENABLE_UNZIP_SHARED)
+ TARGET_LINK_LIBRARIES(bsdunzip archive_static ${ADDITIONAL_LIBS})
+ SET_TARGET_PROPERTIES(bsdunzip PROPERTIES COMPILE_DEFINITIONS
+ LIBARCHIVE_STATIC)
+ ENDIF(ENABLE_UNZIP_SHARED)
+
+ # Installation rules
+ INSTALL(TARGETS bsdunzip RUNTIME DESTINATION bin)
+ INSTALL_MAN(${bsdunzip_MANS})
+ENDIF(ENABLE_UNZIP)
+
+add_subdirectory(test)
--- /dev/null
+.\"-
+.\" Copyright (c) 2007-2008 Dag-Erling Smørgrav
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd June 27, 2023
+.Dt BSDUNZIP 1
+.Os
+.Sh NAME
+.Nm bsdunzip
+.Nd extract files from a ZIP archive
+.Sh SYNOPSIS
+.Nm
+.Op Fl aCcfjLlnopqtuvy
+.Op { Fl O | Fl I No } Ar encoding
+.Op Fl d Ar dir
+.Op Fl x Ar pattern
+.Op Fl P Ar password
+.Ar zipfile
+.Op Ar member ...
+.Sh DESCRIPTION
+.\" ...
+The following options are available:
+.Bl -tag -width Fl
+.It Fl a
+When extracting a text file, convert DOS-style line endings to
+Unix-style line endings.
+.It Fl C
+Match file names case-insensitively.
+.It Fl c
+Extract to stdout/screen.
+When extracting files from the zipfile, they are written to stdout.
+This is similar to
+.Fl p ,
+but does not suppress normal output.
+.It Fl d Ar dir
+Extract files into the specified directory rather than the current
+directory.
+.It Fl f
+Update existing.
+Extract only files from the zipfile if a file with the same name
+already exists on disk and is older than the former.
+Otherwise, the file is silently skipped.
+.It Fl I Ar encoding
+.It Fl O Ar encoding
+Convert filenames from the specified encoding.
+.It Fl j
+Ignore directories stored in the zipfile; instead, extract all files
+directly into the extraction directory.
+.It Fl L
+Convert the names of the extracted files and directories to lowercase.
+.It Fl l
+List, rather than extract, the contents of the zipfile.
+.It Fl n
+No overwrite.
+When extracting a file from the zipfile, if a file with the same name
+already exists on disk, the file is silently skipped.
+.It Fl o
+Overwrite.
+When extracting a file from the zipfile, if a file with the same name
+already exists on disk, the existing file is replaced with the file
+from the zipfile.
+.It Fl p
+Extract to stdout.
+When extracting files from the zipfile, they are written to stdout.
+The normal output is suppressed as if
+.Fl q
+was specified.
+.It Fl P Ar password
+Extract encrypted files using a password.
+Putting a password on the command line using this option can be
+insecure.
+.It Fl q
+Quiet: print less information while extracting.
+.It Fl t
+Test: do not extract anything, but verify the checksum of every file
+in the archive.
+.It Fl u
+Update.
+When extracting a file from the zipfile, if a file with the same name
+already exists on disk, the existing file is replaced with the file
+from the zipfile if and only if the latter is newer than the former.
+Otherwise, the file is silently skipped.
+.It Fl v
+List verbosely, rather than extract, the contents of the zipfile.
+This differs from
+.Fl l
+by using the long listing.
+Note that most of the data is currently fake and does not reflect the
+content of the archive.
+.It Fl x Ar pattern
+Exclude files matching the pattern
+.Ar pattern .
+.It Fl y
+Print four digit years in listings instead of two.
+.It Fl Z Ar mode
+Emulate
+.Xr zipinfo 1L
+mode.
+Enabling
+.Xr zipinfo 1L
+mode changes the way in which additional arguments are parsed.
+Currently only
+.Xr zipinfo 1L
+mode 1 is supported, which lists the file names one per line.
+.It Ar [member ...]
+Optional list of members to extract from the zipfile.
+Can include patterns, e.g.,
+.Ar 'memberdir/*'
+will extract all files and dirs below memberdir.
+.El
+.Pp
+Note that only one of
+.Fl n ,
+.Fl o ,
+and
+.Fl u
+may be specified.
+If specified filename is
+.Qq - ,
+then data is read from
+.Va stdin .
+.Sh ENVIRONMENT
+If the
+.Ev UNZIP_DEBUG
+environment variable is defined, the
+.Fl q
+command-line option has no effect, and additional debugging
+information will be printed to
+.Va stderr .
+.Sh COMPATIBILITY
+The
+.Nm
+utility aims to be sufficiently compatible with other implementations
+to serve as a drop-in replacement in the context of the
+.Xr ports 7
+system.
+No attempt has been made to replicate functionality which is not
+required for that purpose.
+.Pp
+For compatibility reasons, command-line options will be recognized if
+they are listed not only before but also after the name of the
+zipfile.
+.Pp
+Normally, the
+.Fl a
+option should only affect files which are marked as text files in the
+zipfile's central directory.
+Since the
+.Xr archive 3
+library does not provide access to that information, it is not available
+to the
+.Nm
+utility.
+Instead, the
+.Nm
+utility will assume that a file is a text file if no non-ASCII
+characters are present within the first block of data decompressed for
+that file.
+If non-ASCII characters appear in subsequent blocks of data, a warning
+will be issued.
+.Pp
+The
+.Nm
+utility is only able to process ZIP archives handled by
+.Xr libarchive 3 .
+Depending on the installed version of
+.Xr libarchive 3 ,
+this may or may not include self-extracting or ZIPX archives.
+.Sh SEE ALSO
+.Xr libarchive 3
+.Sh HISTORY
+The
+.Nm
+utility appeared in
+.Fx 8.0 .
+.Sh AUTHORS
+The
+.Nm
+utility and this manual page were written by
+.An Dag-Erling Sm\(/orgrav Aq Mt des@FreeBSD.org .
+It uses the
+.Xr archive 3
+library developed by
+.An Tim Kientzle Aq Mt kientzle@FreeBSD.org .
+.Sh CAVEATS
+The
+.Nm
+utility performs two scans of the command-line for arguments before
+and after the archive name, so as to maintain compatibility with
+Info-ZIP unzip.
+As a result, the POSIX
+.Ql --
+double-dash string used to separate options from arguments will need to
+be repeated.
+For example, to extract a "-a.jpg" from "-b.zip" with overwrite, one
+would need to invoke
+.Dl bsdunzip -o -- -a.jpg -- -b.zip
--- /dev/null
+/*-
+ * SPDX-License-Identifier: BSD-2-Clause
+ *
+ * Copyright (c) 2009, 2010 Joerg Sonnenberger <joerg@NetBSD.org>
+ * Copyright (c) 2007-2008 Dag-Erling Smørgrav
+ * 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 AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ *
+ * This file would be much shorter if we didn't care about command-line
+ * compatibility with Info-ZIP's UnZip, which requires us to duplicate
+ * parts of libarchive in order to gain more detailed control of its
+ * behaviour for the purpose of implementing the -n, -o, -L and -a
+ * options.
+ */
+
+#include "bsdunzip_platform.h"
+
+#ifdef HAVE_SYS_QUEUE_H
+#include <sys/queue.h>
+#else
+#include "la_queue.h"
+#endif
+#ifdef HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+
+#ifdef HAVE_CTYPE_H
+#include <ctype.h>
+#endif
+#ifdef HAVE_ERRNO_H
+#include <errno.h>
+#endif
+#ifdef HAVE_FCNTL_H
+#include <fcntl.h>
+#endif
+#ifdef HAVE_FNMATCH_H
+#include <fnmatch.h>
+#endif
+#ifdef HAVE_STDARG_H
+#include <stdarg.h>
+#endif
+#include <stdio.h>
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#if ((!defined(HAVE_UTIMENSAT) && defined(HAVE_LUTIMES)) || \
+ (!defined(HAVE_FUTIMENS) && defined(HAVE_FUTIMES)))
+#ifdef HAVE_SYS_TIME_H
+#include <sys/time.h>
+#endif
+#endif
+
+#include "bsdunzip.h"
+#include "passphrase.h"
+#include "err.h"
+
+/* command-line options */
+static int a_opt; /* convert EOL */
+static int C_opt; /* match case-insensitively */
+static int c_opt; /* extract to stdout */
+static const char *d_arg; /* directory */
+static int f_opt; /* update existing files only */
+static const char *O_arg; /* encoding */
+static int j_opt; /* junk directories */
+static int L_opt; /* lowercase names */
+static int n_opt; /* never overwrite */
+static int o_opt; /* always overwrite */
+static int p_opt; /* extract to stdout, quiet */
+static const char *P_arg; /* passphrase */
+static int q_opt; /* quiet */
+static int t_opt; /* test */
+static int u_opt; /* update */
+static int v_opt; /* verbose/list */
+static const char *y_str = ""; /* 4 digit year */
+static int Z1_opt; /* zipinfo mode list files only */
+static int version_opt; /* version string */
+
+/* debug flag */
+static int unzip_debug;
+
+/* zipinfo mode */
+static int zipinfo_mode;
+
+/* running on tty? */
+static int tty;
+
+/* processing exclude list */
+static int unzip_exclude_mode = 0;
+
+int bsdunzip_optind;
+
+/* convenience macro */
+/* XXX should differentiate between ARCHIVE_{WARN,FAIL,RETRY} */
+#define ac(call) \
+ do { \
+ int acret = (call); \
+ if (acret != ARCHIVE_OK) \
+ errorx("%s", archive_error_string(a)); \
+ } while (0)
+
+/*
+ * Indicates that last info() did not end with EOL. This helps error() et
+ * al. avoid printing an error message on the same line as an incomplete
+ * informational message.
+ */
+static int noeol;
+
+/* for an interactive passphrase input */
+static char *passphrase_buf;
+
+/* fatal error message + errno */
+static void
+error(const char *fmt, ...)
+{
+ va_list ap;
+
+ if (noeol)
+ fprintf(stdout, "\n");
+ fflush(stdout);
+ fprintf(stderr, "unzip: ");
+ va_start(ap, fmt);
+ vfprintf(stderr, fmt, ap);
+ va_end(ap);
+ fprintf(stderr, ": %s\n", strerror(errno));
+ exit(EXIT_FAILURE);
+}
+
+/* fatal error message, no errno */
+static void
+errorx(const char *fmt, ...)
+{
+ va_list ap;
+
+ if (noeol)
+ fprintf(stdout, "\n");
+ fflush(stdout);
+ fprintf(stderr, "unzip: ");
+ va_start(ap, fmt);
+ vfprintf(stderr, fmt, ap);
+ va_end(ap);
+ fprintf(stderr, "\n");
+ exit(EXIT_FAILURE);
+}
+
+/* non-fatal error message + errno */
+static void
+warning(const char *fmt, ...)
+{
+ va_list ap;
+
+ if (noeol)
+ fprintf(stdout, "\n");
+ fflush(stdout);
+ fprintf(stderr, "unzip: ");
+ va_start(ap, fmt);
+ vfprintf(stderr, fmt, ap);
+ va_end(ap);
+ fprintf(stderr, ": %s\n", strerror(errno));
+}
+
+/* non-fatal error message, no errno */
+static void
+warningx(const char *fmt, ...)
+{
+ va_list ap;
+
+ if (noeol)
+ fprintf(stdout, "\n");
+ fflush(stdout);
+ fprintf(stderr, "unzip: ");
+ va_start(ap, fmt);
+ vfprintf(stderr, fmt, ap);
+ va_end(ap);
+ fprintf(stderr, "\n");
+}
+
+/* informational message (if not -q) */
+static void
+info(const char *fmt, ...)
+{
+ va_list ap;
+
+ if (q_opt && !unzip_debug)
+ return;
+ va_start(ap, fmt);
+ vfprintf(stdout, fmt, ap);
+ va_end(ap);
+ fflush(stdout);
+
+ if (*fmt == '\0')
+ noeol = 1;
+ else
+ noeol = fmt[strlen(fmt) - 1] != '\n';
+}
+
+/* debug message (if unzip_debug) */
+static void
+debug(const char *fmt, ...)
+{
+ va_list ap;
+
+ if (!unzip_debug)
+ return;
+ va_start(ap, fmt);
+ vfprintf(stderr, fmt, ap);
+ va_end(ap);
+ fflush(stderr);
+
+ if (*fmt == '\0')
+ noeol = 1;
+ else
+ noeol = fmt[strlen(fmt) - 1] != '\n';
+}
+
+/* duplicate a path name, possibly converting to lower case */
+static char *
+pathdup(const char *path)
+{
+ char *str;
+ size_t i, len;
+
+ if (path == NULL || path[0] == '\0')
+ return (NULL);
+
+ len = strlen(path);
+ while (len && path[len - 1] == '/')
+ len--;
+ if ((str = malloc(len + 1)) == NULL) {
+ errno = ENOMEM;
+ error("malloc()");
+ }
+ if (L_opt) {
+ for (i = 0; i < len; ++i)
+ str[i] = tolower((unsigned char)path[i]);
+ } else {
+ memcpy(str, path, len);
+ }
+ str[len] = '\0';
+
+ return (str);
+}
+
+/* concatenate two path names */
+static char *
+pathcat(const char *prefix, const char *path)
+{
+ char *str;
+ size_t prelen, len;
+
+ prelen = prefix ? strlen(prefix) + 1 : 0;
+ len = strlen(path) + 1;
+ if ((str = malloc(prelen + len)) == NULL) {
+ errno = ENOMEM;
+ error("malloc()");
+ }
+ if (prefix) {
+ memcpy(str, prefix, prelen); /* includes zero */
+ str[prelen - 1] = '/'; /* splat zero */
+ }
+ memcpy(str + prelen, path, len); /* includes zero */
+
+ return (str);
+}
+
+/*
+ * Pattern lists for include / exclude processing
+ */
+struct pattern {
+ STAILQ_ENTRY(pattern) link;
+ char pattern[];
+};
+
+STAILQ_HEAD(pattern_list, pattern);
+static struct pattern_list include = STAILQ_HEAD_INITIALIZER(include);
+static struct pattern_list exclude = STAILQ_HEAD_INITIALIZER(exclude);
+
+/*
+ * Add an entry to a pattern list
+ */
+static void
+add_pattern(struct pattern_list *list, const char *pattern)
+{
+ struct pattern *entry;
+ size_t len;
+
+ debug("adding pattern '%s'\n", pattern);
+ len = strlen(pattern);
+ if ((entry = malloc(sizeof *entry + len + 1)) == NULL) {
+ errno = ENOMEM;
+ error("malloc()");
+ }
+ memcpy(entry->pattern, pattern, len + 1);
+ STAILQ_INSERT_TAIL(list, entry, link);
+}
+
+/*
+ * Match a string against a list of patterns
+ */
+static int
+match_pattern(struct pattern_list *list, const char *str)
+{
+ struct pattern *entry;
+
+ STAILQ_FOREACH(entry, list, link) {
+#ifdef HAVE_FNMATCH
+ if (fnmatch(entry->pattern, str, C_opt ? FNM_CASEFOLD : 0) == 0)
+ return (1);
+#else
+#error "Unsupported platform: fnmatch() is required"
+#endif
+ }
+ return (0);
+}
+
+/*
+ * Verify that a given pathname is in the include list and not in the
+ * exclude list.
+ */
+static int
+accept_pathname(const char *pathname)
+{
+
+ if (!STAILQ_EMPTY(&include) && !match_pattern(&include, pathname))
+ return (0);
+ if (!STAILQ_EMPTY(&exclude) && match_pattern(&exclude, pathname))
+ return (0);
+ return (1);
+}
+
+/*
+ * Create the specified directory with the specified mode, taking certain
+ * precautions on they way.
+ */
+static void
+make_dir(const char *path, int mode)
+{
+ struct stat sb;
+
+ if (lstat(path, &sb) == 0) {
+ if (S_ISDIR(sb.st_mode))
+ return;
+ /*
+ * Normally, we should either ask the user about removing
+ * the non-directory of the same name as a directory we
+ * wish to create, or respect the -n or -o command-line
+ * options. However, this may lead to a later failure or
+ * even compromise (if this non-directory happens to be a
+ * symlink to somewhere unsafe), so we don't.
+ */
+
+ /*
+ * Don't check unlink() result; failure will cause mkdir()
+ * to fail later, which we will catch.
+ */
+ (void)unlink(path);
+ }
+ if (mkdir(path, mode) != 0 && errno != EEXIST)
+ error("mkdir('%s')", path);
+}
+
+/*
+ * Ensure that all directories leading up to (but not including) the
+ * specified path exist.
+ *
+ * XXX inefficient + modifies the file in-place
+ */
+static void
+make_parent(char *path)
+{
+ struct stat sb;
+ char *sep;
+
+ sep = strrchr(path, '/');
+ if (sep == NULL || sep == path)
+ return;
+ *sep = '\0';
+ if (lstat(path, &sb) == 0) {
+ if (S_ISDIR(sb.st_mode)) {
+ *sep = '/';
+ return;
+ }
+ unlink(path);
+ }
+ make_parent(path);
+ mkdir(path, 0755);
+ *sep = '/';
+
+#if 0
+ for (sep = path; (sep = strchr(sep, '/')) != NULL; sep++) {
+ /* root in case of absolute d_arg */
+ if (sep == path)
+ continue;
+ *sep = '\0';
+ make_dir(path, 0755);
+ *sep = '/';
+ }
+#endif
+}
+
+/*
+ * Extract a directory.
+ */
+static void
+extract_dir(struct archive *a, struct archive_entry *e, const char *path)
+{
+ int mode;
+
+ /*
+ * Dropbox likes to create '/' directory entries, just ignore
+ * such junk.
+ */
+ if (*path == '\0')
+ return;
+
+ mode = archive_entry_mode(e) & 0777;
+ if (mode == 0)
+ mode = 0755;
+
+ /*
+ * Some zipfiles contain directories with weird permissions such
+ * as 0644 or 0444. This can cause strange issues such as being
+ * unable to extract files into the directory we just created, or
+ * the user being unable to remove the directory later without
+ * first manually changing its permissions. Therefore, we whack
+ * the permissions into shape, assuming that the user wants full
+ * access and that anyone who gets read access also gets execute
+ * access.
+ */
+ mode |= 0700;
+ if (mode & 0040)
+ mode |= 0010;
+ if (mode & 0004)
+ mode |= 0001;
+
+ info(" creating: %s/\n", path);
+ make_dir(path, mode);
+ ac(archive_read_data_skip(a));
+}
+
+static unsigned char buffer[8192];
+static char spinner[] = { '|', '/', '-', '\\' };
+
+static int
+handle_existing_file(char **path)
+{
+ size_t alen;
+ ssize_t len;
+ char buf[4];
+
+ for (;;) {
+ fprintf(stderr,
+ "replace %s? [y]es, [n]o, [A]ll, [N]one, [r]ename: ",
+ *path);
+ if (fgets(buf, sizeof(buf), stdin) == NULL) {
+ clearerr(stdin);
+ printf("NULL\n(EOF or read error, "
+ "treating as \"[N]one\"...)\n");
+ n_opt = 1;
+ return -1;
+ }
+ switch (*buf) {
+ case 'A':
+ o_opt = 1;
+ /* FALLTHROUGH */
+ case 'y':
+ case 'Y':
+ (void)unlink(*path);
+ return 1;
+ case 'N':
+ n_opt = 1;
+ /* FALLTHROUGH */
+ case 'n':
+ return -1;
+ case 'r':
+ case 'R':
+ printf("New name: ");
+ fflush(stdout);
+ free(*path);
+ *path = NULL;
+ alen = 0;
+ len = getline(path, &alen, stdin);
+ if ((*path)[len - 1] == '\n')
+ (*path)[len - 1] = '\0';
+ return 0;
+ default:
+ break;
+ }
+ }
+}
+
+/*
+ * Detect binary files by a combination of character white list and
+ * black list. NUL bytes and other control codes without use in text files
+ * result directly in switching the file to binary mode. Otherwise, at least
+ * one white-listed byte has to be found.
+ *
+ * Black-listed: 0..6, 14..25, 28..31
+ * 0xf3ffc07f = 11110011111111111100000001111111b
+ * White-listed: 9..10, 13, >= 32
+ * 0x00002600 = 00000000000000000010011000000000b
+ *
+ * See the proginfo/txtvsbin.txt in the zip sources for a detailed discussion.
+ */
+#define BYTE_IS_BINARY(x) ((x) < 32 && (0xf3ffc07fU & (1U << (x))))
+#define BYTE_IS_TEXT(x) ((x) >= 32 || (0x00002600U & (1U << (x))))
+
+static int
+check_binary(const unsigned char *buf, size_t len)
+{
+ int rv;
+ for (rv = 1; len--; ++buf) {
+ if (BYTE_IS_BINARY(*buf))
+ return 1;
+ if (BYTE_IS_TEXT(*buf))
+ rv = 0;
+ }
+
+ return rv;
+}
+
+/*
+ * Extract to a file descriptor
+ */
+static int
+extract2fd(struct archive *a, char *pathname, int fd)
+{
+ int cr, text, warn;
+ ssize_t len;
+ unsigned char *p, *q, *end;
+
+ text = a_opt;
+ warn = 0;
+ cr = 0;
+
+ /* loop over file contents and write to fd */
+ for (int n = 0; ; n++) {
+ if (fd != STDOUT_FILENO)
+ if (tty && (n % 4) == 0)
+ info(" %c\b\b", spinner[(n / 4) % sizeof spinner]);
+
+ len = archive_read_data(a, buffer, sizeof buffer);
+
+ if (len < 0)
+ ac(len);
+
+ /* left over CR from previous buffer */
+ if (a_opt && cr) {
+ if (len == 0 || buffer[0] != '\n')
+ if (write(fd, "\r", 1) != 1)
+ error("write('%s')", pathname);
+ cr = 0;
+ }
+
+ /* EOF */
+ if (len == 0)
+ break;
+ end = buffer + len;
+
+ /*
+ * Detect whether this is a text file. The correct way to
+ * do this is to check the least significant bit of the
+ * "internal file attributes" field of the corresponding
+ * file header in the central directory, but libarchive
+ * does not provide access to this field, so we have to
+ * guess by looking for non-ASCII characters in the
+ * buffer. Hopefully we won't guess wrong. If we do
+ * guess wrong, we print a warning message later.
+ */
+ if (a_opt && n == 0) {
+ if (check_binary(buffer, len))
+ text = 0;
+ }
+
+ /* simple case */
+ if (!a_opt || !text) {
+ if (write(fd, buffer, len) != len)
+ error("write('%s')", pathname);
+ continue;
+ }
+
+ /* hard case: convert \r\n to \n (sigh...) */
+ for (p = buffer; p < end; p = q + 1) {
+ for (q = p; q < end; q++) {
+ if (!warn && BYTE_IS_BINARY(*q)) {
+ warningx("%s may be corrupted due"
+ " to weak text file detection"
+ " heuristic", pathname);
+ warn = 1;
+ }
+ if (q[0] != '\r')
+ continue;
+ if (&q[1] == end) {
+ cr = 1;
+ break;
+ }
+ if (q[1] == '\n')
+ break;
+ }
+ if (write(fd, p, q - p) != q - p)
+ error("write('%s')", pathname);
+ }
+ }
+
+ return text;
+}
+
+/*
+ * Extract a regular file.
+ */
+static void
+extract_file(struct archive *a, struct archive_entry *e, char **path)
+{
+ int mode;
+ struct timespec mtime;
+ struct stat sb;
+ int fd, check, text;
+ const char *linkname;
+#if defined(HAVE_UTIMENSAT) || defined(HAVE_FUTIMENS)
+ struct timespec ts[2];
+#endif
+#if ((!defined(HAVE_UTIMENSAT) && defined(HAVE_LUTIMES)) || \
+ (!defined(HAVE_FUTIMENS) && defined(HAVE_FUTIMES)))
+ struct timeval times[2];
+#endif
+
+ mode = archive_entry_mode(e) & 0777;
+ if (mode == 0)
+ mode = 0644;
+ mtime.tv_sec = archive_entry_mtime(e);
+ mtime.tv_nsec = archive_entry_mtime_nsec(e);
+
+ /* look for existing file of same name */
+recheck:
+ if (lstat(*path, &sb) == 0) {
+ if (u_opt || f_opt) {
+ /* check if up-to-date */
+ if (S_ISREG(sb.st_mode) && (
+#if HAVE_STRUCT_STAT_ST_MTIMESPEC_TV_NSEC
+ sb.st_mtimespec.tv_sec > mtime.tv_sec ||
+ (sb.st_mtimespec.tv_sec == mtime.tv_sec &&
+ sb.st_mtimespec.tv_nsec >= mtime.tv_nsec)
+#elif HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC
+ sb.st_mtim.tv_sec > mtime.tv_sec ||
+ (sb.st_mtim.tv_sec == mtime.tv_sec &&
+ sb.st_mtim.tv_nsec >= mtime.tv_nsec)
+#elif HAVE_STRUCT_STAT_ST_MTIME_N
+ sb.st_mtime > mtime.tv_sec ||
+ (sb.st_mtime == mtime.tv_sec &&
+ sb.st_mtime_n => mtime.tv_nsec)
+#elif HAVE_STRUCT_STAT_ST_MTIME_USEC
+ sb.st_mtime > mtime.tv_sec ||
+ (sb.st_mtime == mtime.tv_sec &&
+ sb.st_mtime_usec => mtime.tv_nsec / 1000)
+#else
+ sb.st_mtime > mtime.tv_sec
+#endif
+ ))
+ return;
+ (void)unlink(*path);
+ } else if (o_opt) {
+ /* overwrite */
+ (void)unlink(*path);
+ } else if (n_opt) {
+ /* do not overwrite */
+ return;
+ } else {
+ check = handle_existing_file(path);
+ if (check == 0)
+ goto recheck;
+ if (check == -1)
+ return; /* do not overwrite */
+ }
+ } else {
+ if (f_opt)
+ return;
+ }
+
+#if defined(HAVE_UTIMENSAT) || defined(HAVE_FUTIMENS)
+ ts[0].tv_sec = 0;
+ ts[0].tv_nsec = UTIME_NOW;
+ ts[1] = mtime;
+#endif
+#if ((!defined(HAVE_UTIMENSAT) && defined(HAVE_LUTIMES)) || \
+ (!defined(HAVE_FUTIMENS) && defined(HAVE_FUTIMES)))
+ times[0].tv_sec = 0;
+ times[0].tv_usec = -1;
+ times[1].tv_sec = mtime.tv_sec;
+ times[1].tv_usec = mtime.tv_nsec / 1000;
+#endif
+
+ /* process symlinks */
+ linkname = archive_entry_symlink(e);
+ if (linkname != NULL) {
+ if (symlink(linkname, *path) != 0)
+ error("symlink('%s')", *path);
+ info(" extracting: %s -> %s\n", *path, linkname);
+#ifdef HAVE_LCHMOD
+ if (lchmod(*path, mode) != 0)
+ warning("Cannot set mode for '%s'", *path);
+#endif
+ /* set access and modification time */
+#if defined(HAVE_UTIMENSAT)
+ if (utimensat(AT_FDCWD, *path, ts, AT_SYMLINK_NOFOLLOW) != 0)
+ warning("utimensat('%s')", *path);
+#elif defined(HAVE_LUTIMES)
+ gettimeofday(×[0], NULL);
+ if (lutimes(*path, times) != 0)
+ warning("lutimes('%s')", *path);
+#endif
+ return;
+ }
+
+ if ((fd = open(*path, O_RDWR|O_CREAT|O_TRUNC, mode)) < 0)
+ error("open('%s')", *path);
+
+ info(" extracting: %s", *path);
+
+ text = extract2fd(a, *path, fd);
+
+ if (tty)
+ info(" \b\b");
+ if (text)
+ info(" (text)");
+ info("\n");
+
+ /* set access and modification time */
+#if defined(HAVE_FUTIMENS)
+ if (futimens(fd, ts) != 0)
+ error("futimens('%s')", *path);
+#elif defined(HAVE_FUTIMES)
+ gettimeofday(×[0], NULL);
+ if (futimes(fd, times) != 0)
+ error("futimes('%s')", *path);
+#endif
+ if (close(fd) != 0)
+ error("close('%s')", *path);
+}
+
+/*
+ * Extract a zipfile entry: first perform some sanity checks to ensure
+ * that it is either a directory or a regular file and that the path is
+ * not absolute and does not try to break out of the current directory;
+ * then call either extract_dir() or extract_file() as appropriate.
+ *
+ * This is complicated a bit by the various ways in which we need to
+ * manipulate the path name. Case conversion (if requested by the -L
+ * option) happens first, but the include / exclude patterns are applied
+ * to the full converted path name, before the directory part of the path
+ * is removed in accordance with the -j option. Sanity checks are
+ * intentionally done earlier than they need to be, so the user will get a
+ * warning about insecure paths even for files or directories which
+ * wouldn't be extracted anyway.
+ */
+static void
+extract(struct archive *a, struct archive_entry *e)
+{
+ char *pathname, *realpathname;
+ mode_t filetype;
+ char *p, *q;
+
+ if ((pathname = pathdup(archive_entry_pathname(e))) == NULL) {
+ warningx("skipping empty or unreadable filename entry");
+ ac(archive_read_data_skip(a));
+ return;
+ }
+ filetype = archive_entry_filetype(e);
+
+ /* sanity checks */
+ if (pathname[0] == '/' ||
+ strncmp(pathname, "../", 3) == 0 ||
+ strstr(pathname, "/../") != NULL) {
+ warningx("skipping insecure entry '%s'", pathname);
+ ac(archive_read_data_skip(a));
+ free(pathname);
+ return;
+ }
+
+ /* I don't think this can happen in a zipfile.. */
+ if (!S_ISDIR(filetype) && !S_ISREG(filetype) && !S_ISLNK(filetype)) {
+ warningx("skipping non-regular entry '%s'", pathname);
+ ac(archive_read_data_skip(a));
+ free(pathname);
+ return;
+ }
+
+ /* skip directories in -j case */
+ if (S_ISDIR(filetype) && j_opt) {
+ ac(archive_read_data_skip(a));
+ free(pathname);
+ return;
+ }
+
+ /* apply include / exclude patterns */
+ if (!accept_pathname(pathname)) {
+ ac(archive_read_data_skip(a));
+ free(pathname);
+ return;
+ }
+
+ /* apply -j and -d */
+ if (j_opt) {
+ for (p = q = pathname; *p; ++p)
+ if (*p == '/')
+ q = p + 1;
+ realpathname = pathcat(d_arg, q);
+ } else {
+ realpathname = pathcat(d_arg, pathname);
+ }
+
+ /* ensure that parent directory exists */
+ make_parent(realpathname);
+
+ if (S_ISDIR(filetype))
+ extract_dir(a, e, realpathname);
+ else
+ extract_file(a, e, &realpathname);
+
+ free(realpathname);
+ free(pathname);
+}
+
+static void
+extract_stdout(struct archive *a, struct archive_entry *e)
+{
+ char *pathname;
+ mode_t filetype;
+
+ if ((pathname = pathdup(archive_entry_pathname(e))) == NULL) {
+ warningx("skipping empty or unreadable filename entry");
+ ac(archive_read_data_skip(a));
+ return;
+ }
+ filetype = archive_entry_filetype(e);
+
+ /* I don't think this can happen in a zipfile.. */
+ if (!S_ISDIR(filetype) && !S_ISREG(filetype) && !S_ISLNK(filetype)) {
+ warningx("skipping non-regular entry '%s'", pathname);
+ ac(archive_read_data_skip(a));
+ free(pathname);
+ return;
+ }
+
+ /* skip directories in -j case */
+ if (S_ISDIR(filetype)) {
+ ac(archive_read_data_skip(a));
+ free(pathname);
+ return;
+ }
+
+ /* apply include / exclude patterns */
+ if (!accept_pathname(pathname)) {
+ ac(archive_read_data_skip(a));
+ free(pathname);
+ return;
+ }
+
+ if (c_opt)
+ info("x %s\n", pathname);
+
+ (void)extract2fd(a, pathname, STDOUT_FILENO);
+
+ free(pathname);
+}
+
+/*
+ * Print the name of an entry to stdout.
+ */
+static void
+list(struct archive *a, struct archive_entry *e)
+{
+ char buf[20];
+ time_t mtime;
+ struct tm *tm;
+
+ mtime = archive_entry_mtime(e);
+ tm = localtime(&mtime);
+ if (*y_str)
+ strftime(buf, sizeof(buf), "%m-%d-%G %R", tm);
+ else
+ strftime(buf, sizeof(buf), "%m-%d-%g %R", tm);
+
+ if (!zipinfo_mode) {
+ if (v_opt == 1) {
+ printf(" %8ju %s %s\n",
+ (uintmax_t)archive_entry_size(e),
+ buf, archive_entry_pathname(e));
+ } else if (v_opt == 2) {
+ printf("%8ju Stored %7ju 0%% %s %08x %s\n",
+ (uintmax_t)archive_entry_size(e),
+ (uintmax_t)archive_entry_size(e),
+ buf,
+ 0U,
+ archive_entry_pathname(e));
+ }
+ } else {
+ if (Z1_opt)
+ printf("%s\n",archive_entry_pathname(e));
+ }
+ ac(archive_read_data_skip(a));
+}
+
+/*
+ * Extract to memory to check CRC
+ */
+static int
+test(struct archive *a, struct archive_entry *e)
+{
+ ssize_t len;
+ int error_count;
+
+ error_count = 0;
+ if (S_ISDIR(archive_entry_filetype(e)))
+ return 0;
+
+ info(" testing: %s\t", archive_entry_pathname(e));
+ while ((len = archive_read_data(a, buffer, sizeof buffer)) > 0)
+ /* nothing */;
+ if (len < 0) {
+ info(" %s\n", archive_error_string(a));
+ ++error_count;
+ } else {
+ info(" OK\n");
+ }
+
+ /* shouldn't be necessary, but it doesn't hurt */
+ ac(archive_read_data_skip(a));
+
+ return error_count;
+}
+
+/*
+ * Callback function for reading passphrase.
+ * Originally from cpio.c and passphrase.c, libarchive.
+ */
+#define PPBUFF_SIZE 1024
+static const char *
+passphrase_callback(struct archive *a, void *_client_data)
+{
+ char *p;
+
+ (void)a; /* UNUSED */
+ (void)_client_data; /* UNUSED */
+
+ if (passphrase_buf == NULL) {
+ passphrase_buf = malloc(PPBUFF_SIZE);
+ if (passphrase_buf == NULL) {
+ errno = ENOMEM;
+ error("malloc()");
+ }
+ }
+
+ p = lafe_readpassphrase("\nEnter password: ", passphrase_buf,
+ PPBUFF_SIZE);
+
+ if (p == NULL && errno != EINTR)
+ error("Error reading password");
+
+ return p;
+}
+
+/*
+ * Main loop: open the zipfile, iterate over its contents and decide what
+ * to do with each entry.
+ */
+static void
+unzip(const char *fn)
+{
+ struct archive *a;
+ struct archive_entry *e;
+ int ret;
+ uintmax_t total_size, file_count, error_count;
+
+ if ((a = archive_read_new()) == NULL)
+ error("archive_read_new failed");
+
+ ac(archive_read_support_format_zip(a));
+
+ if (O_arg)
+ ac(archive_read_set_format_option(a, "zip", "hdrcharset", O_arg));
+
+ if (P_arg)
+ archive_read_add_passphrase(a, P_arg);
+ else
+ archive_read_set_passphrase_callback(a, NULL,
+ &passphrase_callback);
+
+ ac(archive_read_open_filename(a, fn, 8192));
+
+ if (!zipinfo_mode) {
+ if (!p_opt && !q_opt)
+ printf("Archive: %s\n", fn);
+ if (v_opt == 1) {
+ printf(" Length %sDate Time Name\n", y_str);
+ printf(" -------- %s---- ---- ----\n", y_str);
+ } else if (v_opt == 2) {
+ printf(" Length Method Size Ratio %sDate Time CRC-32 Name\n", y_str);
+ printf("-------- ------ ------- ----- %s---- ---- ------ ----\n", y_str);
+ }
+ }
+
+ total_size = 0;
+ file_count = 0;
+ error_count = 0;
+ for (;;) {
+ ret = archive_read_next_header(a, &e);
+ if (ret == ARCHIVE_EOF)
+ break;
+ ac(ret);
+ if (!zipinfo_mode) {
+ if (t_opt)
+ error_count += test(a, e);
+ else if (v_opt)
+ list(a, e);
+ else if (p_opt || c_opt)
+ extract_stdout(a, e);
+ else
+ extract(a, e);
+ } else {
+ if (Z1_opt)
+ list(a, e);
+ }
+
+ total_size += archive_entry_size(e);
+ ++file_count;
+ }
+
+ if (zipinfo_mode) {
+ if (v_opt == 1) {
+ printf(" -------- %s-------\n", y_str);
+ printf(" %8ju %s%ju file%s\n",
+ total_size, y_str, file_count, file_count != 1 ? "s" : "");
+ } else if (v_opt == 2) {
+ printf("-------- ------- --- %s-------\n", y_str);
+ printf("%8ju %7ju 0%% %s%ju file%s\n",
+ total_size, total_size, y_str, file_count,
+ file_count != 1 ? "s" : "");
+ }
+ }
+
+ ac(archive_read_free(a));
+
+ if (passphrase_buf != NULL) {
+ memset(passphrase_buf, 0, PPBUFF_SIZE);
+ free(passphrase_buf);
+ }
+
+ if (t_opt) {
+ if (error_count > 0) {
+ errorx("%ju checksum error(s) found.", error_count);
+ }
+ else {
+ printf("No errors detected in compressed data of %s.\n",
+ fn);
+ }
+ }
+}
+
+static void
+usage(void)
+{
+
+ fprintf(stderr,
+"Usage: unzip [-aCcfjLlnopqtuvyZ1] [{-O|-I} encoding] [-d dir] [-x pattern] [-P password] zipfile\n"
+" [member ...]\n");
+ exit(EXIT_FAILURE);
+}
+
+static void
+version(void)
+{
+ printf("bsdunzip %s - %s \n",
+ BSDUNZIP_VERSION_STRING,
+ archive_version_details());
+ exit(0);
+}
+
+static int
+getopts(int argc, char *argv[])
+{
+ struct bsdunzip *bsdunzip, bsdunzip_storage;
+ int opt;
+ bsdunzip_optind = 1;
+
+ bsdunzip = &bsdunzip_storage;
+ memset(bsdunzip, 0, sizeof(*bsdunzip));
+
+ bsdunzip->argv = argv;
+ bsdunzip->argc = argc;
+
+ while ((opt = bsdunzip_getopt(bsdunzip)) != -1) {
+ unzip_exclude_mode = 0;
+ switch (opt) {
+ case 'a':
+ a_opt = 1;
+ break;
+ case 'C':
+ C_opt = 1;
+ break;
+ case 'c':
+ c_opt = 1;
+ break;
+ case 'd':
+ d_arg = bsdunzip->argument;
+ break;
+ case 'f':
+ f_opt = 1;
+ break;
+ case 'I':
+ case 'O':
+ O_arg = bsdunzip->argument;
+ break;
+ case 'j':
+ j_opt = 1;
+ break;
+ case 'L':
+ L_opt = 1;
+ break;
+ case 'l':
+ if (v_opt == 0)
+ v_opt = 1;
+ break;
+ case 'n':
+ n_opt = 1;
+ break;
+ case 'o':
+ o_opt = 1;
+ q_opt = 1;
+ break;
+ case 'p':
+ p_opt = 1;
+ break;
+ case 'P':
+ P_arg = bsdunzip->argument;
+ break;
+ case 'q':
+ q_opt = 1;
+ break;
+ case 't':
+ t_opt = 1;
+ break;
+ case 'u':
+ u_opt = 1;
+ break;
+ case 'v':
+ v_opt = 2;
+ break;
+ case 'x':
+ add_pattern(&exclude, bsdunzip->argument);
+ unzip_exclude_mode = 1;
+ break;
+ case 'y':
+ y_str = " ";
+ break;
+ case 'Z':
+ zipinfo_mode = 1;
+ if (bsdunzip->argument != NULL &&
+ strcmp(bsdunzip->argument, "1") == 0) {
+ Z1_opt = 1;
+ }
+ break;
+ case OPTION_VERSION:
+ version_opt = 1;
+ break;
+ case OPTION_NONE:
+ break;
+ default:
+ usage();
+ }
+ if (opt == OPTION_NONE)
+ break;
+ }
+ return (bsdunzip_optind);
+}
+
+int
+main(int argc, char *argv[])
+{
+ const char *zipfile;
+ int nopts;
+
+ lafe_setprogname(*argv, "bsdunzip");
+
+ if (isatty(STDOUT_FILENO))
+ tty = 1;
+
+ if (getenv("UNZIP_DEBUG") != NULL)
+ unzip_debug = 1;
+ for (int i = 0; i < argc; ++i)
+ debug("%s%c", argv[i], (i < argc - 1) ? ' ' : '\n');
+
+#ifdef __GLIBC__
+ /* Prevent GNU getopt(3) from rearranging options. */
+ setenv("POSIXLY_CORRECT", "", 1);
+#endif
+ /*
+ * Info-ZIP's unzip(1) expects certain options to come before the
+ * zipfile name, and others to come after - though it does not
+ * enforce this. For simplicity, we accept *all* options both
+ * before and after the zipfile name.
+ */
+ nopts = getopts(argc, argv);
+
+ if (version_opt == 1) {
+ version();
+ exit(EXIT_SUCCESS);
+ }
+
+ /*
+ * When more of the zipinfo mode options are implemented, this
+ * will need to change.
+ */
+ if (zipinfo_mode && !Z1_opt) {
+ printf("Zipinfo mode needs additional options\n");
+ exit(EXIT_FAILURE);
+ }
+
+ if (argc <= nopts)
+ usage();
+ zipfile = argv[nopts++];
+
+ if (strcmp(zipfile, "-") == 0)
+ zipfile = NULL; /* STDIN */
+
+ unzip_exclude_mode = 0;
+
+ while (nopts < argc && *argv[nopts] != '-')
+ add_pattern(&include, argv[nopts++]);
+
+ nopts--; /* fake argv[0] */
+ nopts += getopts(argc - nopts, argv + nopts);
+
+ /*
+ * For compatibility with Info-ZIP's unzip(1) we need to treat
+ * non-option arguments following an -x after the zipfile as
+ * exclude list members.
+ */
+ if (unzip_exclude_mode) {
+ while (nopts < argc && *argv[nopts] != '-')
+ add_pattern(&exclude, argv[nopts++]);
+ nopts--; /* fake argv[0] */
+ nopts += getopts(argc - nopts, argv + nopts);
+ }
+
+ /* There may be residual arguments if we encountered -- */
+ while (nopts < argc)
+ add_pattern(&include, argv[nopts++]);
+
+ if (n_opt + o_opt + u_opt > 1)
+ errorx("-n, -o and -u are contradictory");
+
+ unzip(zipfile);
+
+ exit(EXIT_SUCCESS);
+}
--- /dev/null
+/*-
+ * Copyright (c) 2023, Martin Matuska
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef BSDUNZIP_H_INCLUDED
+#define BSDUNZIP_H_INCLUDED
+
+#if defined(PLATFORM_CONFIG_H)
+/* Use hand-built config.h in environments that need it. */
+#include PLATFORM_CONFIG_H
+#else
+/* Not having a config.h of some sort is a serious problem. */
+#include "config.h"
+#endif
+
+#include <archive.h>
+#include <archive_entry.h>
+
+struct bsdunzip {
+ /* Option parser state */
+ int getopt_state;
+ char *getopt_word;
+
+ /* Miscellaneous state information */
+ int argc;
+ char **argv;
+ const char *argument;
+};
+
+enum {
+ OPTION_NONE,
+ OPTION_VERSION
+};
+
+int bsdunzip_getopt(struct bsdunzip *);
+
+extern int bsdunzip_optind;
+
+#endif
--- /dev/null
+/*-
+ * Copyright (c) 2003-2007 Tim Kientzle
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * $FreeBSD: src/usr.bin/tar/bsdtar_platform.h,v 1.26 2008/12/06 07:37:14 kientzle Exp $
+ */
+
+/*
+ * This header is the first thing included in any of the bsdtar
+ * source files. As far as possible, platform-specific issues should
+ * be dealt with here and not within individual source files.
+ */
+
+#ifndef BSDUNZIP_PLATFORM_H_INCLUDED
+#define BSDUNZIP_PLATFORM_H_INCLUDED
+
+#if defined(PLATFORM_CONFIG_H)
+/* Use hand-built config.h in environments that need it. */
+#include PLATFORM_CONFIG_H
+#else
+/* Not having a config.h of some sort is a serious problem. */
+#include "config.h"
+#endif
+
+/* Get a real definition for __FBSDID if we can */
+#if HAVE_SYS_CDEFS_H
+#include <sys/cdefs.h>
+#endif
+
+/* If not, define it so as to avoid dangling semicolons. */
+#ifndef __FBSDID
+#define __FBSDID(a) struct _undefined_hack
+#endif
+
+#ifdef HAVE_LIBARCHIVE
+/* If we're using the platform libarchive, include system headers. */
+#include <archive.h>
+#include <archive_entry.h>
+#else
+/* Otherwise, include user headers. */
+#include "archive.h"
+#include "archive_entry.h"
+#endif
+
+/* How to mark functions that don't return. */
+/* This facilitates use of some newer static code analysis tools. */
+#undef __LA_DEAD
+#if defined(__GNUC__) && (__GNUC__ > 2 || \
+ (__GNUC__ == 2 && __GNUC_MINOR__ >= 5))
+#define __LA_DEAD __attribute__((__noreturn__))
+#else
+#define __LA_DEAD
+#endif
+
+#endif /* !BSDUNZIP_PLATFORM_H_INCLUDED */
--- /dev/null
+/*-
+ * Copyright (c) 2003-2008 Tim Kientzle
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/*
+ * Command line parser for bsdunzip.
+ */
+
+#include "bsdunzip_platform.h"
+__FBSDID("$FreeBSD$");
+
+#ifdef HAVE_ERRNO_H
+#include <errno.h>
+#endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+
+#include "bsdunzip.h"
+#include "err.h"
+
+/*
+ * Short options for bsdunzip. Please keep this sorted.
+ */
+static const char *short_options
+ = "aCcd:fI:jLlnO:opP:qtuvx:yZ:";
+
+/*
+ * Long options for bsdunzip. Please keep this list sorted.
+ *
+ * The symbolic names for options that lack a short equivalent are
+ * defined in bsdunzip.h. Also note that so far I've found no need
+ * to support optional arguments to long options. That would be
+ * a small change to the code below.
+ */
+
+static const struct bsdunzip_option {
+ const char *name;
+ int required; /* 1 if this option requires an argument. */
+ int equivalent; /* Equivalent short option. */
+} bsdunzip_longopts[] = {
+ { "version", 0, OPTION_VERSION },
+ { NULL, 0, 0 }
+};
+
+/*
+ * This getopt implementation has two key features that common
+ * getopt_long() implementations lack. Apart from those, it's a
+ * straightforward option parser, considerably simplified by not
+ * needing to support the wealth of exotic getopt_long() features. It
+ * has, of course, been shamelessly tailored for bsdunzip. (If you're
+ * looking for a generic getopt_long() implementation for your
+ * project, I recommend Gregory Pietsch's public domain getopt_long()
+ * implementation.) The two additional features are:
+ */
+
+int
+bsdunzip_getopt(struct bsdunzip *bsdunzip)
+{
+ enum { state_start = 0, state_next_word, state_short, state_long };
+
+ const struct bsdunzip_option *popt, *match = NULL, *match2 = NULL;
+ const char *p, *long_prefix = "--";
+ size_t optlength;
+ int opt = OPTION_NONE;
+ int required = 0;
+
+ bsdunzip->argument = NULL;
+
+ /* First time through, initialize everything. */
+ if (bsdunzip->getopt_state == state_start) {
+ /* Skip program name. */
+ ++bsdunzip->argv;
+ --bsdunzip->argc;
+ if (*bsdunzip->argv == NULL)
+ return (-1);
+ bsdunzip->getopt_state = state_next_word;
+ }
+
+ /*
+ * We're ready to look at the next word in argv.
+ */
+ if (bsdunzip->getopt_state == state_next_word) {
+ /* No more arguments, so no more options. */
+ if (bsdunzip->argv[0] == NULL)
+ return (-1);
+ /* Doesn't start with '-', so no more options. */
+ if (bsdunzip->argv[0][0] != '-')
+ return (-1);
+ /* "--" marks end of options; consume it and return. */
+ if (strcmp(bsdunzip->argv[0], "--") == 0) {
+ ++bsdunzip->argv;
+ --bsdunzip->argc;
+ return (-1);
+ }
+ /* Get next word for parsing. */
+ bsdunzip->getopt_word = *bsdunzip->argv++;
+ --bsdunzip->argc;
+ bsdunzip_optind++;
+ if (bsdunzip->getopt_word[1] == '-') {
+ /* Set up long option parser. */
+ bsdunzip->getopt_state = state_long;
+ bsdunzip->getopt_word += 2; /* Skip leading '--' */
+ } else {
+ /* Set up short option parser. */
+ bsdunzip->getopt_state = state_short;
+ ++bsdunzip->getopt_word; /* Skip leading '-' */
+ }
+ }
+
+ /*
+ * We're parsing a group of POSIX-style single-character options.
+ */
+ if (bsdunzip->getopt_state == state_short) {
+ /* Peel next option off of a group of short options. */
+ opt = *bsdunzip->getopt_word++;
+ if (opt == '\0') {
+ /* End of this group; recurse to get next option. */
+ bsdunzip->getopt_state = state_next_word;
+ return bsdunzip_getopt(bsdunzip);
+ }
+
+ /* Does this option take an argument? */
+ p = strchr(short_options, opt);
+ if (p == NULL)
+ return ('?');
+ if (p[1] == ':')
+ required = 1;
+
+ /* If it takes an argument, parse that. */
+ if (required) {
+ /* If arg is run-in, bsdunzip->getopt_word already points to it. */
+ if (bsdunzip->getopt_word[0] == '\0') {
+ /* Otherwise, pick up the next word. */
+ bsdunzip->getopt_word = *bsdunzip->argv;
+ if (bsdunzip->getopt_word == NULL) {
+ lafe_warnc(0,
+ "Option -%c requires an argument",
+ opt);
+ return ('?');
+ }
+ ++bsdunzip->argv;
+ --bsdunzip->argc;
+ bsdunzip_optind++;
+ }
+ bsdunzip->getopt_state = state_next_word;
+ bsdunzip->argument = bsdunzip->getopt_word;
+ }
+ }
+
+ /* We're reading a long option */
+ if (bsdunzip->getopt_state == state_long) {
+ /* After this long option, we'll be starting a new word. */
+ bsdunzip->getopt_state = state_next_word;
+
+ /* Option name ends at '=' if there is one. */
+ p = strchr(bsdunzip->getopt_word, '=');
+ if (p != NULL) {
+ optlength = (size_t)(p - bsdunzip->getopt_word);
+ bsdunzip->argument = (char *)(uintptr_t)(p + 1);
+ } else {
+ optlength = strlen(bsdunzip->getopt_word);
+ }
+
+ /* Search the table for an unambiguous match. */
+ for (popt = bsdunzip_longopts; popt->name != NULL; popt++) {
+ /* Short-circuit if first chars don't match. */
+ if (popt->name[0] != bsdunzip->getopt_word[0])
+ continue;
+ /* If option is a prefix of name in table, record it.*/
+ if (strncmp(bsdunzip->getopt_word, popt->name, optlength) == 0) {
+ match2 = match; /* Record up to two matches. */
+ match = popt;
+ /* If it's an exact match, we're done. */
+ if (strlen(popt->name) == optlength) {
+ match2 = NULL; /* Forget the others. */
+ break;
+ }
+ }
+ }
+
+ /* Fail if there wasn't a unique match. */
+ if (match == NULL) {
+ lafe_warnc(0,
+ "Option %s%s is not supported",
+ long_prefix, bsdunzip->getopt_word);
+ return ('?');
+ }
+ if (match2 != NULL) {
+ lafe_warnc(0,
+ "Ambiguous option %s%s (matches --%s and --%s)",
+ long_prefix, bsdunzip->getopt_word, match->name, match2->name);
+ return ('?');
+ }
+
+ /* We've found a unique match; does it need an argument? */
+ if (match->required) {
+ /* Argument required: get next word if necessary. */
+ if (bsdunzip->argument == NULL) {
+ bsdunzip->argument = *bsdunzip->argv;
+ if (bsdunzip->argument == NULL) {
+ lafe_warnc(0,
+ "Option %s%s requires an argument",
+ long_prefix, match->name);
+ return ('?');
+ }
+ ++bsdunzip->argv;
+ --bsdunzip->argc;
+ bsdunzip_optind++;
+ }
+ } else {
+ /* Argument forbidden: fail if there is one. */
+ if (bsdunzip->argument != NULL) {
+ lafe_warnc(0,
+ "Option %s%s does not allow an argument",
+ long_prefix, match->name);
+ return ('?');
+ }
+ }
+ return (match->equivalent);
+ }
+
+ return (opt);
+}
--- /dev/null
+/* $NetBSD: getline.c,v 1.2 2014/09/16 17:23:50 christos Exp $ */
+
+/*-
+ * Copyright (c) 2011 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Christos Zoulas.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "bsdunzip_platform.h"
+#ifndef HAVE_GETLINE
+
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#ifdef HAVE_STDIO_H
+#include <stdio.h>
+#endif
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#ifdef HAVE_ERRNO_H
+#include <errno.h>
+#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+
+static ssize_t
+la_getdelim(char **buf, size_t *bufsiz, int delimiter, FILE *fp)
+{
+ char *ptr, *eptr;
+
+
+ if (*buf == NULL || *bufsiz == 0) {
+ *bufsiz = BUFSIZ;
+ if ((*buf = malloc(*bufsiz)) == NULL)
+ return -1;
+ }
+
+ for (ptr = *buf, eptr = *buf + *bufsiz;;) {
+ int c = fgetc(fp);
+ if (c == -1) {
+ if (feof(fp)) {
+ ssize_t diff = (ssize_t)(ptr - *buf);
+ if (diff != 0) {
+ *ptr = '\0';
+ return diff;
+ }
+ }
+ return -1;
+ }
+ *ptr++ = c;
+ if (c == delimiter) {
+ *ptr = '\0';
+ return ptr - *buf;
+ }
+ if (ptr + 2 >= eptr) {
+ char *nbuf;
+ size_t nbufsiz = *bufsiz * 2;
+ ssize_t d = ptr - *buf;
+ if ((nbuf = realloc(*buf, nbufsiz)) == NULL)
+ return -1;
+ *buf = nbuf;
+ *bufsiz = nbufsiz;
+ eptr = nbuf + nbufsiz;
+ ptr = nbuf + d;
+ }
+ }
+}
+
+ssize_t
+getline(char **buf, size_t *bufsiz, FILE *fp)
+{
+ return la_getdelim(buf, bufsiz, '\n', fp);
+}
+#endif
--- /dev/null
+/* SPDX-License-Identifier: BSD-3-Clause
+ *
+ * Copyright (c) 1991, 1993
+ * The Regents of the University of California. All rights reserved.
+ */
+
+#ifndef _SYS_QUEUE_H_
+#define _SYS_QUEUE_H_
+
+/*
+ * This file defines four types of data structures: singly-linked lists,
+ * singly-linked tail queues, lists and tail queues.
+ *
+ * A singly-linked list is headed by a single forward pointer. The elements
+ * are singly linked for minimum space and pointer manipulation overhead at
+ * the expense of O(n) removal for arbitrary elements. New elements can be
+ * added to the list after an existing element or at the head of the list.
+ * Elements being removed from the head of the list should use the explicit
+ * macro for this purpose for optimum efficiency. A singly-linked list may
+ * only be traversed in the forward direction. Singly-linked lists are ideal
+ * for applications with large datasets and few or no removals or for
+ * implementing a LIFO queue.
+ *
+ * A singly-linked tail queue is headed by a pair of pointers, one to the
+ * head of the list and the other to the tail of the list. The elements are
+ * singly linked for minimum space and pointer manipulation overhead at the
+ * expense of O(n) removal for arbitrary elements. New elements can be added
+ * to the list after an existing element, at the head of the list, or at the
+ * end of the list. Elements being removed from the head of the tail queue
+ * should use the explicit macro for this purpose for optimum efficiency.
+ * A singly-linked tail queue may only be traversed in the forward direction.
+ * Singly-linked tail queues are ideal for applications with large datasets
+ * and few or no removals or for implementing a FIFO queue.
+ *
+ * A list is headed by a single forward pointer (or an array of forward
+ * pointers for a hash table header). The elements are doubly linked
+ * so that an arbitrary element can be removed without a need to
+ * traverse the list. New elements can be added to the list before
+ * or after an existing element or at the head of the list. A list
+ * may be traversed in either direction.
+ *
+ * A tail queue is headed by a pair of pointers, one to the head of the
+ * list and the other to the tail of the list. The elements are doubly
+ * linked so that an arbitrary element can be removed without a need to
+ * traverse the list. New elements can be added to the list before or
+ * after an existing element, at the head of the list, or at the end of
+ * the list. A tail queue may be traversed in either direction.
+ *
+ * For details on the use of these macros, see the queue(3) manual page.
+ *
+ * Below is a summary of implemented functions where:
+ * + means the macro is available
+ * - means the macro is not available
+ * s means the macro is available but is slow (runs in O(n) time)
+ *
+ * SLIST LIST STAILQ TAILQ
+ * _HEAD + + + +
+ * _CLASS_HEAD + + + +
+ * _HEAD_INITIALIZER + + + +
+ * _ENTRY + + + +
+ * _CLASS_ENTRY + + + +
+ * _INIT + + + +
+ * _EMPTY + + + +
+ * _FIRST + + + +
+ * _NEXT + + + +
+ * _PREV - + - +
+ * _LAST - - + +
+ * _LAST_FAST - - - +
+ * _FOREACH + + + +
+ * _FOREACH_FROM + + + +
+ * _FOREACH_SAFE + + + +
+ * _FOREACH_FROM_SAFE + + + +
+ * _FOREACH_REVERSE - - - +
+ * _FOREACH_REVERSE_FROM - - - +
+ * _FOREACH_REVERSE_SAFE - - - +
+ * _FOREACH_REVERSE_FROM_SAFE - - - +
+ * _INSERT_HEAD + + + +
+ * _INSERT_BEFORE - + - +
+ * _INSERT_AFTER + + + +
+ * _INSERT_TAIL - - + +
+ * _CONCAT s s + +
+ * _REMOVE_AFTER + - + -
+ * _REMOVE_HEAD + - + -
+ * _REMOVE s + s +
+ * _SWAP + + + +
+ */
+#ifdef QUEUE_MACRO_DEBUG
+#warn Use QUEUE_MACRO_DEBUG_TRACE and/or QUEUE_MACRO_DEBUG_TRASH
+#define QUEUE_MACRO_DEBUG_TRACE
+#define QUEUE_MACRO_DEBUG_TRASH
+#endif
+
+#ifdef QUEUE_MACRO_DEBUG_TRACE
+/* Store the last 2 places the queue element or head was altered */
+struct qm_trace {
+ unsigned long lastline;
+ unsigned long prevline;
+ const char *lastfile;
+ const char *prevfile;
+};
+
+#define TRACEBUF struct qm_trace trace;
+#define TRACEBUF_INITIALIZER { __LINE__, 0, __FILE__, NULL } ,
+
+#define QMD_TRACE_HEAD(head) do { \
+ (head)->trace.prevline = (head)->trace.lastline; \
+ (head)->trace.prevfile = (head)->trace.lastfile; \
+ (head)->trace.lastline = __LINE__; \
+ (head)->trace.lastfile = __FILE__; \
+} while (0)
+
+#define QMD_TRACE_ELEM(elem) do { \
+ (elem)->trace.prevline = (elem)->trace.lastline; \
+ (elem)->trace.prevfile = (elem)->trace.lastfile; \
+ (elem)->trace.lastline = __LINE__; \
+ (elem)->trace.lastfile = __FILE__; \
+} while (0)
+
+#else /* !QUEUE_MACRO_DEBUG_TRACE */
+#define QMD_TRACE_ELEM(elem)
+#define QMD_TRACE_HEAD(head)
+#define TRACEBUF
+#define TRACEBUF_INITIALIZER
+#endif /* QUEUE_MACRO_DEBUG_TRACE */
+
+#ifdef QUEUE_MACRO_DEBUG_TRASH
+#define QMD_SAVELINK(name, link) void **name = (void *)&(link)
+#define TRASHIT(x) do {(x) = (void *)-1;} while (0)
+#define QMD_IS_TRASHED(x) ((x) == (void *)(intptr_t)-1)
+#else /* !QUEUE_MACRO_DEBUG_TRASH */
+#define QMD_SAVELINK(name, link)
+#define TRASHIT(x)
+#define QMD_IS_TRASHED(x) 0
+#endif /* QUEUE_MACRO_DEBUG_TRASH */
+
+#ifdef __cplusplus
+/*
+ * In C++ there can be structure lists and class lists:
+ */
+#define QUEUE_TYPEOF(type) type
+#else
+#define QUEUE_TYPEOF(type) struct type
+#endif
+
+/*
+ * Singly-linked List declarations.
+ */
+#define SLIST_HEAD(name, type) \
+struct name { \
+ struct type *slh_first; /* first element */ \
+}
+
+#define SLIST_CLASS_HEAD(name, type) \
+struct name { \
+ class type *slh_first; /* first element */ \
+}
+
+#define SLIST_HEAD_INITIALIZER(head) \
+ { NULL }
+
+#define SLIST_ENTRY(type) \
+struct { \
+ struct type *sle_next; /* next element */ \
+}
+
+#define SLIST_CLASS_ENTRY(type) \
+struct { \
+ class type *sle_next; /* next element */ \
+}
+
+/*
+ * Singly-linked List functions.
+ */
+#if (defined(_KERNEL) && defined(INVARIANTS))
+#define QMD_SLIST_CHECK_PREVPTR(prevp, elm) do { \
+ if (*(prevp) != (elm)) \
+ panic("Bad prevptr *(%p) == %p != %p", \
+ (prevp), *(prevp), (elm)); \
+} while (0)
+#else
+#define QMD_SLIST_CHECK_PREVPTR(prevp, elm)
+#endif
+
+#define SLIST_CONCAT(head1, head2, type, field) do { \
+ QUEUE_TYPEOF(type) *curelm = SLIST_FIRST(head1); \
+ if (curelm == NULL) { \
+ if ((SLIST_FIRST(head1) = SLIST_FIRST(head2)) != NULL) \
+ SLIST_INIT(head2); \
+ } else if (SLIST_FIRST(head2) != NULL) { \
+ while (SLIST_NEXT(curelm, field) != NULL) \
+ curelm = SLIST_NEXT(curelm, field); \
+ SLIST_NEXT(curelm, field) = SLIST_FIRST(head2); \
+ SLIST_INIT(head2); \
+ } \
+} while (0)
+
+#define SLIST_EMPTY(head) ((head)->slh_first == NULL)
+
+#define SLIST_FIRST(head) ((head)->slh_first)
+
+#define SLIST_FOREACH(var, head, field) \
+ for ((var) = SLIST_FIRST((head)); \
+ (var); \
+ (var) = SLIST_NEXT((var), field))
+
+#define SLIST_FOREACH_FROM(var, head, field) \
+ for ((var) = ((var) ? (var) : SLIST_FIRST((head))); \
+ (var); \
+ (var) = SLIST_NEXT((var), field))
+
+#define SLIST_FOREACH_SAFE(var, head, field, tvar) \
+ for ((var) = SLIST_FIRST((head)); \
+ (var) && ((tvar) = SLIST_NEXT((var), field), 1); \
+ (var) = (tvar))
+
+#define SLIST_FOREACH_FROM_SAFE(var, head, field, tvar) \
+ for ((var) = ((var) ? (var) : SLIST_FIRST((head))); \
+ (var) && ((tvar) = SLIST_NEXT((var), field), 1); \
+ (var) = (tvar))
+
+#define SLIST_FOREACH_PREVPTR(var, varp, head, field) \
+ for ((varp) = &SLIST_FIRST((head)); \
+ ((var) = *(varp)) != NULL; \
+ (varp) = &SLIST_NEXT((var), field))
+
+#define SLIST_INIT(head) do { \
+ SLIST_FIRST((head)) = NULL; \
+} while (0)
+
+#define SLIST_INSERT_AFTER(slistelm, elm, field) do { \
+ SLIST_NEXT((elm), field) = SLIST_NEXT((slistelm), field); \
+ SLIST_NEXT((slistelm), field) = (elm); \
+} while (0)
+
+#define SLIST_INSERT_HEAD(head, elm, field) do { \
+ SLIST_NEXT((elm), field) = SLIST_FIRST((head)); \
+ SLIST_FIRST((head)) = (elm); \
+} while (0)
+
+#define SLIST_NEXT(elm, field) ((elm)->field.sle_next)
+
+#define SLIST_REMOVE(head, elm, type, field) do { \
+ QMD_SAVELINK(oldnext, (elm)->field.sle_next); \
+ if (SLIST_FIRST((head)) == (elm)) { \
+ SLIST_REMOVE_HEAD((head), field); \
+ } \
+ else { \
+ QUEUE_TYPEOF(type) *curelm = SLIST_FIRST(head); \
+ while (SLIST_NEXT(curelm, field) != (elm)) \
+ curelm = SLIST_NEXT(curelm, field); \
+ SLIST_REMOVE_AFTER(curelm, field); \
+ } \
+ TRASHIT(*oldnext); \
+} while (0)
+
+#define SLIST_REMOVE_AFTER(elm, field) do { \
+ SLIST_NEXT(elm, field) = \
+ SLIST_NEXT(SLIST_NEXT(elm, field), field); \
+} while (0)
+
+#define SLIST_REMOVE_HEAD(head, field) do { \
+ SLIST_FIRST((head)) = SLIST_NEXT(SLIST_FIRST((head)), field); \
+} while (0)
+
+#define SLIST_REMOVE_PREVPTR(prevp, elm, field) do { \
+ QMD_SLIST_CHECK_PREVPTR(prevp, elm); \
+ *(prevp) = SLIST_NEXT(elm, field); \
+ TRASHIT((elm)->field.sle_next); \
+} while (0)
+
+#define SLIST_SWAP(head1, head2, type) do { \
+ QUEUE_TYPEOF(type) *swap_first = SLIST_FIRST(head1); \
+ SLIST_FIRST(head1) = SLIST_FIRST(head2); \
+ SLIST_FIRST(head2) = swap_first; \
+} while (0)
+
+/*
+ * Singly-linked Tail queue declarations.
+ */
+#define STAILQ_HEAD(name, type) \
+struct name { \
+ struct type *stqh_first;/* first element */ \
+ struct type **stqh_last;/* addr of last next element */ \
+}
+
+#define STAILQ_CLASS_HEAD(name, type) \
+struct name { \
+ class type *stqh_first; /* first element */ \
+ class type **stqh_last; /* addr of last next element */ \
+}
+
+#define STAILQ_HEAD_INITIALIZER(head) \
+ { NULL, &(head).stqh_first }
+
+#define STAILQ_ENTRY(type) \
+struct { \
+ struct type *stqe_next; /* next element */ \
+}
+
+#define STAILQ_CLASS_ENTRY(type) \
+struct { \
+ class type *stqe_next; /* next element */ \
+}
+
+/*
+ * Singly-linked Tail queue functions.
+ */
+#define STAILQ_CONCAT(head1, head2) do { \
+ if (!STAILQ_EMPTY((head2))) { \
+ *(head1)->stqh_last = (head2)->stqh_first; \
+ (head1)->stqh_last = (head2)->stqh_last; \
+ STAILQ_INIT((head2)); \
+ } \
+} while (0)
+
+#define STAILQ_EMPTY(head) ((head)->stqh_first == NULL)
+
+#define STAILQ_FIRST(head) ((head)->stqh_first)
+
+#define STAILQ_FOREACH(var, head, field) \
+ for((var) = STAILQ_FIRST((head)); \
+ (var); \
+ (var) = STAILQ_NEXT((var), field))
+
+#define STAILQ_FOREACH_FROM(var, head, field) \
+ for ((var) = ((var) ? (var) : STAILQ_FIRST((head))); \
+ (var); \
+ (var) = STAILQ_NEXT((var), field))
+
+#define STAILQ_FOREACH_SAFE(var, head, field, tvar) \
+ for ((var) = STAILQ_FIRST((head)); \
+ (var) && ((tvar) = STAILQ_NEXT((var), field), 1); \
+ (var) = (tvar))
+
+#define STAILQ_FOREACH_FROM_SAFE(var, head, field, tvar) \
+ for ((var) = ((var) ? (var) : STAILQ_FIRST((head))); \
+ (var) && ((tvar) = STAILQ_NEXT((var), field), 1); \
+ (var) = (tvar))
+
+#define STAILQ_INIT(head) do { \
+ STAILQ_FIRST((head)) = NULL; \
+ (head)->stqh_last = &STAILQ_FIRST((head)); \
+} while (0)
+
+#define STAILQ_INSERT_AFTER(head, tqelm, elm, field) do { \
+ if ((STAILQ_NEXT((elm), field) = STAILQ_NEXT((tqelm), field)) == NULL)\
+ (head)->stqh_last = &STAILQ_NEXT((elm), field); \
+ STAILQ_NEXT((tqelm), field) = (elm); \
+} while (0)
+
+#define STAILQ_INSERT_HEAD(head, elm, field) do { \
+ if ((STAILQ_NEXT((elm), field) = STAILQ_FIRST((head))) == NULL) \
+ (head)->stqh_last = &STAILQ_NEXT((elm), field); \
+ STAILQ_FIRST((head)) = (elm); \
+} while (0)
+
+#define STAILQ_INSERT_TAIL(head, elm, field) do { \
+ STAILQ_NEXT((elm), field) = NULL; \
+ *(head)->stqh_last = (elm); \
+ (head)->stqh_last = &STAILQ_NEXT((elm), field); \
+} while (0)
+
+#define STAILQ_LAST(head, type, field) \
+ (STAILQ_EMPTY((head)) ? NULL : \
+ __containerof((head)->stqh_last, \
+ QUEUE_TYPEOF(type), field.stqe_next))
+
+#define STAILQ_NEXT(elm, field) ((elm)->field.stqe_next)
+
+#define STAILQ_REMOVE(head, elm, type, field) do { \
+ QMD_SAVELINK(oldnext, (elm)->field.stqe_next); \
+ if (STAILQ_FIRST((head)) == (elm)) { \
+ STAILQ_REMOVE_HEAD((head), field); \
+ } \
+ else { \
+ QUEUE_TYPEOF(type) *curelm = STAILQ_FIRST(head); \
+ while (STAILQ_NEXT(curelm, field) != (elm)) \
+ curelm = STAILQ_NEXT(curelm, field); \
+ STAILQ_REMOVE_AFTER(head, curelm, field); \
+ } \
+ TRASHIT(*oldnext); \
+} while (0)
+
+#define STAILQ_REMOVE_AFTER(head, elm, field) do { \
+ if ((STAILQ_NEXT(elm, field) = \
+ STAILQ_NEXT(STAILQ_NEXT(elm, field), field)) == NULL) \
+ (head)->stqh_last = &STAILQ_NEXT((elm), field); \
+} while (0)
+
+#define STAILQ_REMOVE_HEAD(head, field) do { \
+ if ((STAILQ_FIRST((head)) = \
+ STAILQ_NEXT(STAILQ_FIRST((head)), field)) == NULL) \
+ (head)->stqh_last = &STAILQ_FIRST((head)); \
+} while (0)
+
+#define STAILQ_SWAP(head1, head2, type) do { \
+ QUEUE_TYPEOF(type) *swap_first = STAILQ_FIRST(head1); \
+ QUEUE_TYPEOF(type) **swap_last = (head1)->stqh_last; \
+ STAILQ_FIRST(head1) = STAILQ_FIRST(head2); \
+ (head1)->stqh_last = (head2)->stqh_last; \
+ STAILQ_FIRST(head2) = swap_first; \
+ (head2)->stqh_last = swap_last; \
+ if (STAILQ_EMPTY(head1)) \
+ (head1)->stqh_last = &STAILQ_FIRST(head1); \
+ if (STAILQ_EMPTY(head2)) \
+ (head2)->stqh_last = &STAILQ_FIRST(head2); \
+} while (0)
+
+
+/*
+ * List declarations.
+ */
+#define LIST_HEAD(name, type) \
+struct name { \
+ struct type *lh_first; /* first element */ \
+}
+
+#define LIST_CLASS_HEAD(name, type) \
+struct name { \
+ class type *lh_first; /* first element */ \
+}
+
+#define LIST_HEAD_INITIALIZER(head) \
+ { NULL }
+
+#define LIST_ENTRY(type) \
+struct { \
+ struct type *le_next; /* next element */ \
+ struct type **le_prev; /* address of previous next element */ \
+}
+
+#define LIST_CLASS_ENTRY(type) \
+struct { \
+ class type *le_next; /* next element */ \
+ class type **le_prev; /* address of previous next element */ \
+}
+
+/*
+ * List functions.
+ */
+
+#if (defined(_KERNEL) && defined(INVARIANTS))
+/*
+ * QMD_LIST_CHECK_HEAD(LIST_HEAD *head, LIST_ENTRY NAME)
+ *
+ * If the list is non-empty, validates that the first element of the list
+ * points back at 'head.'
+ */
+#define QMD_LIST_CHECK_HEAD(head, field) do { \
+ if (LIST_FIRST((head)) != NULL && \
+ LIST_FIRST((head))->field.le_prev != \
+ &LIST_FIRST((head))) \
+ panic("Bad list head %p first->prev != head", (head)); \
+} while (0)
+
+/*
+ * QMD_LIST_CHECK_NEXT(TYPE *elm, LIST_ENTRY NAME)
+ *
+ * If an element follows 'elm' in the list, validates that the next element
+ * points back at 'elm.'
+ */
+#define QMD_LIST_CHECK_NEXT(elm, field) do { \
+ if (LIST_NEXT((elm), field) != NULL && \
+ LIST_NEXT((elm), field)->field.le_prev != \
+ &((elm)->field.le_next)) \
+ panic("Bad link elm %p next->prev != elm", (elm)); \
+} while (0)
+
+/*
+ * QMD_LIST_CHECK_PREV(TYPE *elm, LIST_ENTRY NAME)
+ *
+ * Validates that the previous element (or head of the list) points to 'elm.'
+ */
+#define QMD_LIST_CHECK_PREV(elm, field) do { \
+ if (*(elm)->field.le_prev != (elm)) \
+ panic("Bad link elm %p prev->next != elm", (elm)); \
+} while (0)
+#else
+#define QMD_LIST_CHECK_HEAD(head, field)
+#define QMD_LIST_CHECK_NEXT(elm, field)
+#define QMD_LIST_CHECK_PREV(elm, field)
+#endif /* (_KERNEL && INVARIANTS) */
+
+#define LIST_CONCAT(head1, head2, type, field) do { \
+ QUEUE_TYPEOF(type) *curelm = LIST_FIRST(head1); \
+ if (curelm == NULL) { \
+ if ((LIST_FIRST(head1) = LIST_FIRST(head2)) != NULL) { \
+ LIST_FIRST(head2)->field.le_prev = \
+ &LIST_FIRST((head1)); \
+ LIST_INIT(head2); \
+ } \
+ } else if (LIST_FIRST(head2) != NULL) { \
+ while (LIST_NEXT(curelm, field) != NULL) \
+ curelm = LIST_NEXT(curelm, field); \
+ LIST_NEXT(curelm, field) = LIST_FIRST(head2); \
+ LIST_FIRST(head2)->field.le_prev = &LIST_NEXT(curelm, field); \
+ LIST_INIT(head2); \
+ } \
+} while (0)
+
+#define LIST_EMPTY(head) ((head)->lh_first == NULL)
+
+#define LIST_FIRST(head) ((head)->lh_first)
+
+#define LIST_FOREACH(var, head, field) \
+ for ((var) = LIST_FIRST((head)); \
+ (var); \
+ (var) = LIST_NEXT((var), field))
+
+#define LIST_FOREACH_FROM(var, head, field) \
+ for ((var) = ((var) ? (var) : LIST_FIRST((head))); \
+ (var); \
+ (var) = LIST_NEXT((var), field))
+
+#define LIST_FOREACH_SAFE(var, head, field, tvar) \
+ for ((var) = LIST_FIRST((head)); \
+ (var) && ((tvar) = LIST_NEXT((var), field), 1); \
+ (var) = (tvar))
+
+#define LIST_FOREACH_FROM_SAFE(var, head, field, tvar) \
+ for ((var) = ((var) ? (var) : LIST_FIRST((head))); \
+ (var) && ((tvar) = LIST_NEXT((var), field), 1); \
+ (var) = (tvar))
+
+#define LIST_INIT(head) do { \
+ LIST_FIRST((head)) = NULL; \
+} while (0)
+
+#define LIST_INSERT_AFTER(listelm, elm, field) do { \
+ QMD_LIST_CHECK_NEXT(listelm, field); \
+ if ((LIST_NEXT((elm), field) = LIST_NEXT((listelm), field)) != NULL)\
+ LIST_NEXT((listelm), field)->field.le_prev = \
+ &LIST_NEXT((elm), field); \
+ LIST_NEXT((listelm), field) = (elm); \
+ (elm)->field.le_prev = &LIST_NEXT((listelm), field); \
+} while (0)
+
+#define LIST_INSERT_BEFORE(listelm, elm, field) do { \
+ QMD_LIST_CHECK_PREV(listelm, field); \
+ (elm)->field.le_prev = (listelm)->field.le_prev; \
+ LIST_NEXT((elm), field) = (listelm); \
+ *(listelm)->field.le_prev = (elm); \
+ (listelm)->field.le_prev = &LIST_NEXT((elm), field); \
+} while (0)
+
+#define LIST_INSERT_HEAD(head, elm, field) do { \
+ QMD_LIST_CHECK_HEAD((head), field); \
+ if ((LIST_NEXT((elm), field) = LIST_FIRST((head))) != NULL) \
+ LIST_FIRST((head))->field.le_prev = &LIST_NEXT((elm), field);\
+ LIST_FIRST((head)) = (elm); \
+ (elm)->field.le_prev = &LIST_FIRST((head)); \
+} while (0)
+
+#define LIST_NEXT(elm, field) ((elm)->field.le_next)
+
+#define LIST_PREV(elm, head, type, field) \
+ ((elm)->field.le_prev == &LIST_FIRST((head)) ? NULL : \
+ __containerof((elm)->field.le_prev, \
+ QUEUE_TYPEOF(type), field.le_next))
+
+#define LIST_REMOVE(elm, field) do { \
+ QMD_SAVELINK(oldnext, (elm)->field.le_next); \
+ QMD_SAVELINK(oldprev, (elm)->field.le_prev); \
+ QMD_LIST_CHECK_NEXT(elm, field); \
+ QMD_LIST_CHECK_PREV(elm, field); \
+ if (LIST_NEXT((elm), field) != NULL) \
+ LIST_NEXT((elm), field)->field.le_prev = \
+ (elm)->field.le_prev; \
+ *(elm)->field.le_prev = LIST_NEXT((elm), field); \
+ TRASHIT(*oldnext); \
+ TRASHIT(*oldprev); \
+} while (0)
+
+#define LIST_SWAP(head1, head2, type, field) do { \
+ QUEUE_TYPEOF(type) *swap_tmp = LIST_FIRST(head1); \
+ LIST_FIRST((head1)) = LIST_FIRST((head2)); \
+ LIST_FIRST((head2)) = swap_tmp; \
+ if ((swap_tmp = LIST_FIRST((head1))) != NULL) \
+ swap_tmp->field.le_prev = &LIST_FIRST((head1)); \
+ if ((swap_tmp = LIST_FIRST((head2))) != NULL) \
+ swap_tmp->field.le_prev = &LIST_FIRST((head2)); \
+} while (0)
+
+/*
+ * Tail queue declarations.
+ */
+#define TAILQ_HEAD(name, type) \
+struct name { \
+ struct type *tqh_first; /* first element */ \
+ struct type **tqh_last; /* addr of last next element */ \
+ TRACEBUF \
+}
+
+#define TAILQ_CLASS_HEAD(name, type) \
+struct name { \
+ class type *tqh_first; /* first element */ \
+ class type **tqh_last; /* addr of last next element */ \
+ TRACEBUF \
+}
+
+#define TAILQ_HEAD_INITIALIZER(head) \
+ { NULL, &(head).tqh_first, TRACEBUF_INITIALIZER }
+
+#define TAILQ_ENTRY(type) \
+struct { \
+ struct type *tqe_next; /* next element */ \
+ struct type **tqe_prev; /* address of previous next element */ \
+ TRACEBUF \
+}
+
+#define TAILQ_CLASS_ENTRY(type) \
+struct { \
+ class type *tqe_next; /* next element */ \
+ class type **tqe_prev; /* address of previous next element */ \
+ TRACEBUF \
+}
+
+/*
+ * Tail queue functions.
+ */
+#if (defined(_KERNEL) && defined(INVARIANTS))
+/*
+ * QMD_TAILQ_CHECK_HEAD(TAILQ_HEAD *head, TAILQ_ENTRY NAME)
+ *
+ * If the tailq is non-empty, validates that the first element of the tailq
+ * points back at 'head.'
+ */
+#define QMD_TAILQ_CHECK_HEAD(head, field) do { \
+ if (!TAILQ_EMPTY(head) && \
+ TAILQ_FIRST((head))->field.tqe_prev != \
+ &TAILQ_FIRST((head))) \
+ panic("Bad tailq head %p first->prev != head", (head)); \
+} while (0)
+
+/*
+ * QMD_TAILQ_CHECK_TAIL(TAILQ_HEAD *head, TAILQ_ENTRY NAME)
+ *
+ * Validates that the tail of the tailq is a pointer to pointer to NULL.
+ */
+#define QMD_TAILQ_CHECK_TAIL(head, field) do { \
+ if (*(head)->tqh_last != NULL) \
+ panic("Bad tailq NEXT(%p->tqh_last) != NULL", (head)); \
+} while (0)
+
+/*
+ * QMD_TAILQ_CHECK_NEXT(TYPE *elm, TAILQ_ENTRY NAME)
+ *
+ * If an element follows 'elm' in the tailq, validates that the next element
+ * points back at 'elm.'
+ */
+#define QMD_TAILQ_CHECK_NEXT(elm, field) do { \
+ if (TAILQ_NEXT((elm), field) != NULL && \
+ TAILQ_NEXT((elm), field)->field.tqe_prev != \
+ &((elm)->field.tqe_next)) \
+ panic("Bad link elm %p next->prev != elm", (elm)); \
+} while (0)
+
+/*
+ * QMD_TAILQ_CHECK_PREV(TYPE *elm, TAILQ_ENTRY NAME)
+ *
+ * Validates that the previous element (or head of the tailq) points to 'elm.'
+ */
+#define QMD_TAILQ_CHECK_PREV(elm, field) do { \
+ if (*(elm)->field.tqe_prev != (elm)) \
+ panic("Bad link elm %p prev->next != elm", (elm)); \
+} while (0)
+#else
+#define QMD_TAILQ_CHECK_HEAD(head, field)
+#define QMD_TAILQ_CHECK_TAIL(head, headname)
+#define QMD_TAILQ_CHECK_NEXT(elm, field)
+#define QMD_TAILQ_CHECK_PREV(elm, field)
+#endif /* (_KERNEL && INVARIANTS) */
+
+#define TAILQ_CONCAT(head1, head2, field) do { \
+ if (!TAILQ_EMPTY(head2)) { \
+ *(head1)->tqh_last = (head2)->tqh_first; \
+ (head2)->tqh_first->field.tqe_prev = (head1)->tqh_last; \
+ (head1)->tqh_last = (head2)->tqh_last; \
+ TAILQ_INIT((head2)); \
+ QMD_TRACE_HEAD(head1); \
+ QMD_TRACE_HEAD(head2); \
+ } \
+} while (0)
+
+#define TAILQ_EMPTY(head) ((head)->tqh_first == NULL)
+
+#define TAILQ_FIRST(head) ((head)->tqh_first)
+
+#define TAILQ_FOREACH(var, head, field) \
+ for ((var) = TAILQ_FIRST((head)); \
+ (var); \
+ (var) = TAILQ_NEXT((var), field))
+
+#define TAILQ_FOREACH_FROM(var, head, field) \
+ for ((var) = ((var) ? (var) : TAILQ_FIRST((head))); \
+ (var); \
+ (var) = TAILQ_NEXT((var), field))
+
+#define TAILQ_FOREACH_SAFE(var, head, field, tvar) \
+ for ((var) = TAILQ_FIRST((head)); \
+ (var) && ((tvar) = TAILQ_NEXT((var), field), 1); \
+ (var) = (tvar))
+
+#define TAILQ_FOREACH_FROM_SAFE(var, head, field, tvar) \
+ for ((var) = ((var) ? (var) : TAILQ_FIRST((head))); \
+ (var) && ((tvar) = TAILQ_NEXT((var), field), 1); \
+ (var) = (tvar))
+
+#define TAILQ_FOREACH_REVERSE(var, head, headname, field) \
+ for ((var) = TAILQ_LAST((head), headname); \
+ (var); \
+ (var) = TAILQ_PREV((var), headname, field))
+
+#define TAILQ_FOREACH_REVERSE_FROM(var, head, headname, field) \
+ for ((var) = ((var) ? (var) : TAILQ_LAST((head), headname)); \
+ (var); \
+ (var) = TAILQ_PREV((var), headname, field))
+
+#define TAILQ_FOREACH_REVERSE_SAFE(var, head, headname, field, tvar) \
+ for ((var) = TAILQ_LAST((head), headname); \
+ (var) && ((tvar) = TAILQ_PREV((var), headname, field), 1); \
+ (var) = (tvar))
+
+#define TAILQ_FOREACH_REVERSE_FROM_SAFE(var, head, headname, field, tvar) \
+ for ((var) = ((var) ? (var) : TAILQ_LAST((head), headname)); \
+ (var) && ((tvar) = TAILQ_PREV((var), headname, field), 1); \
+ (var) = (tvar))
+
+#define TAILQ_INIT(head) do { \
+ TAILQ_FIRST((head)) = NULL; \
+ (head)->tqh_last = &TAILQ_FIRST((head)); \
+ QMD_TRACE_HEAD(head); \
+} while (0)
+
+#define TAILQ_INSERT_AFTER(head, listelm, elm, field) do { \
+ QMD_TAILQ_CHECK_NEXT(listelm, field); \
+ if ((TAILQ_NEXT((elm), field) = TAILQ_NEXT((listelm), field)) != NULL)\
+ TAILQ_NEXT((elm), field)->field.tqe_prev = \
+ &TAILQ_NEXT((elm), field); \
+ else { \
+ (head)->tqh_last = &TAILQ_NEXT((elm), field); \
+ QMD_TRACE_HEAD(head); \
+ } \
+ TAILQ_NEXT((listelm), field) = (elm); \
+ (elm)->field.tqe_prev = &TAILQ_NEXT((listelm), field); \
+ QMD_TRACE_ELEM(&(elm)->field); \
+ QMD_TRACE_ELEM(&(listelm)->field); \
+} while (0)
+
+#define TAILQ_INSERT_BEFORE(listelm, elm, field) do { \
+ QMD_TAILQ_CHECK_PREV(listelm, field); \
+ (elm)->field.tqe_prev = (listelm)->field.tqe_prev; \
+ TAILQ_NEXT((elm), field) = (listelm); \
+ *(listelm)->field.tqe_prev = (elm); \
+ (listelm)->field.tqe_prev = &TAILQ_NEXT((elm), field); \
+ QMD_TRACE_ELEM(&(elm)->field); \
+ QMD_TRACE_ELEM(&(listelm)->field); \
+} while (0)
+
+#define TAILQ_INSERT_HEAD(head, elm, field) do { \
+ QMD_TAILQ_CHECK_HEAD(head, field); \
+ if ((TAILQ_NEXT((elm), field) = TAILQ_FIRST((head))) != NULL) \
+ TAILQ_FIRST((head))->field.tqe_prev = \
+ &TAILQ_NEXT((elm), field); \
+ else \
+ (head)->tqh_last = &TAILQ_NEXT((elm), field); \
+ TAILQ_FIRST((head)) = (elm); \
+ (elm)->field.tqe_prev = &TAILQ_FIRST((head)); \
+ QMD_TRACE_HEAD(head); \
+ QMD_TRACE_ELEM(&(elm)->field); \
+} while (0)
+
+#define TAILQ_INSERT_TAIL(head, elm, field) do { \
+ QMD_TAILQ_CHECK_TAIL(head, field); \
+ TAILQ_NEXT((elm), field) = NULL; \
+ (elm)->field.tqe_prev = (head)->tqh_last; \
+ *(head)->tqh_last = (elm); \
+ (head)->tqh_last = &TAILQ_NEXT((elm), field); \
+ QMD_TRACE_HEAD(head); \
+ QMD_TRACE_ELEM(&(elm)->field); \
+} while (0)
+
+#define TAILQ_LAST(head, headname) \
+ (*(((struct headname *)((head)->tqh_last))->tqh_last))
+
+/*
+ * The FAST function is fast in that it causes no data access other
+ * then the access to the head. The standard LAST function above
+ * will cause a data access of both the element you want and
+ * the previous element. FAST is very useful for instances when
+ * you may want to prefetch the last data element.
+ */
+#define TAILQ_LAST_FAST(head, type, field) \
+ (TAILQ_EMPTY(head) ? NULL : __containerof((head)->tqh_last, QUEUE_TYPEOF(type), field.tqe_next))
+
+#define TAILQ_NEXT(elm, field) ((elm)->field.tqe_next)
+
+#define TAILQ_PREV(elm, headname, field) \
+ (*(((struct headname *)((elm)->field.tqe_prev))->tqh_last))
+
+#define TAILQ_PREV_FAST(elm, head, type, field) \
+ ((elm)->field.tqe_prev == &(head)->tqh_first ? NULL : \
+ __containerof((elm)->field.tqe_prev, QUEUE_TYPEOF(type), field.tqe_next))
+
+#define TAILQ_REMOVE(head, elm, field) do { \
+ QMD_SAVELINK(oldnext, (elm)->field.tqe_next); \
+ QMD_SAVELINK(oldprev, (elm)->field.tqe_prev); \
+ QMD_TAILQ_CHECK_NEXT(elm, field); \
+ QMD_TAILQ_CHECK_PREV(elm, field); \
+ if ((TAILQ_NEXT((elm), field)) != NULL) \
+ TAILQ_NEXT((elm), field)->field.tqe_prev = \
+ (elm)->field.tqe_prev; \
+ else { \
+ (head)->tqh_last = (elm)->field.tqe_prev; \
+ QMD_TRACE_HEAD(head); \
+ } \
+ *(elm)->field.tqe_prev = TAILQ_NEXT((elm), field); \
+ TRASHIT(*oldnext); \
+ TRASHIT(*oldprev); \
+ QMD_TRACE_ELEM(&(elm)->field); \
+} while (0)
+
+#define TAILQ_SWAP(head1, head2, type, field) do { \
+ QUEUE_TYPEOF(type) *swap_first = (head1)->tqh_first; \
+ QUEUE_TYPEOF(type) **swap_last = (head1)->tqh_last; \
+ (head1)->tqh_first = (head2)->tqh_first; \
+ (head1)->tqh_last = (head2)->tqh_last; \
+ (head2)->tqh_first = swap_first; \
+ (head2)->tqh_last = swap_last; \
+ if ((swap_first = (head1)->tqh_first) != NULL) \
+ swap_first->field.tqe_prev = &(head1)->tqh_first; \
+ else \
+ (head1)->tqh_last = &(head1)->tqh_first; \
+ if ((swap_first = (head2)->tqh_first) != NULL) \
+ swap_first->field.tqe_prev = &(head2)->tqh_first; \
+ else \
+ (head2)->tqh_last = &(head2)->tqh_first; \
+} while (0)
+
+#endif /* !_SYS_QUEUE_H_ */
--- /dev/null
+############################################
+#
+# How to build bsdunzip_test
+#
+############################################
+IF(ENABLE_UNZIP AND ENABLE_TEST)
+ SET(bsdunzip_test_SOURCES
+ ../../libarchive_fe/err.c
+ ../../test_utils/test_utils.c
+ ../../test_utils/test_main.c
+ test.h
+ test_0.c
+ test_basic.c
+ test_glob.c
+ test_singlefile.c
+ test_C.c
+ test_p.c
+ test_d.c
+ test_j.c
+ test_L.c
+ test_n.c
+ test_o.c
+ test_q.c
+ test_t.c
+ test_t_bad.c
+ test_version.c
+ test_x.c
+ test_Z1.c
+ test_P_encryption.c
+ )
+
+ #
+ # Register target
+ #
+ ADD_EXECUTABLE(bsdunzip_test ${bsdunzip_test_SOURCES})
+ IF(ENABLE_ACL)
+ SET(TEST_ACL_LIBS "")
+ IF(HAVE_LIBACL)
+ LIST(APPEND TEST_ACL_LIBS ${ACL_LIBRARY})
+ ENDIF(HAVE_LIBACL)
+ IF(HAVE_LIBRICHACL)
+ LIST(APPEND TEST_ACL_LIBS ${RICHACL_LIBRARY})
+ ENDIF(HAVE_LIBRICHACL)
+ TARGET_LINK_LIBRARIES(bsdunzip_test ${TEST_ACL_LIBS})
+ ENDIF(ENABLE_ACL)
+ SET_PROPERTY(TARGET bsdunzip_test PROPERTY COMPILE_DEFINITIONS LIST_H)
+
+ #
+ # Generate list.h by grepping DEFINE_TEST() lines out of the C sources.
+ #
+ GENERATE_LIST_H(${CMAKE_CURRENT_BINARY_DIR}/list.h
+ ${CMAKE_CURRENT_LIST_FILE} ${bsdunzip_test_SOURCES})
+ SET_PROPERTY(DIRECTORY APPEND PROPERTY INCLUDE_DIRECTORIES
+ ${CMAKE_CURRENT_BINARY_DIR})
+
+ # list.h has a line DEFINE_TEST(testname) for every
+ # test. We can use that to define the tests for cmake by
+ # defining a DEFINE_TEST macro and reading list.h in.
+ MACRO (DEFINE_TEST _testname)
+ ADD_TEST(
+ NAME bsdunzip_${_testname}
+ COMMAND bsdunzip_test -vv
+ -p $<TARGET_FILE:bsdunzip>
+ -r ${CMAKE_CURRENT_SOURCE_DIR}
+ ${_testname})
+ ENDMACRO (DEFINE_TEST _testname)
+
+ INCLUDE(${CMAKE_CURRENT_BINARY_DIR}/list.h)
+ INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR})
+ INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/test_utils)
+ INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/unzip/test)
+
+ # Experimental new test handling
+ ADD_CUSTOM_TARGET(run_bsdunzip_test
+ COMMAND bsdunzip_test -p $<TARGET_FILE:bsdunzip>
+ -r ${CMAKE_CURRENT_SOURCE_DIR}
+ -vv)
+ ADD_DEPENDENCIES(run_bsdunzip_test bsdunzip)
+ ADD_DEPENDENCIES(run_all_tests run_bsdunzip_test)
+ENDIF(ENABLE_UNZIP AND ENABLE_TEST)
+
--- /dev/null
+DEFINE_TEST(test_0)
+DEFINE_TEST(test_basic)
+DEFINE_TEST(test_C)
+DEFINE_TEST(test_d_before_zipfile)
+DEFINE_TEST(test_d_after_zipfile)
+DEFINE_TEST(test_glob)
+DEFINE_TEST(test_j)
+DEFINE_TEST(test_L)
+DEFINE_TEST(test_n)
+DEFINE_TEST(test_not_exist)
+DEFINE_TEST(test_o)
+DEFINE_TEST(test_p)
+DEFINE_TEST(test_P)
+DEFINE_TEST(test_q)
+DEFINE_TEST(test_singlefile)
+DEFINE_TEST(test_t_bad)
+DEFINE_TEST(test_t)
+DEFINE_TEST(test_version)
+DEFINE_TEST(test_x_single)
+DEFINE_TEST(test_x_multiple)
+DEFINE_TEST(test_x_multiple_with_d)
+DEFINE_TEST(test_Z1)
--- /dev/null
+/*
+ * Copyright (c) 2003-2017 Tim Kientzle
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+/* Every test program should #include "test.h" as the first thing. */
+
+#define KNOWNREF "test_basic.zip.uu"
+#define ENVBASE "BSDUNZIP" /* Prefix for environment variables. */
+#define PROGRAM "bsdunzip" /* Name of program being tested. */
+#define PROGRAM_ALIAS "unzip" /* Generic alias for program */
+#undef LIBRARY /* Not testing a library. */
+#undef EXTRA_DUMP /* How to dump extra data */
+#undef EXTRA_ERRNO /* How to dump errno */
+/* How to generate extra version info. */
+#define EXTRA_VERSION (systemf("%s --version", testprog) ? "" : "")
+
+#include "test_common.h"
--- /dev/null
+/*-
+ * Copyright (c) 2003-2007 Tim Kientzle
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#include "test.h"
+
+/*
+ * This first test does basic sanity checks on the environment. For
+ * most of these, we just exit on failure.
+ */
+#if !defined(_WIN32) || defined(__CYGWIN__)
+#define DEV_NULL "/dev/null"
+#else
+#define DEV_NULL "NUL"
+#endif
+
+DEFINE_TEST(test_0)
+{
+ struct stat st;
+
+ failure("File %s does not exist?!", testprog);
+ if (!assertEqualInt(0, stat(testprogfile, &st))) {
+ fprintf(stderr,
+ "\nFile %s does not exist; aborting test.\n\n",
+ testprog);
+ exit(1);
+ }
+
+ failure("%s is not executable?!", testprog);
+ if (!assert((st.st_mode & 0111) != 0)) {
+ fprintf(stderr,
+ "\nFile %s not executable; aborting test.\n\n",
+ testprog);
+ exit(1);
+ }
+
+ /* TODO: Ensure that our reference files are available. */
+}
--- /dev/null
+/*
+ * Copyright (c) 2023 Adrian Vovk
+ * 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"
+
+/* Test C arg - match case-insensitive */
+DEFINE_TEST(test_C)
+{
+ const char *reffile = "test_basic.zip";
+ int r;
+
+ extract_reference_file(reffile);
+ r = systemf("%s -C %s test_basic/caps >test.out 2>test.err", testprog, reffile);
+ assertEqualInt(0, r);
+ assertNonEmptyFile("test.out");
+ assertEmptyFile("test.err");
+
+ assertTextFileContents("contents CAPS\n", "test_basic/CAPS");
+}
--- /dev/null
+/*
+ * Copyright (c) 2023 Adrian Vovk
+ * 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"
+
+/* Test L arg - make names lowercase */
+DEFINE_TEST(test_L)
+{
+ const char *reffile = "test_basic.zip";
+ int r;
+
+ extract_reference_file(reffile);
+ r = systemf("%s -L %s >test.out 2>test.err", testprog, reffile);
+ assertEqualInt(0, r);
+ assertNonEmptyFile("test.out");
+ assertEmptyFile("test.err");
+
+ assertTextFileContents("contents a\n", "test_basic/a");
+ assertTextFileContents("contents b\n", "test_basic/b");
+ assertTextFileContents("contents c\n", "test_basic/c");
+ assertTextFileContents("contents CAPS\n", "test_basic/caps");
+}
--- /dev/null
+/*
+ * Copyright (c) 2023 Adrian Vovk
+ * 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"
+
+/* Test P arg - password protected */
+DEFINE_TEST(test_P)
+{
+ const char *reffile = "test_encrypted.zip";
+ int r;
+
+ extract_reference_file(reffile);
+ r = systemf("%s -P password %s >test.out 2>test.err", testprog, reffile);
+ assertEqualInt(0, r);
+ assertNonEmptyFile("test.out");
+ assertEmptyFile("test.err");
+
+ assertTextFileContents("plaintext\n", "encrypted/file.txt");
+}
--- /dev/null
+/*
+ * Copyright (c) 2023 Adrian Vovk
+ * 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"
+
+/* Test -Z1 arg - List filenames */
+DEFINE_TEST(test_Z1)
+{
+ const char *reffile = "test_basic.zip";
+ int r;
+
+ extract_reference_file(reffile);
+ r = systemf("%s -Z1 %s >test.out 2>test.err", testprog, reffile);
+ assertEqualInt(0, r);
+ assertNonEmptyFile("test.out");
+ assertTextFileContents("test_basic/\ntest_basic/a\ntest_basic/b\ntest_basic/c\ntest_basic/CAPS\n", "test.out");
+ assertEmptyFile("test.err");
+}
--- /dev/null
+/*
+ * Copyright (c) 2023 Adrian Vovk
+ * 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"
+
+/* This test just does a basic zip decompression */
+DEFINE_TEST(test_basic)
+{
+ const char *reffile = "test_basic.zip";
+ int r;
+
+ extract_reference_file(reffile);
+ r = systemf("%s %s >test.out 2>test.err", testprog, reffile);
+ assertEqualInt(0, r);
+ assertNonEmptyFile("test.out");
+ assertEmptyFile("test.err");
+
+ assertTextFileContents("contents a\n", "test_basic/a");
+ assertTextFileContents("contents b\n", "test_basic/b");
+ assertTextFileContents("contents c\n", "test_basic/c");
+ assertTextFileContents("contents CAPS\n", "test_basic/CAPS");
+}
--- /dev/null
+begin 644 test_basic.zip
+M4$L#!!0``````,J0MU8````````````````+`"``=&5S=%]B87-I8R]55`T`
+M!]PX;63U.6UDW#AM9'5X"P`!!.@#```$Z`,``%!+`P04``@`"``)C;=6````
+M```````+````#``@`'1E<W1?8F%S:6,O8554#0`'PS)M9/HY;603.&UD=7@+
+M``$$Z`,```3H`P``2\[/*TG-*RE62.0"`%!+!PAY:C`$#0````L```!02P,$
+M%``(``@`#HVW5@``````````"P````P`(`!T97-T7V)A<VEC+V)55`T`!\TR
+M;63Z.6UD.SAM9'5X"P`!!.@#```$Z`,``$O.SRM)S2LI5DCB`@!02P<(NCD=
+M+PT````+````4$L#!!0`"``(`%*-MU8```````````L````,`"``=&5S=%]B
+M87-I8R]C550-``=,,VUDTSAM9,\X;61U>`L``03H`P``!.@#``!+SL\K2<TK
+M*59(Y@(`4$L'"/L(!C8-````"P```%!+`P04``@`"`#*D+=6```````````.
+M````#P`@`'1E<W1?8F%S:6,O0T%04U54#0`'W#AM9/HY;63<.&UD=7@+``$$
+MZ`,```3H`P``2\[/*TG-*RE6<'8,".8"`%!+!P@I4T'W$`````X```!02P$"
+M%`,4``````#*D+=6````````````````"P`@````````````[4$`````=&5S
+M=%]B87-I8R]55`T`!]PX;63U.6UDW#AM9'5X"P`!!.@#```$Z`,``%!+`0(4
+M`Q0`"``(``F-MU9Y:C`$#0````L````,`"````````````"D@4D```!T97-T
+M7V)A<VEC+V%55`T`!\,R;63Z.6UD$SAM9'5X"P`!!.@#```$Z`,``%!+`0(4
+M`Q0`"``(``Z-MU:Z.1TO#0````L````,`"````````````"D@;````!T97-T
+M7V)A<VEC+V)55`T`!\TR;63Z.6UD.SAM9'5X"P`!!.@#```$Z`,``%!+`0(4
+M`Q0`"``(`%*-MU;["`8V#0````L````,`"````````````"D@1<!``!T97-T
+M7V)A<VEC+V-55`T`!TPS;633.&UDSSAM9'5X"P`!!.@#```$Z`,``%!+`0(4
+M`Q0`"``(`,J0MU8I4T'W$`````X````/`"````````````"D@7X!``!T97-T
+M7V)A<VEC+T-!4%-55`T`!]PX;63Z.6UDW#AM9'5X"P`!!.@#```$Z`,``%!+
+4!08`````!0`%`,0!``#K`0``````
+`
+end
--- /dev/null
+/*
+ * Copyright (c) 2023 Adrian Vovk
+ * 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"
+
+/* Test d arg - extract to target dir - before zipfile argument */
+DEFINE_TEST(test_d_before_zipfile)
+{
+ const char *reffile = "test_basic.zip";
+ int r;
+
+ extract_reference_file(reffile);
+ r = systemf("%s -d foobar %s >test.out 2>test.err", testprog, reffile);
+ assertEqualInt(0, r);
+ assertNonEmptyFile("test.out");
+ assertEmptyFile("test.err");
+
+ assertTextFileContents("contents a\n", "foobar/test_basic/a");
+ assertTextFileContents("contents b\n", "foobar/test_basic/b");
+ assertTextFileContents("contents c\n", "foobar/test_basic/c");
+ assertTextFileContents("contents CAPS\n", "foobar/test_basic/CAPS");
+}
+
+/* Test d arg - extract to target dir - after zipfile argument */
+DEFINE_TEST(test_d_after_zipfile)
+{
+ const char *reffile = "test_basic.zip";
+ int r;
+
+ extract_reference_file(reffile);
+ r = systemf("%s %s -d foobar >test.out 2>test.err", testprog, reffile);
+ assertEqualInt(0, r);
+ assertNonEmptyFile("test.out");
+ assertEmptyFile("test.err");
+
+ assertTextFileContents("contents a\n", "foobar/test_basic/a");
+ assertTextFileContents("contents b\n", "foobar/test_basic/b");
+ assertTextFileContents("contents c\n", "foobar/test_basic/c");
+ assertTextFileContents("contents CAPS\n", "foobar/test_basic/CAPS");
+}
--- /dev/null
+begin 644 test_encrypted.zip
+M4$L#!!0``````'*1MU8````````````````*`"``96YC<GEP=&5D+U54#0`'
+M&#IM9!LZ;608.FUD=7@+``$$Z`,```3H`P``4$L#!!0`"0!C`'*1MU8`````
+M``````H````2`"L`96YC<GEP=&5D+V9I;&4N='AT550-``<8.FUD&#IM9!@Z
+M;61U>`L``03H`P``!.@#```!F0<``@!!10,(`*_-)-RYPDYFJ$Q9+L<I#-><
+M'#C?XVBR9/=H?7U\LC!A^8<6[&CO#PM02P<(`````"@````*````4$L!`A0#
+M%```````<I&W5@````````````````H`(````````````.U!`````&5N8W)Y
+M<'1E9"]55`T`!Q@Z;60;.FUD&#IM9'5X"P`!!.@#```$Z`,``%!+`0(4`Q0`
+M"0!C`'*1MU8`````*`````H````2`"L```````````"D@4@```!E;F-R>7!T
+M960O9FEL92YT>'155`T`!Q@Z;608.FUD&#IM9'5X"P`!!.@#```$Z`,```&9
+?!P`"`$%%`P@`4$L%!@`````"``(`PP```-L`````````
+`
+end
--- /dev/null
+/*
+ * Copyright (c) 2023 Adrian Vovk
+ * 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"
+
+/* Test that the glob works */
+DEFINE_TEST(test_glob)
+{
+ const char *reffile = "test_basic.zip";
+ int r;
+
+ extract_reference_file(reffile);
+ r = systemf("%s %s test_*/[ab] >test.out 2>test.err", testprog, reffile);
+ assertEqualInt(0, r);
+ assertNonEmptyFile("test.out");
+ assertEmptyFile("test.err");
+
+ assertTextFileContents("contents a\n", "test_basic/a");
+ assertTextFileContents("contents b\n", "test_basic/b");
+ assertFileNotExists("test_basic/c");
+ assertFileNotExists("test_basic/CAPS");
+}
--- /dev/null
+/*
+ * Copyright (c) 2023 Adrian Vovk
+ * 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"
+
+/* Test j arg - don't make directories */
+DEFINE_TEST(test_j)
+{
+ const char *reffile = "test_basic.zip";
+ int r;
+
+ extract_reference_file(reffile);
+ r = systemf("%s -j %s >test.out 2>test.err", testprog, reffile);
+ assertEqualInt(0, r);
+ assertNonEmptyFile("test.out");
+ assertEmptyFile("test.err");
+
+ assertTextFileContents("contents a\n", "a");
+ assertTextFileContents("contents b\n", "b");
+ assertTextFileContents("contents c\n", "c");
+ assertTextFileContents("contents CAPS\n", "CAPS");
+}
--- /dev/null
+/*
+ * Copyright (c) 2023 Adrian Vovk
+ * 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"
+
+/* Test n arg - don't overrite existing files */
+DEFINE_TEST(test_n)
+{
+ const char *reffile = "test_basic.zip";
+ int r;
+
+ assertMakeDir("test_basic", 0755);
+ assertMakeFile("test_basic/a", 0644, "orig a\n");
+ assertMakeFile("test_basic/b", 0644, "orig b\n");
+
+ extract_reference_file(reffile);
+ r = systemf("%s -n %s >test.out 2>test.err", testprog, reffile);
+ assertEqualInt(0, r);
+ assertNonEmptyFile("test.out");
+ assertEmptyFile("test.err");
+
+ assertTextFileContents("orig a\n", "test_basic/a");
+ assertTextFileContents("orig b\n", "test_basic/b");
+ assertTextFileContents("contents c\n", "test_basic/c");
+ assertTextFileContents("contents CAPS\n", "test_basic/CAPS");
+}
--- /dev/null
+/*
+ * Copyright (c) 2023 Adrian Vovk
+ * 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"
+
+/* Test non existant file */
+DEFINE_TEST(test_not_exist)
+{
+ int r;
+ r = systemf("%s nonexist.zip >test.out 2>test.err", testprog);
+ assert(r != 0);
+ assertEmptyFile("test.out");
+ assertNonEmptyFile("test.err");
+}
--- /dev/null
+/*
+ * Copyright (c) 2023 Adrian Vovk
+ * 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"
+
+/* Test o arg - overrite existing files */
+DEFINE_TEST(test_o)
+{
+ const char *reffile = "test_basic.zip";
+ int r;
+
+ assertMakeDir("test_basic", 0755);
+ assertMakeFile("test_basic/a", 0644, "orig a\n");
+ assertMakeFile("test_basic/b", 0644, "orig b\n");
+
+ extract_reference_file(reffile);
+ r = systemf("%s -o %s >test.out 2>test.err", testprog, reffile);
+ assertEqualInt(0, r);
+ assertEmptyFile("test.err");
+
+ assertTextFileContents("contents a\n", "test_basic/a");
+ assertTextFileContents("contents b\n", "test_basic/b");
+ assertTextFileContents("contents c\n", "test_basic/c");
+ assertTextFileContents("contents CAPS\n", "test_basic/CAPS");
+}
--- /dev/null
+/*
+ * Copyright (c) 2023 Adrian Vovk
+ * 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"
+
+/* Test p arg - Print to stdout */
+DEFINE_TEST(test_p)
+{
+ const char *reffile = "test_basic.zip";
+ int r;
+
+ extract_reference_file(reffile);
+ r = systemf("%s -p %s >test.out 2>test.err", testprog, reffile);
+ assertEqualInt(0, r);
+ assertTextFileContents("contents a\ncontents b\ncontents c\ncontents CAPS\n", "test.out");
+ assertEmptyFile("test.err");
+}
--- /dev/null
+/*
+ * Copyright (c) 2023 Adrian Vovk
+ * 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"
+
+/* Test q arg - Quiet */
+DEFINE_TEST(test_q)
+{
+ const char *reffile = "test_basic.zip";
+ int r;
+
+ extract_reference_file(reffile);
+ r = systemf("%s -q %s >test.out 2>test.err", testprog, reffile);
+ assertEqualInt(0, r);
+ assertEmptyFile("test.out");
+ assertEmptyFile("test.err");
+
+ assertTextFileContents("contents a\n", "test_basic/a");
+ assertTextFileContents("contents b\n", "test_basic/b");
+ assertTextFileContents("contents c\n", "test_basic/c");
+ assertTextFileContents("contents CAPS\n", "test_basic/CAPS");
+}
--- /dev/null
+/*
+ * Copyright (c) 2023 Adrian Vovk
+ * 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"
+
+/* Ensure single-file zips work */
+DEFINE_TEST(test_singlefile)
+{
+ const char *reffile = "test_singlefile.zip";
+ int r;
+
+ extract_reference_file(reffile);
+ r = systemf("%s %s >test.out 2>test.err", testprog, reffile);
+ assertEqualInt(0, r);
+ assertNonEmptyFile("test.out");
+ assertEmptyFile("test.err");
+
+ assertTextFileContents("hello\n", "file.txt");
+}
--- /dev/null
+begin 644 test_singlefile.zip
+M4$L#!!0`"``(`&"6MU8```````````8````(`"``9FEL92YT>'155`T`!U1#
+M;6140VUD5$-M9'5X"P`!!.@#```$Z`,``,M(S<G)YP(`4$L'""`P.C8(````
+M!@```%!+`0(4`Q0`"``(`&"6MU8@,#HV"`````8````(`"````````````"D
+M@0````!F:6QE+G1X=%54#0`'5$-M9%1#;6140VUD=7@+``$$Z`,```3H`P``
+64$L%!@`````!``$`5@```%X`````````
+`
+end
--- /dev/null
+/*
+ * Copyright (c) 2023 Adrian Vovk
+ * 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"
+
+/* Test t arg - Test zip contents */
+DEFINE_TEST(test_t)
+{
+ const char *reffile = "test_basic.zip";
+ int r;
+
+ extract_reference_file(reffile);
+ r = systemf("%s -t %s >test.out 2>test.err", testprog, reffile);
+ assertEqualInt(0, r);
+ assertNonEmptyFile("test.out");
+ assertEmptyFile("test.err");
+}
--- /dev/null
+/*
+ * Copyright (c) 2023 Adrian Vovk
+ * 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"
+
+/* Test t arg - Test zip contents, but fail! */
+DEFINE_TEST(test_t_bad)
+{
+ const char *reffile = "test_t_bad.zip";
+ int r;
+
+ extract_reference_file(reffile);
+ r = systemf("%s -t %s >test.out 2>test.err", testprog, reffile);
+ assert(r != 0);
+ assertNonEmptyFile("test.out");
+ assertNonEmptyFile("test.err");
+}
--- /dev/null
+begin 644 test_t_bad.zip
+M4$L#!!0``````,J0MU8````````````````+`"``=&5S=%]B87-I8R]55`T`
+M!]PX;63U.6UDW#AM9'5X"P`!!.@#```$Z`,``%!+`P04``@`"``)C;=6````
+M```````+````#``@`'1E<W1?8F%S:6,O85546``'PS)M9/HY;603.&UD=7@+
+M``$$Z`,```3H`P``2\[/*TG-*RE62.0"`%!+!PAY:C`$#0````L```!02P,$
+M%&$(``@`#HVW5@``````````"P````P`(`!T97-T7V)A<VEC+V)55`T`!\TR
+M;63Z.6UD.SAM9'5X"P`!!.@#```$Z`,``$O.SRM)S2LI5DCB`@!02P<(NCD=
+M+PT````+````4$L#!!0`"``(`%*-MU8```````````L````,`"``=&5S=%]B
+M87-I8R]C550-``=,,VUDTSAM9,\X;61U>`L``03H`P``!.@#``!+SL\K2<TK
+M*59(Y@(`4$L'"/L(!C8-````"P```%!+`P04``@`"`#*D+=6```````````.
+M````#P`@`'1E<W1?8F%S:6,O0T%04U54#0`'W#AM9/HY;63<.&UD=7@+``$$
+MZ`,```3H`P``2\[/*TG-*RE6<'8,".8"`%!+!P@I4T'W$`````X```!02P$"
+M%`,4``````#*D+=6````````````````"P`@````````````[4(`````=&5S
+M=%]B87-I8R]55`T`!]PX;63U.6UDW#AM9'5X"P`!!.@#```$Z`,``%!+`0(4
+M`Q0`"``(``F-MU9Y:C`$#0````L````,`"````````````"D@4D```!T97-T
+M7V)A<VEC+V%55`T`!\,R;63Z.6UD$SAM9'5X"P`!!.@#```$Z`,``%!+`0(4
+M`Q0`"``(``Z-MU:Z.1TO#0````L````,`"````````````"D@;````!T97-T
+M7V)A<VEC+V)55`T`!\TR;63Z.6UD.SAM9'5X"P`!!.@#```$Z`,``%!+`0(4
+M`Q0`"``(`%*-MU;["`8V#0````L````,`"````````````"D@1<!``!T97-T
+M7V)A<VEC+V-55`T`!TPS;633.&UDSSAM9'5X"P`!!.@#```$Z`,``%!+`0(4
+M`Q0`"``(`,J0MU8I4T'W$`````X````/`"````````````"D@7X!``!T97-T
+M7V)A<VEC+T-!4%-55`T`!]PX;63Z.6UDW#AM9'5X"P`!!.@#```$Z`,``%!+
+5!08`````!0`%`,0!``#K`0`````*
+`
+end
--- /dev/null
+/*-
+ * Copyright (c) 2003-2017 Tim Kientzle
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#include "test.h"
+
+/*
+ * Test that --version option works and generates reasonable output.
+ */
+
+DEFINE_TEST(test_version)
+{
+ assertVersion(testprog, "bsdunzip");
+}
--- /dev/null
+/*
+ * Copyright (c) 2023 Adrian Vovk
+ * 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"
+
+/* Test x arg with single exclude path */
+DEFINE_TEST(test_x_single)
+{
+ const char *reffile = "test_basic.zip";
+ int r;
+
+ extract_reference_file(reffile);
+ r = systemf("%s %s -x test_basic/c >test.out 2>test.err", testprog, reffile);
+ assertEqualInt(0, r);
+ assertNonEmptyFile("test.out");
+ assertEmptyFile("test.err");
+
+ assertTextFileContents("contents a\n", "test_basic/a");
+ assertTextFileContents("contents b\n", "test_basic/b");
+ assertFileNotExists("test_basic/c");
+ assertTextFileContents("contents CAPS\n", "test_basic/CAPS");
+}
+
+/* Test x arg with multiple exclude paths */
+DEFINE_TEST(test_x_multiple)
+{
+ const char *reffile = "test_basic.zip";
+ int r;
+
+ extract_reference_file(reffile);
+ r = systemf("%s %s -x test_basic/c test_basic/b >test.out 2>test.err", testprog, reffile);
+ assertEqualInt(0, r);
+ assertNonEmptyFile("test.out");
+ assertEmptyFile("test.err");
+
+ assertTextFileContents("contents a\n", "test_basic/a");
+ assertFileNotExists("test_basic/b");
+ assertFileNotExists("test_basic/c");
+ assertTextFileContents("contents CAPS\n", "test_basic/CAPS");
+}
+
+/* Test x arg with multiple exclude paths and a d arg afterwards */
+DEFINE_TEST(test_x_multiple_with_d)
+{
+ const char *reffile = "test_basic.zip";
+ int r;
+
+ extract_reference_file(reffile);
+ r = systemf("%s %s -x test_basic/c test_basic/b -d foobar >test.out 2>test.err", testprog, reffile);
+ assertEqualInt(0, r);
+ assertNonEmptyFile("test.out");
+ assertEmptyFile("test.err");
+
+ assertTextFileContents("contents a\n", "foobar/test_basic/a");
+ assertFileNotExists("foobar/test_basic/b");
+ assertFileNotExists("foobar/test_basic/c");
+ assertTextFileContents("contents CAPS\n", "foobar/test_basic/CAPS");
+}