Browse Source

Expat 2.3.0

Source commit: ff3fee426e0a207c2afcd27e6290b9d2bd2cd726
Martin Prikryl 4 năm trước cách đây
mục cha
commit
fc92734b9b
37 tập tin đã thay đổi với 1421 bổ sung817 xóa
  1. 6 6
      libs/expat/CMake.README
  2. 17 10
      libs/expat/CMakeLists.txt
  3. 50 1
      libs/expat/Changes
  4. 12 1
      libs/expat/Makefile.am
  5. 93 14
      libs/expat/Makefile.in
  6. 74 6
      libs/expat/README.md
  7. 6 11
      libs/expat/aclocal.m4
  8. 67 0
      libs/expat/cmake/autotools/expat-config-version.cmake.in
  9. 19 0
      libs/expat/cmake/autotools/expat-noconfig.cmake.in
  10. 25 0
      libs/expat/cmake/autotools/expat-package-init.cmake
  11. 94 0
      libs/expat/cmake/autotools/expat.cmake
  12. 235 275
      libs/expat/configure
  13. 58 10
      libs/expat/configure.ac
  14. 149 124
      libs/expat/conftools/config.guess
  15. 180 175
      libs/expat/conftools/config.sub
  16. 80 68
      libs/expat/conftools/install-sh
  17. 5 3
      libs/expat/conftools/test-driver
  18. 12 2
      libs/expat/doc/Makefile.in
  19. 23 7
      libs/expat/doc/xmlwf.1
  20. 33 7
      libs/expat/doc/xmlwf.xml
  21. 12 2
      libs/expat/examples/Makefile.in
  22. 9 7
      libs/expat/expat_config.h
  23. 6 4
      libs/expat/expat_config.h.in
  24. 12 2
      libs/expat/lib/Makefile.in
  25. 6 4
      libs/expat/lib/expat.h
  26. 4 9
      libs/expat/lib/siphash.h
  27. 12 12
      libs/expat/lib/xmlparse.c
  28. 1 9
      libs/expat/lib/xmltok.c
  29. 14 3
      libs/expat/tests/Makefile.in
  30. 12 2
      libs/expat/tests/benchmark/Makefile.in
  31. 19 10
      libs/expat/tests/minicheck.c
  32. 13 22
      libs/expat/tests/runtests.c
  33. 1 1
      libs/expat/win32/README.txt
  34. 1 1
      libs/expat/win32/expat.iss
  35. 12 2
      libs/expat/xmlwf/Makefile.in
  36. 41 7
      libs/expat/xmlwf/xmlwf.c
  37. 8 0
      libs/expat/xmlwf/xmlwf_helpgen.py

+ 6 - 6
libs/expat/CMake.README

@@ -3,25 +3,25 @@
 The cmake based buildsystem for expat works on Windows (cygwin, mingw, Visual
 The cmake based buildsystem for expat works on Windows (cygwin, mingw, Visual
 Studio) and should work on all other platform cmake supports.
 Studio) and should work on all other platform cmake supports.
 
 
-Assuming ~/expat-2.2.10 is the source directory of expat, add a subdirectory
+Assuming ~/expat-2.3.0 is the source directory of expat, add a subdirectory
 build and change into that directory:
 build and change into that directory:
-~/expat-2.2.10$ mkdir build && cd build
-~/expat-2.2.10/build$
+~/expat-2.3.0$ mkdir build && cd build
+~/expat-2.3.0/build$
 
 
 From that directory, call cmake first, then call make, make test and
 From that directory, call cmake first, then call make, make test and
 make install in the usual way:
 make install in the usual way:
-~/expat-2.2.10/build$ cmake ..
+~/expat-2.3.0/build$ cmake ..
 -- The C compiler identification is GNU
 -- The C compiler identification is GNU
 -- The CXX compiler identification is GNU
 -- The CXX compiler identification is GNU
 ....
 ....
 -- Configuring done
 -- Configuring done
 -- Generating done
 -- Generating done
--- Build files have been written to: /home/patrick/expat-2.2.10/build
+-- Build files have been written to: /home/patrick/expat-2.3.0/build
 
 
 If you want to specify the install location for your files, append
 If you want to specify the install location for your files, append
 -DCMAKE_INSTALL_PREFIX=/your/install/path to the cmake call.
 -DCMAKE_INSTALL_PREFIX=/your/install/path to the cmake call.
 
 
-~/expat-2.2.10/build$ make && make test && make install
+~/expat-2.3.0/build$ make && make test && make install
 Scanning dependencies of target expat
 Scanning dependencies of target expat
 [  5%] Building C object CMakeFiles/expat.dir/lib/xmlparse.c.o
 [  5%] Building C object CMakeFiles/expat.dir/lib/xmlparse.c.o
 [ 11%] Building C object CMakeFiles/expat.dir/lib/xmlrole.c.o
 [ 11%] Building C object CMakeFiles/expat.dir/lib/xmlrole.c.o

+ 17 - 10
libs/expat/CMakeLists.txt

@@ -33,7 +33,7 @@ endif()
 
 
 project(expat
 project(expat
     VERSION
     VERSION
-        2.2.10
+        2.3.0
     LANGUAGES
     LANGUAGES
         C
         C
 )
 )
@@ -47,11 +47,6 @@ set(PACKAGE_TARNAME "${PACKAGE_NAME}")
 include(CMakePackageConfigHelpers)
 include(CMakePackageConfigHelpers)
 include(GNUInstallDirs)
 include(GNUInstallDirs)
 
 
-#
-# Detect use by means of add_subdirectory
-#
-get_directory_property(_EXPAT_PARENT_DIRECTORY PARENT_DIRECTORY)
-
 #
 #
 # Configuration defaults
 # Configuration defaults
 #
 #
@@ -117,6 +112,11 @@ if(MSVC OR _EXPAT_HELP)
     set(EXPAT_MSVC_STATIC_CRT OFF CACHE BOOL "Use /MT flag (static CRT) when compiling in MSVC")
     set(EXPAT_MSVC_STATIC_CRT OFF CACHE BOOL "Use /MT flag (static CRT) when compiling in MSVC")
 endif()
 endif()
 
 
+if(EXPAT_BUILD_TESTS)
+    # We have to call enable_language() before modifying any CMAKE_CXX_* variables
+    enable_language(CXX)
+endif()
+
 #
 #
 # Environment checks
 # Environment checks
 #
 #
@@ -129,6 +129,14 @@ if(EXPAT_WITH_LIBBSD)
     endif()
     endif()
 endif()
 endif()
 
 
+if(MSVC)
+    # Minimum supported MSVC version is 1910 = Visual Studio 15.0/2017
+    # See also https://cmake.org/cmake/help/latest/variable/MSVC_VERSION.html
+    if(MSVC_VERSION VERSION_LESS 1910)
+        message(SEND_ERROR "MSVC_VERSION ${MSVC_VERSION} is not a supported Visual Studio compiler version. Please use Visual Studio 15.0/2017 or any later version.")
+    endif()
+endif()
+
 macro(_expat_copy_bool_int source_ref dest_ref)
 macro(_expat_copy_bool_int source_ref dest_ref)
     if(${source_ref})
     if(${source_ref})
         set(${dest_ref} 1)
         set(${dest_ref} 1)
@@ -327,9 +335,9 @@ if(EXPAT_WITH_LIBBSD)
     target_link_libraries(expat ${LIB_BSD})
     target_link_libraries(expat ${LIB_BSD})
 endif()
 endif()
 
 
-set(LIBCURRENT 7)    # sync
-set(LIBREVISION 12)  # with
-set(LIBAGE 6)        # configure.ac!
+set(LIBCURRENT 8)   # sync
+set(LIBREVISION 0)  # with
+set(LIBAGE 7)       # configure.ac!
 math(EXPR LIBCURRENT_MINUS_AGE "${LIBCURRENT} - ${LIBAGE}")
 math(EXPR LIBCURRENT_MINUS_AGE "${LIBCURRENT} - ${LIBAGE}")
 
 
 set_property(TARGET expat PROPERTY OUTPUT_NAME "${_EXPAT_OUTPUT_NAME}")
 set_property(TARGET expat PROPERTY OUTPUT_NAME "${_EXPAT_OUTPUT_NAME}")
@@ -423,7 +431,6 @@ endif()
 #
 #
 if(EXPAT_BUILD_TESTS)
 if(EXPAT_BUILD_TESTS)
     ## these are unittests that can be run on any platform
     ## these are unittests that can be run on any platform
-    enable_language(CXX)
     enable_testing()
     enable_testing()
 
 
     set(test_SRCS
     set(test_SRCS

+ 50 - 1
libs/expat/Changes

@@ -2,6 +2,55 @@ NOTE: We are looking for help with a few things:
       https://github.com/libexpat/libexpat/labels/help%20wanted
       https://github.com/libexpat/libexpat/labels/help%20wanted
       If you can help, please get in touch.  Thanks!
       If you can help, please get in touch.  Thanks!
 
 
+Release 2.3.0 Thu March 25 2021
+        Bug fixes:
+            #438  When calling XML_ParseBuffer without a prior successful call to
+                    XML_GetBuffer as a user, no longer trigger undefined behavior
+                    (by adding an integer to a NULL pointer) but rather return
+                    XML_STATUS_ERROR and set the error code to (new) code
+                    XML_ERROR_NO_BUFFER. Found by UBSan (UndefinedBehaviorSanitizer)
+                    of Clang 11 (but not Clang 9).
+            #444  xmlwf: Exit status 2 was used for both:
+                    - malformed input files (documented) and
+                    - invalid command-line arguments (undocumented).
+                    The case of invalid command-line arguments now
+                    has its own exit status 4, resolving the ambiguity.
+
+        Other changes:
+            #439  xmlwf: Add argument -k to allow continuing after
+                    non-fatal errors
+            #439  xmlwf: Add section about exit status to the -h help output
+  #422 #426 #447  Windows: Drop support for Visual Studio <=14.0/2015
+            #434  Windows: CMake: Detect unsupported Visual Studio at
+                    configure time (rather than at compile time)
+       #382 #428  testrunner: Make verbose mode (argument "-v") report
+                    about passed tests, and make default mode report about
+                    failures, as well.
+            #442  CMake: Call "enable_language(CXX)" prior to tinkering
+                    with CMAKE_CXX_* variables
+            #448  Document use of libexpat from a CMake-based project
+            #451  Autotools: Install CMake files as generated by CMake 3.19.6
+                    so that users with "find_package(expat [..] CONFIG [..])"
+                    are served on distributions that are *not* using the CMake
+                    build system inside for libexpat packaging
+       #436 #437  Autotools: Drop obsolescent macro AC_HEADER_STDC
+       #450 #452  Autotools: Resolve use of obsolete macro AC_CONFIG_HEADER
+            #441  Address compiler warnings
+            #443  Version info bumped from 7:12:6 to 8:0:7
+                    due to addition of error code XML_ERROR_NO_BUFFER
+                    (see https://verbump.de/ for what these numbers do)
+
+        Infrastructure:
+       #435 #446  Replace Travis CI by GitHub Actions
+
+        Special thanks to:
+            Alexander Richardson
+            Oleksandr Popovych
+            Thomas Beutlich
+            Tim Bray
+                 and
+            Clang LeakSan, Clang 11 UBSan and the Clang team
+
 Release 2.2.10 Sat October 3 2020
 Release 2.2.10 Sat October 3 2020
         Bug fixes:
         Bug fixes:
   #390 #395 #398  Fix undefined behavior during parsing caused by
   #390 #395 #398  Fix undefined behavior during parsing caused by
@@ -46,7 +95,7 @@ Release 2.2.10 Sat October 3 2020
     #354 #355 ..
     #354 #355 ..
        #356 #412  Address compiler warnings
        #356 #412  Address compiler warnings
        #368 #369  Address pngcheck warnings with doc/*.png images
        #368 #369  Address pngcheck warnings with doc/*.png images
-                  Version info bumped from 7:11:6 to 7:12:6
+            #425  Version info bumped from 7:11:6 to 7:12:6
 
 
         Special thanks to:
         Special thanks to:
             asavah
             asavah

+ 12 - 1
libs/expat/Makefile.am

@@ -53,8 +53,19 @@ pkgconfig_DATA = expat.pc
 pkgconfigdir = $(libdir)/pkgconfig
 pkgconfigdir = $(libdir)/pkgconfig
 
 
 
 
+dist_cmake_DATA = \
+    cmake/autotools/expat.cmake
+
+nodist_cmake_DATA = \
+    cmake/autotools/expat-config-version.cmake \
+    cmake/autotools/expat-noconfig.cmake \
+    cmake/expat-config.cmake
+
+cmakedir = $(libdir)/cmake/expat-@PACKAGE_VERSION@
+
+
 _EXTRA_DIST_CMAKE = \
 _EXTRA_DIST_CMAKE = \
-    cmake/expat-config.cmake.in \
+    cmake/autotools/expat-package-init.cmake \
     cmake/mingw-toolchain.cmake \
     cmake/mingw-toolchain.cmake \
     \
     \
     CMakeLists.txt \
     CMakeLists.txt \

+ 93 - 14
libs/expat/Makefile.in

@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.16.2 from Makefile.am.
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
 # @configure_input@
 # @configure_input@
 
 
 # Copyright (C) 1994-2020 Free Software Foundation, Inc.
 # Copyright (C) 1994-2020 Free Software Foundation, Inc.
@@ -138,12 +138,14 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \
 DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \
-	$(am__configure_deps) $(am__DIST_COMMON)
+	$(am__configure_deps) $(dist_cmake_DATA) $(am__DIST_COMMON)
 am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
 am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
  configure.lineno config.status.lineno
  configure.lineno config.status.lineno
 mkinstalldirs = $(install_sh) -d
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = expat_config.h
 CONFIG_HEADER = expat_config.h
-CONFIG_CLEAN_FILES = expat.pc run.sh
+CONFIG_CLEAN_FILES = expat.pc cmake/expat-config.cmake \
+	cmake/autotools/expat-config-version.cmake \
+	cmake/autotools/expat-noconfig.cmake run.sh
 CONFIG_CLEAN_VPATH_FILES =
 CONFIG_CLEAN_VPATH_FILES =
 AM_V_P = $(am__v_P_@AM_V@)
 AM_V_P = $(am__v_P_@AM_V@)
 am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
 am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
@@ -199,8 +201,9 @@ am__uninstall_files_from_dir = { \
     || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
     || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
          $(am__cd) "$$dir" && rm -f $$files; }; \
          $(am__cd) "$$dir" && rm -f $$files; }; \
   }
   }
-am__installdirs = "$(DESTDIR)$(pkgconfigdir)"
-DATA = $(pkgconfig_DATA)
+am__installdirs = "$(DESTDIR)$(cmakedir)" "$(DESTDIR)$(cmakedir)" \
+	"$(DESTDIR)$(pkgconfigdir)"
+DATA = $(dist_cmake_DATA) $(nodist_cmake_DATA) $(pkgconfig_DATA)
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
   distclean-recursive maintainer-clean-recursive
   distclean-recursive maintainer-clean-recursive
 am__recursive_targets = \
 am__recursive_targets = \
@@ -233,6 +236,9 @@ CSCOPE = cscope
 DIST_SUBDIRS = lib examples tests xmlwf doc
 DIST_SUBDIRS = lib examples tests xmlwf doc
 am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/expat.pc.in \
 am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/expat.pc.in \
 	$(srcdir)/expat_config.h.in $(srcdir)/run.sh.in \
 	$(srcdir)/expat_config.h.in $(srcdir)/run.sh.in \
+	$(top_srcdir)/cmake/autotools/expat-config-version.cmake.in \
+	$(top_srcdir)/cmake/autotools/expat-noconfig.cmake.in \
+	$(top_srcdir)/cmake/expat-config.cmake.in \
 	$(top_srcdir)/conftools/ar-lib $(top_srcdir)/conftools/compile \
 	$(top_srcdir)/conftools/ar-lib $(top_srcdir)/conftools/compile \
 	$(top_srcdir)/conftools/config.guess \
 	$(top_srcdir)/conftools/config.guess \
 	$(top_srcdir)/conftools/config.sub \
 	$(top_srcdir)/conftools/config.sub \
@@ -281,6 +287,8 @@ DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.bz2 $(distdir).tar.lz \
 	$(distdir).tar.xz
 	$(distdir).tar.xz
 GZIP_ENV = --best
 GZIP_ENV = --best
 DIST_TARGETS = dist-lzip dist-xz dist-bzip2 dist-gzip
 DIST_TARGETS = dist-lzip dist-xz dist-bzip2 dist-gzip
+# Exists only to be overridden by the user if desired.
+AM_DISTCHECK_DVI_TARGET = dvi
 distuninstallcheck_listfiles = find . -type f -print
 distuninstallcheck_listfiles = find . -type f -print
 am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
 am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
   | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
   | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
@@ -301,7 +309,6 @@ AWK = @AWK@
 CC = @CC@
 CC = @CC@
 CCDEPMODE = @CCDEPMODE@
 CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CFLAGS = @CFLAGS@
-CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CPPFLAGS = @CPPFLAGS@
 CXX = @CXX@
 CXX = @CXX@
 CXXCPP = @CXXCPP@
 CXXCPP = @CXXCPP@
@@ -319,6 +326,13 @@ ECHO_N = @ECHO_N@
 ECHO_T = @ECHO_T@
 ECHO_T = @ECHO_T@
 EGREP = @EGREP@
 EGREP = @EGREP@
 EXEEXT = @EXEEXT@
 EXEEXT = @EXEEXT@
+EXPAT_ATTR_INFO = @EXPAT_ATTR_INFO@
+EXPAT_CHAR_TYPE = @EXPAT_CHAR_TYPE@
+EXPAT_CONTEXT_BYTES = @EXPAT_CONTEXT_BYTES@
+EXPAT_DTD = @EXPAT_DTD@
+EXPAT_LARGE_SIZE = @EXPAT_LARGE_SIZE@
+EXPAT_MIN_SIZE = @EXPAT_MIN_SIZE@
+EXPAT_NS = @EXPAT_NS@
 FGREP = @FGREP@
 FGREP = @FGREP@
 FILEMAP = @FILEMAP@
 FILEMAP = @FILEMAP@
 GREP = @GREP@
 GREP = @GREP@
@@ -331,6 +345,7 @@ LD = @LD@
 LDFLAGS = @LDFLAGS@
 LDFLAGS = @LDFLAGS@
 LIBAGE = @LIBAGE@
 LIBAGE = @LIBAGE@
 LIBCURRENT = @LIBCURRENT@
 LIBCURRENT = @LIBCURRENT@
+LIBDIR_BASENAME = @LIBDIR_BASENAME@
 LIBOBJS = @LIBOBJS@
 LIBOBJS = @LIBOBJS@
 LIBREVISION = @LIBREVISION@
 LIBREVISION = @LIBREVISION@
 LIBS = @LIBS@
 LIBS = @LIBS@
@@ -360,6 +375,9 @@ RANLIB = @RANLIB@
 SED = @SED@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHELL = @SHELL@
+SO_MAJOR = @SO_MAJOR@
+SO_MINOR = @SO_MINOR@
+SO_PATCH = @SO_PATCH@
 STRIP = @STRIP@
 STRIP = @STRIP@
 VERSION = @VERSION@
 VERSION = @VERSION@
 _EXPAT_OUTPUT_NAME = @_EXPAT_OUTPUT_NAME@
 _EXPAT_OUTPUT_NAME = @_EXPAT_OUTPUT_NAME@
@@ -429,8 +447,17 @@ LIBTOOLFLAGS = --verbose
 SUBDIRS = lib $(am__append_1) $(am__append_2) $(am__append_3)
 SUBDIRS = lib $(am__append_1) $(am__append_2) $(am__append_3)
 pkgconfig_DATA = expat.pc
 pkgconfig_DATA = expat.pc
 pkgconfigdir = $(libdir)/pkgconfig
 pkgconfigdir = $(libdir)/pkgconfig
+dist_cmake_DATA = \
+    cmake/autotools/expat.cmake
+
+nodist_cmake_DATA = \
+    cmake/autotools/expat-config-version.cmake \
+    cmake/autotools/expat-noconfig.cmake \
+    cmake/expat-config.cmake
+
+cmakedir = $(libdir)/cmake/expat-@PACKAGE_VERSION@
 _EXTRA_DIST_CMAKE = \
 _EXTRA_DIST_CMAKE = \
-    cmake/expat-config.cmake.in \
+    cmake/autotools/expat-package-init.cmake \
     cmake/mingw-toolchain.cmake \
     cmake/mingw-toolchain.cmake \
     \
     \
     CMakeLists.txt \
     CMakeLists.txt \
@@ -515,6 +542,12 @@ distclean-hdr:
 	-rm -f expat_config.h stamp-h1
 	-rm -f expat_config.h stamp-h1
 expat.pc: $(top_builddir)/config.status $(srcdir)/expat.pc.in
 expat.pc: $(top_builddir)/config.status $(srcdir)/expat.pc.in
 	cd $(top_builddir) && $(SHELL) ./config.status $@
 	cd $(top_builddir) && $(SHELL) ./config.status $@
+cmake/expat-config.cmake: $(top_builddir)/config.status $(top_srcdir)/cmake/expat-config.cmake.in
+	cd $(top_builddir) && $(SHELL) ./config.status $@
+cmake/autotools/expat-config-version.cmake: $(top_builddir)/config.status $(top_srcdir)/cmake/autotools/expat-config-version.cmake.in
+	cd $(top_builddir) && $(SHELL) ./config.status $@
+cmake/autotools/expat-noconfig.cmake: $(top_builddir)/config.status $(top_srcdir)/cmake/autotools/expat-noconfig.cmake.in
+	cd $(top_builddir) && $(SHELL) ./config.status $@
 run.sh: $(top_builddir)/config.status $(srcdir)/run.sh.in
 run.sh: $(top_builddir)/config.status $(srcdir)/run.sh.in
 	cd $(top_builddir) && $(SHELL) ./config.status $@
 	cd $(top_builddir) && $(SHELL) ./config.status $@
 
 
@@ -526,6 +559,48 @@ clean-libtool:
 
 
 distclean-libtool:
 distclean-libtool:
 	-rm -f libtool config.lt
 	-rm -f libtool config.lt
+install-dist_cmakeDATA: $(dist_cmake_DATA)
+	@$(NORMAL_INSTALL)
+	@list='$(dist_cmake_DATA)'; test -n "$(cmakedir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(cmakedir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(cmakedir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(cmakedir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(cmakedir)" || exit $$?; \
+	done
+
+uninstall-dist_cmakeDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(dist_cmake_DATA)'; test -n "$(cmakedir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(cmakedir)'; $(am__uninstall_files_from_dir)
+install-nodist_cmakeDATA: $(nodist_cmake_DATA)
+	@$(NORMAL_INSTALL)
+	@list='$(nodist_cmake_DATA)'; test -n "$(cmakedir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(cmakedir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(cmakedir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(cmakedir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(cmakedir)" || exit $$?; \
+	done
+
+uninstall-nodist_cmakeDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(nodist_cmake_DATA)'; test -n "$(cmakedir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(cmakedir)'; $(am__uninstall_files_from_dir)
 install-pkgconfigDATA: $(pkgconfig_DATA)
 install-pkgconfigDATA: $(pkgconfig_DATA)
 	@$(NORMAL_INSTALL)
 	@$(NORMAL_INSTALL)
 	@list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
 	@list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
@@ -797,7 +872,7 @@ distcheck: dist
 	    $(DISTCHECK_CONFIGURE_FLAGS) \
 	    $(DISTCHECK_CONFIGURE_FLAGS) \
 	    --srcdir=../.. --prefix="$$dc_install_base" \
 	    --srcdir=../.. --prefix="$$dc_install_base" \
 	  && $(MAKE) $(AM_MAKEFLAGS) \
 	  && $(MAKE) $(AM_MAKEFLAGS) \
-	  && $(MAKE) $(AM_MAKEFLAGS) dvi \
+	  && $(MAKE) $(AM_MAKEFLAGS) $(AM_DISTCHECK_DVI_TARGET) \
 	  && $(MAKE) $(AM_MAKEFLAGS) check \
 	  && $(MAKE) $(AM_MAKEFLAGS) check \
 	  && $(MAKE) $(AM_MAKEFLAGS) install \
 	  && $(MAKE) $(AM_MAKEFLAGS) install \
 	  && $(MAKE) $(AM_MAKEFLAGS) installcheck \
 	  && $(MAKE) $(AM_MAKEFLAGS) installcheck \
@@ -853,7 +928,7 @@ check: check-recursive
 all-am: Makefile $(DATA) expat_config.h
 all-am: Makefile $(DATA) expat_config.h
 installdirs: installdirs-recursive
 installdirs: installdirs-recursive
 installdirs-am:
 installdirs-am:
-	for dir in "$(DESTDIR)$(pkgconfigdir)"; do \
+	for dir in "$(DESTDIR)$(cmakedir)" "$(DESTDIR)$(cmakedir)" "$(DESTDIR)$(pkgconfigdir)"; do \
 	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
 	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
 	done
 	done
 install: install-recursive
 install: install-recursive
@@ -908,7 +983,8 @@ info: info-recursive
 
 
 info-am:
 info-am:
 
 
-install-data-am: install-pkgconfigDATA
+install-data-am: install-dist_cmakeDATA install-nodist_cmakeDATA \
+	install-pkgconfigDATA
 
 
 install-dvi: install-dvi-recursive
 install-dvi: install-dvi-recursive
 
 
@@ -954,7 +1030,8 @@ ps: ps-recursive
 
 
 ps-am:
 ps-am:
 
 
-uninstall-am: uninstall-pkgconfigDATA
+uninstall-am: uninstall-dist_cmakeDATA uninstall-nodist_cmakeDATA \
+	uninstall-pkgconfigDATA
 
 
 .MAKE: $(am__recursive_targets) all install-am install-strip
 .MAKE: $(am__recursive_targets) all install-am install-strip
 
 
@@ -966,14 +1043,16 @@ uninstall-am: uninstall-pkgconfigDATA
 	distclean-generic distclean-hdr distclean-libtool \
 	distclean-generic distclean-hdr distclean-libtool \
 	distclean-tags distcleancheck distdir distuninstallcheck dvi \
 	distclean-tags distcleancheck distdir distuninstallcheck dvi \
 	dvi-am html html-am info info-am install install-am \
 	dvi-am html html-am info info-am install install-am \
-	install-data install-data-am install-dvi install-dvi-am \
-	install-exec install-exec-am install-html install-html-am \
-	install-info install-info-am install-man install-pdf \
+	install-data install-data-am install-dist_cmakeDATA \
+	install-dvi install-dvi-am install-exec install-exec-am \
+	install-html install-html-am install-info install-info-am \
+	install-man install-nodist_cmakeDATA install-pdf \
 	install-pdf-am install-pkgconfigDATA install-ps install-ps-am \
 	install-pdf-am install-pkgconfigDATA install-ps install-ps-am \
 	install-strip installcheck installcheck-am installdirs \
 	install-strip installcheck installcheck-am installdirs \
 	installdirs-am maintainer-clean maintainer-clean-generic \
 	installdirs-am maintainer-clean maintainer-clean-generic \
 	mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
 	mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
 	ps ps-am tags tags-am uninstall uninstall-am \
 	ps ps-am tags tags-am uninstall uninstall-am \
+	uninstall-dist_cmakeDATA uninstall-nodist_cmakeDATA \
 	uninstall-pkgconfigDATA
 	uninstall-pkgconfigDATA
 
 
 .PRECIOUS: Makefile
 .PRECIOUS: Makefile

+ 74 - 6
libs/expat/README.md

@@ -1,9 +1,9 @@
-[![Travis CI Build Status](https://travis-ci.org/libexpat/libexpat.svg?branch=master)](https://travis-ci.org/libexpat/libexpat)
+[![Run Linux Travis CI tasks](https://github.com/libexpat/libexpat/actions/workflows/linux.yml/badge.svg)](https://github.com/libexpat/libexpat/actions/workflows/linux.yml)
 [![AppVeyor Build Status](https://ci.appveyor.com/api/projects/status/github/libexpat/libexpat?svg=true)](https://ci.appveyor.com/project/libexpat/libexpat)
 [![AppVeyor Build Status](https://ci.appveyor.com/api/projects/status/github/libexpat/libexpat?svg=true)](https://ci.appveyor.com/project/libexpat/libexpat)
 [![Packaging status](https://repology.org/badge/tiny-repos/expat.svg)](https://repology.org/metapackage/expat/versions)
 [![Packaging status](https://repology.org/badge/tiny-repos/expat.svg)](https://repology.org/metapackage/expat/versions)
 
 
 
 
-# Expat, Release 2.2.10
+# Expat, Release 2.3.0
 
 
 This is Expat, a C library for parsing XML, started by
 This is Expat, a C library for parsing XML, started by
 [James Clark](https://en.wikipedia.org/wiki/James_Clark_(programmer)) in 1997.
 [James Clark](https://en.wikipedia.org/wiki/James_Clark_(programmer)) in 1997.
@@ -14,13 +14,14 @@ document being parsed.  A start tag is an example of the kind of
 structures for which you may register handlers.
 structures for which you may register handlers.
 
 
 Expat supports the following compilers:
 Expat supports the following compilers:
+
 - GNU GCC >=4.5
 - GNU GCC >=4.5
 - LLVM Clang >=3.5
 - LLVM Clang >=3.5
-- Microsoft Visual Studio >=9.0/2008
+- Microsoft Visual Studio >=15.0/2017 (rolling `${today} minus 5 years`)
 
 
 Windows users can use the
 Windows users can use the
-[`expat_win32` package](https://sourceforge.net/projects/expat/files/expat_win32/),
-which includes both precompiled libraries and executables, and source code for
+[`expat-win32bin-*.*.*.exe` installer download](https://github.com/libexpat/libexpat/releases),
+which includes both pre-compiled libraries and executables, and source code for
 developers.
 developers.
 
 
 Expat is [free software](https://www.gnu.org/philosophy/free-sw.en.html).
 Expat is [free software](https://www.gnu.org/philosophy/free-sw.en.html).
@@ -30,6 +31,62 @@ contained in the file
 distributed with this package.
 distributed with this package.
 This license is the same as the MIT/X Consortium license.
 This license is the same as the MIT/X Consortium license.
 
 
+
+## Using libexpat in your CMake-Based Project
+
+There are two ways of using libexpat with CMake:
+
+### a) Module Mode
+
+This approach leverages CMake's own [module `FindEXPAT`](https://cmake.org/cmake/help/latest/module/FindEXPAT.html).
+
+Notice the uppercase `EXPAT` in the following example:
+
+```cmake
+cmake_minimum_required(VERSION 3.0)
+
+project(hello VERSION 1.0.0)
+
+find_package(EXPAT 2.2.8 MODULE REQUIRED)
+
+add_executable(hello
+    hello.c
+)
+
+if(${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.10")
+    target_link_libraries(hello PUBLIC EXPAT::EXPAT)
+else()
+    target_include_directories(hello PRIVATE ${EXPAT_INCLUDE_DIRS})
+    target_link_libraries(hello PUBLIC ${EXPAT_LIBRARIES})
+endif()
+```
+
+### b) Config Mode
+
+This approach requires files from
+libexpat >=2.2.8 where packaging uses the CMake build system
+or
+libexpat >=2.3.0 where packaging uses the GNU Autotools build system.
+
+Notice the lowercase `expat` in the following example:
+
+```cmake
+cmake_minimum_required(VERSION 3.0)
+
+project(hello VERSION 1.0.0)
+
+find_package(expat 2.2.8 CONFIG REQUIRED char dtd ns)
+
+add_executable(hello
+    hello.c
+)
+
+target_link_libraries(hello PUBLIC expat::expat)
+```
+
+
+## Buildung from a Git Clone
+
 If you are building Expat from a check-out from the
 If you are building Expat from a check-out from the
 [Git repository](https://github.com/libexpat/libexpat/),
 [Git repository](https://github.com/libexpat/libexpat/),
 you need to run a script that generates the configure script using the
 you need to run a script that generates the configure script using the
@@ -43,6 +100,11 @@ autoconf 2.58 or newer. Run the script like this:
 Once this has been done, follow the same instructions as for building
 Once this has been done, follow the same instructions as for building
 from a source distribution.
 from a source distribution.
 
 
+
+## Buildung from a Source Distribution
+
+### a) Building with the configure script (i.e. GNU Autotools)
+
 To build Expat from a source distribution, you first run the
 To build Expat from a source distribution, you first run the
 configuration shell script in the top level distribution directory:
 configuration shell script in the top level distribution directory:
 
 
@@ -132,8 +194,14 @@ A reference manual is available in the file `doc/reference.html` in this
 distribution.
 distribution.
 
 
 
 
-The CMake build system is still *experimental* and will replace the primary
+### b) Building with CMake
+
+The CMake build system is still *experimental* and may replace the primary
 build system based on GNU Autotools at some point when it is ready.
 build system based on GNU Autotools at some point when it is ready.
+
+
+#### Available Options
+
 For an idea of the available (non-advanced) options for building with CMake:
 For an idea of the available (non-advanced) options for building with CMake:
 
 
 ```console
 ```console

+ 6 - 11
libs/expat/aclocal.m4

@@ -1,4 +1,4 @@
-# generated automatically by aclocal 1.16.2 -*- Autoconf -*-
+# generated automatically by aclocal 1.16.3 -*- Autoconf -*-
 
 
 # Copyright (C) 1996-2020 Free Software Foundation, Inc.
 # Copyright (C) 1996-2020 Free Software Foundation, Inc.
 
 
@@ -14,8 +14,8 @@
 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_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_ifndef([AC_AUTOCONF_VERSION],
   [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
   [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.
 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.
 If you have problems, you may need to regenerate the build system entirely.
 To do so, use the procedure documented by the package, typically 'autoreconf'.])])
 To do so, use the procedure documented by the package, typically 'autoreconf'.])])
@@ -35,7 +35,7 @@ AC_DEFUN([AM_AUTOMAKE_VERSION],
 [am__api_version='1.16'
 [am__api_version='1.16'
 dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
 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.
 dnl require some minimum version.  Point them to the right macro.
-m4_if([$1], [1.16.2], [],
+m4_if([$1], [1.16.3], [],
       [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
       [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
 ])
 ])
 
 
@@ -51,7 +51,7 @@ m4_define([_AM_AUTOCONF_VERSION], [])
 # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
 # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
 # This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
 # This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
 AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
 AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.16.2])dnl
+[AM_AUTOMAKE_VERSION([1.16.3])dnl
 m4_ifndef([AC_AUTOCONF_VERSION],
 m4_ifndef([AC_AUTOCONF_VERSION],
   [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
   [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
 _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
 _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
@@ -763,12 +763,7 @@ AC_DEFUN([AM_MISSING_HAS_RUN],
 [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
 [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
 AC_REQUIRE_AUX_FILE([missing])dnl
 AC_REQUIRE_AUX_FILE([missing])dnl
 if test x"${MISSING+set}" != xset; then
 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
 fi
 # Use eval to expand $SHELL
 # Use eval to expand $SHELL
 if eval "$MISSING --is-lightweight"; then
 if eval "$MISSING --is-lightweight"; then

+ 67 - 0
libs/expat/cmake/autotools/expat-config-version.cmake.in

@@ -0,0 +1,67 @@
+# This is a basic version file for the Config-mode of find_package().
+# It is used by write_basic_package_version_file() as input file for configure_file()
+# to create a version-file which can be installed along a config.cmake file.
+#
+# The created file sets PACKAGE_VERSION_EXACT if the current version string and
+# the requested version string are exactly the same and it sets
+# PACKAGE_VERSION_COMPATIBLE if the current version is >= requested version,
+# but only if the requested major version is the same as the current one.
+# The variable CVF_VERSION must be set before calling configure_file().
+
+
+set(PACKAGE_VERSION "@PACKAGE_VERSION@")
+
+if(PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION)
+  set(PACKAGE_VERSION_COMPATIBLE FALSE)
+else()
+
+  if("@PACKAGE_VERSION@" MATCHES "^([0-9]+)\\.")
+    set(CVF_VERSION_MAJOR "${CMAKE_MATCH_1}")
+  else()
+    set(CVF_VERSION_MAJOR "@PACKAGE_VERSION@")
+  endif()
+
+  if(PACKAGE_FIND_VERSION_RANGE)
+    # both endpoints of the range must have the expected major version
+    math (EXPR CVF_VERSION_MAJOR_NEXT "${CVF_VERSION_MAJOR} + 1")
+    if (NOT PACKAGE_FIND_VERSION_MIN_MAJOR STREQUAL CVF_VERSION_MAJOR
+        OR ((PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "INCLUDE" AND NOT PACKAGE_FIND_VERSION_MAX_MAJOR STREQUAL CVF_VERSION_MAJOR)
+          OR (PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "EXCLUDE" AND NOT PACKAGE_FIND_VERSION_MAX VERSION_LESS_EQUAL CVF_VERSION_MAJOR_NEXT)))
+      set(PACKAGE_VERSION_COMPATIBLE FALSE)
+    elseif(PACKAGE_FIND_VERSION_MIN_MAJOR STREQUAL CVF_VERSION_MAJOR
+        AND ((PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "INCLUDE" AND PACKAGE_VERSION VERSION_LESS_EQUAL PACKAGE_FIND_VERSION_MAX)
+        OR (PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "EXCLUDE" AND PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION_MAX)))
+      set(PACKAGE_VERSION_COMPATIBLE TRUE)
+    else()
+      set(PACKAGE_VERSION_COMPATIBLE FALSE)
+    endif()
+  else()
+    if(PACKAGE_FIND_VERSION_MAJOR STREQUAL CVF_VERSION_MAJOR)
+      set(PACKAGE_VERSION_COMPATIBLE TRUE)
+    else()
+      set(PACKAGE_VERSION_COMPATIBLE FALSE)
+    endif()
+
+    if(PACKAGE_FIND_VERSION STREQUAL PACKAGE_VERSION)
+      set(PACKAGE_VERSION_EXACT TRUE)
+    endif()
+  endif()
+endif()
+
+
+# if the installed project requested no architecture check, don't perform the check
+if("FALSE")
+  return()
+endif()
+
+# if the installed or the using project don't have CMAKE_SIZEOF_VOID_P set, ignore it:
+if("${CMAKE_SIZEOF_VOID_P}" STREQUAL "" OR "8" STREQUAL "")
+  return()
+endif()
+
+# check that the installed version has the same 32/64bit-ness as the one which is currently searching:
+if(NOT CMAKE_SIZEOF_VOID_P STREQUAL "8")
+  math(EXPR installedBits "8 * 8")
+  set(PACKAGE_VERSION "${PACKAGE_VERSION} (${installedBits}bit)")
+  set(PACKAGE_VERSION_UNSUITABLE TRUE)
+endif()

+ 19 - 0
libs/expat/cmake/autotools/expat-noconfig.cmake.in

@@ -0,0 +1,19 @@
+#----------------------------------------------------------------
+# Generated CMake target import file.
+#----------------------------------------------------------------
+
+# Commands may need to know the format version.
+set(CMAKE_IMPORT_FILE_VERSION 1)
+
+# Import target "expat::expat" for configuration ""
+set_property(TARGET expat::expat APPEND PROPERTY IMPORTED_CONFIGURATIONS NOCONFIG)
+set_target_properties(expat::expat PROPERTIES
+  IMPORTED_LOCATION_NOCONFIG "${_IMPORT_PREFIX}/@LIBDIR_BASENAME@/libexpat.so.@SO_MAJOR@.@SO_MINOR@.@SO_PATCH@"
+  IMPORTED_SONAME_NOCONFIG "libexpat.so.@SO_MAJOR@"
+  )
+
+list(APPEND _IMPORT_CHECK_TARGETS expat::expat )
+list(APPEND _IMPORT_CHECK_FILES_FOR_expat::expat "${_IMPORT_PREFIX}/@LIBDIR_BASENAME@/libexpat.so.@SO_MAJOR@.@SO_MINOR@.@SO_PATCH@" )
+
+# Commands beyond this point should not need to know the version.
+set(CMAKE_IMPORT_FILE_VERSION)

+ 25 - 0
libs/expat/cmake/autotools/expat-package-init.cmake

@@ -0,0 +1,25 @@
+
+####### Expanded from @PACKAGE_INIT@ by configure_package_config_file() #######
+####### Any changes to this file will be overwritten by the next CMake run ####
+####### The input file was expat-config.cmake.in                            ########
+
+get_filename_component(PACKAGE_PREFIX_DIR "${CMAKE_CURRENT_LIST_DIR}/../../../" ABSOLUTE)
+
+macro(set_and_check _var _file)
+  set(${_var} "${_file}")
+  if(NOT EXISTS "${_file}")
+    message(FATAL_ERROR "File or directory ${_file} referenced by variable ${_var} does not exist !")
+  endif()
+endmacro()
+
+macro(check_required_components _NAME)
+  foreach(comp ${${_NAME}_FIND_COMPONENTS})
+    if(NOT ${_NAME}_${comp}_FOUND)
+      if(${_NAME}_FIND_REQUIRED_${comp})
+        set(${_NAME}_FOUND FALSE)
+      endif()
+    endif()
+  endforeach()
+endmacro()
+
+####################################################################################

+ 94 - 0
libs/expat/cmake/autotools/expat.cmake

@@ -0,0 +1,94 @@
+# Generated by CMake
+
+if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.5)
+   message(FATAL_ERROR "CMake >= 2.6.0 required")
+endif()
+cmake_policy(PUSH)
+cmake_policy(VERSION 2.6...3.17)
+#----------------------------------------------------------------
+# Generated CMake target import file.
+#----------------------------------------------------------------
+
+# Commands may need to know the format version.
+set(CMAKE_IMPORT_FILE_VERSION 1)
+
+# Protect against multiple inclusion, which would fail when already imported targets are added once more.
+set(_targetsDefined)
+set(_targetsNotDefined)
+set(_expectedTargets)
+foreach(_expectedTarget expat::expat)
+  list(APPEND _expectedTargets ${_expectedTarget})
+  if(NOT TARGET ${_expectedTarget})
+    list(APPEND _targetsNotDefined ${_expectedTarget})
+  endif()
+  if(TARGET ${_expectedTarget})
+    list(APPEND _targetsDefined ${_expectedTarget})
+  endif()
+endforeach()
+if("${_targetsDefined}" STREQUAL "${_expectedTargets}")
+  unset(_targetsDefined)
+  unset(_targetsNotDefined)
+  unset(_expectedTargets)
+  set(CMAKE_IMPORT_FILE_VERSION)
+  cmake_policy(POP)
+  return()
+endif()
+if(NOT "${_targetsDefined}" STREQUAL "")
+  message(FATAL_ERROR "Some (but not all) targets in this export set were already defined.\nTargets Defined: ${_targetsDefined}\nTargets not yet defined: ${_targetsNotDefined}\n")
+endif()
+unset(_targetsDefined)
+unset(_targetsNotDefined)
+unset(_expectedTargets)
+
+
+# Compute the installation prefix relative to this file.
+get_filename_component(_IMPORT_PREFIX "${CMAKE_CURRENT_LIST_FILE}" PATH)
+get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
+get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
+get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
+if(_IMPORT_PREFIX STREQUAL "/")
+  set(_IMPORT_PREFIX "")
+endif()
+
+# Create imported target expat::expat
+add_library(expat::expat SHARED IMPORTED)
+
+set_target_properties(expat::expat PROPERTIES
+  INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include"
+)
+
+# Load information for each installed configuration.
+get_filename_component(_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
+file(GLOB CONFIG_FILES "${_DIR}/expat-*.cmake")
+foreach(f ${CONFIG_FILES})
+  include(${f})
+endforeach()
+
+# Cleanup temporary variables.
+set(_IMPORT_PREFIX)
+
+# Loop over all imported files and verify that they actually exist
+foreach(target ${_IMPORT_CHECK_TARGETS} )
+  foreach(file ${_IMPORT_CHECK_FILES_FOR_${target}} )
+    if(NOT EXISTS "${file}" )
+      message(FATAL_ERROR "The imported target \"${target}\" references the file
+   \"${file}\"
+but this file does not exist.  Possible reasons include:
+* The file was deleted, renamed, or moved to another location.
+* An install or uninstall procedure did not complete successfully.
+* The installation package was faulty and contained
+   \"${CMAKE_CURRENT_LIST_FILE}\"
+but not all the files it references.
+")
+    endif()
+  endforeach()
+  unset(_IMPORT_CHECK_FILES_FOR_${target})
+endforeach()
+unset(_IMPORT_CHECK_TARGETS)
+
+# This file does not depend on other imported targets which have
+# been exported from the same project but in a separate export set.
+
+# Commands beyond this point should not need to know the version.
+set(CMAKE_IMPORT_FILE_VERSION)
+cmake_policy(POP)

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 235 - 275
libs/expat/configure


+ 58 - 10
libs/expat/configure.ac

@@ -11,11 +11,11 @@ dnl   in the file COPYING that comes with this distribution.
 dnl
 dnl
 
 
 dnl Ensure that Expat is configured with autoconf 2.69 or newer.
 dnl Ensure that Expat is configured with autoconf 2.69 or newer.
-AC_PREREQ(2.69)
+AC_PREREQ([2.69])
 
 
 dnl Get the version number of Expat, using m4's esyscmd() command to run
 dnl Get the version number of Expat, using m4's esyscmd() command to run
 dnl the command at m4-generation time. This allows us to create an m4
 dnl the command at m4-generation time. This allows us to create an m4
-dnl symbol holding the correct version number. AC_INIT() requires the
+dnl symbol holding the correct version number. AC_INIT requires the
 dnl version number at m4-time, rather than when ./configure is run, so
 dnl version number at m4-time, rather than when ./configure is run, so
 dnl all this must happen as part of m4, not as part of the shell code
 dnl all this must happen as part of m4, not as part of the shell code
 dnl contained in ./configure.
 dnl contained in ./configure.
@@ -27,7 +27,7 @@ m4_define([expat_version],
   m4_ifdef([__gnu__],
   m4_ifdef([__gnu__],
            [esyscmd(conftools/get-version.sh lib/expat.h)],
            [esyscmd(conftools/get-version.sh lib/expat.h)],
            [2.2.x]))
            [2.2.x]))
-AC_INIT(expat, expat_version, [email protected])
+AC_INIT([expat], expat_version, [[email protected]])
 m4_undefine([expat_version])
 m4_undefine([expat_version])
 
 
 AC_CONFIG_SRCDIR([Makefile.in])
 AC_CONFIG_SRCDIR([Makefile.in])
@@ -48,12 +48,12 @@ dnl
 dnl If the API changes incompatibly set LIBAGE back to 0
 dnl If the API changes incompatibly set LIBAGE back to 0
 dnl
 dnl
 
 
-LIBCURRENT=7    # sync
-LIBREVISION=12  # with
-LIBAGE=6        # CMakeLists.txt!
+LIBCURRENT=8   # sync
+LIBREVISION=0  # with
+LIBAGE=7       # CMakeLists.txt!
 
 
 AX_APPEND_FLAG([-DHAVE_EXPAT_CONFIG_H], [AM_CPPFLAGS])
 AX_APPEND_FLAG([-DHAVE_EXPAT_CONFIG_H], [AM_CPPFLAGS])
-AC_CONFIG_HEADER([expat_config.h])
+AC_CONFIG_HEADERS([expat_config.h])
 
 
 AM_PROG_AR
 AM_PROG_AR
 AC_PROG_INSTALL
 AC_PROG_INSTALL
@@ -105,9 +105,6 @@ EXPATCFG_COMPILER_SUPPORTS_VISIBILITY([
   AX_APPEND_FLAG([-fvisibility=hidden],       [AM_CFLAGS])
   AX_APPEND_FLAG([-fvisibility=hidden],       [AM_CFLAGS])
   AX_APPEND_FLAG([-DXML_ENABLE_VISIBILITY=1], [AM_CPPFLAGS])])
   AX_APPEND_FLAG([-DXML_ENABLE_VISIBILITY=1], [AM_CPPFLAGS])])
 
 
-dnl Checks for header files.
-AC_HEADER_STDC
-
 dnl Checks for typedefs, structures, and compiler characteristics.
 dnl Checks for typedefs, structures, and compiler characteristics.
 
 
 dnl We define BYTEORDER to 1234 when the platform is little endian; it
 dnl We define BYTEORDER to 1234 when the platform is little endian; it
@@ -151,7 +148,11 @@ AS_CASE("${host_os}",
    AC_MSG_NOTICE([detected OS: MinGW])])
    AC_MSG_NOTICE([detected OS: MinGW])])
 AM_CONDITIONAL([MINGW], [test x${EXPATCFG_ON_MINGW} = xyes])
 AM_CONDITIONAL([MINGW], [test x${EXPATCFG_ON_MINGW} = xyes])
 
 
+dnl Note: Prefix "_INTERNAL_" here means exclusive use inside of file configure.ac
 AM_CONDITIONAL([UNICODE], [echo -- "${CPPFLAGS}${CFLAGS}" | ${FGREP} XML_UNICODE >/dev/null])
 AM_CONDITIONAL([UNICODE], [echo -- "${CPPFLAGS}${CFLAGS}" | ${FGREP} XML_UNICODE >/dev/null])
+AM_CONDITIONAL([_INTERNAL_UNICODE_WCHAR_T], [echo -- "${CPPFLAGS}${CFLAGS}" | ${FGREP} XML_UNICODE_WCHAR_T >/dev/null])
+AM_CONDITIONAL([_INTERNAL_MIN_SIZE], [echo -- "${CPPFLAGS}${CFLAGS}" | ${FGREP} XML_MIN_SIZE >/dev/null])
+AM_CONDITIONAL([_INTERNAL_LARGE_SIZE], [echo -- "${CPPFLAGS}${CFLAGS}" | ${FGREP} XML_LARGE_SIZE >/dev/null])
 
 
 
 
 AC_ARG_WITH([libbsd],
 AC_ARG_WITH([libbsd],
@@ -309,6 +310,50 @@ AS_IF([test "x${DOCBOOK_TO_MAN}" != x -a "x$with_docbook" != xno],
 
 
 AM_CONDITIONAL(WITH_DOCBOOK, [test "x${DOCBOOK_TO_MAN}" != x])
 AM_CONDITIONAL(WITH_DOCBOOK, [test "x${DOCBOOK_TO_MAN}" != x])
 
 
+
+dnl Configure CMake file templates
+dnl NOTE: The *_TRUE variables read here are Automake conditionals
+dnl       that are either set to "" when enabled or to "#" when disabled
+dnl       (because they are used to dynamically comment out certain things)
+AS_IF([test "x${enable_xml_attr_info}" = xyes],
+  [EXPAT_ATTR_INFO=ON],
+  [EXPAT_ATTR_INFO=OFF])
+EXPAT_DTD=ON
+AS_IF([test "x${_INTERNAL_LARGE_SIZE_TRUE}" = x],
+  [EXPAT_LARGE_SIZE=ON],
+  [EXPAT_LARGE_SIZE=OFF])
+AS_IF([test "x${_INTERNAL_MIN_SIZE_TRUE}" = x],
+  [EXPAT_MIN_SIZE=ON],
+  [EXPAT_MIN_SIZE=OFF])
+EXPAT_NS=ON
+AS_IF([test "x${enable_xml_context}" != xno],
+  [EXPAT_CONTEXT_BYTES=${enable_xml_context}],
+  [EXPAT_CONTEXT_BYTES=OFF])
+AS_IF([test "x${UNICODE_TRUE}" = x],
+  [AS_IF(
+     [test "x${_INTERNAL_UNICODE_WCHAR_T_TRUE}" = x],
+        [EXPAT_CHAR_TYPE=wchar_t],
+        [EXPAT_CHAR_TYPE=ushort])],
+  [EXPAT_CHAR_TYPE=char])
+PACKAGE_INIT="${srcdir}"/cmake/autotools/expat-package-init.cmake
+LIBDIR_BASENAME="$(basename "${libdir}")"
+SO_MAJOR="$(expr "${LIBCURRENT}" - "${LIBAGE}")"
+SO_MINOR="${LIBAGE}"
+SO_PATCH="${LIBREVISION}"
+AC_SUBST([EXPAT_ATTR_INFO])
+AC_SUBST([EXPAT_DTD])
+AC_SUBST([EXPAT_LARGE_SIZE])
+AC_SUBST([EXPAT_MIN_SIZE])
+AC_SUBST([EXPAT_NS])
+AC_SUBST([EXPAT_CONTEXT_BYTES])
+AC_SUBST([EXPAT_CHAR_TYPE])
+AC_SUBST_FILE([PACKAGE_INIT])
+AC_SUBST([LIBDIR_BASENAME])
+AC_SUBST([SO_MAJOR])
+AC_SUBST([SO_MINOR])
+AC_SUBST([SO_PATCH])
+
+
 dnl write the Automake flags we set
 dnl write the Automake flags we set
 AC_SUBST([AM_CPPFLAGS])
 AC_SUBST([AM_CPPFLAGS])
 AC_SUBST([AM_CFLAGS])
 AC_SUBST([AM_CFLAGS])
@@ -320,6 +365,9 @@ AC_SUBST(_EXPAT_OUTPUT_NAME, ["$PACKAGE_NAME"])
 
 
 AC_CONFIG_FILES([Makefile]
 AC_CONFIG_FILES([Makefile]
   [expat.pc]
   [expat.pc]
+  [cmake/expat-config.cmake]
+  [cmake/autotools/expat-config-version.cmake]
+  [cmake/autotools/expat-noconfig.cmake]
   [doc/Makefile]
   [doc/Makefile]
   [examples/Makefile]
   [examples/Makefile]
   [lib/Makefile]
   [lib/Makefile]

+ 149 - 124
libs/expat/conftools/config.guess

@@ -1,8 +1,8 @@
 #! /bin/sh
 #! /bin/sh
 # Attempt to guess a canonical system name.
 # Attempt to guess a canonical system name.
-#   Copyright 1992-2019 Free Software Foundation, Inc.
+#   Copyright 1992-2021 Free Software Foundation, Inc.
 
 
-timestamp='2019-09-10'
+timestamp='2021-01-01'
 
 
 # This file is free software; you can redistribute it and/or modify it
 # 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
 # under the terms of the GNU General Public License as published by
@@ -27,12 +27,12 @@ timestamp='2019-09-10'
 # Originally written by Per Bothner; maintained since 2000 by Ben Elliston.
 # Originally written by Per Bothner; maintained since 2000 by Ben Elliston.
 #
 #
 # You can get the latest version of this script from:
 # 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 <[email protected]>.
 # Please send patches to <[email protected]>.
 
 
 
 
-me=`echo "$0" | sed -e 's,.*/,,'`
+me=$(echo "$0" | sed -e 's,.*/,,')
 
 
 usage="\
 usage="\
 Usage: $0 [OPTION]
 Usage: $0 [OPTION]
@@ -50,7 +50,7 @@ version="\
 GNU config.guess ($timestamp)
 GNU config.guess ($timestamp)
 
 
 Originally written by Per Bothner.
 Originally written by Per Bothner.
-Copyright 1992-2019 Free Software Foundation, Inc.
+Copyright 1992-2021 Free Software Foundation, Inc.
 
 
 This is free software; see the source for copying conditions.  There is NO
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -99,9 +99,11 @@ tmp=
 trap 'test -z "$tmp" || rm -fr "$tmp"' 0 1 2 13 15
 trap 'test -z "$tmp" || rm -fr "$tmp"' 0 1 2 13 15
 
 
 set_cc_for_build() {
 set_cc_for_build() {
+    # prevent multiple calls if $tmp is already set
+    test "$tmp" && return 0
     : "${TMPDIR=/tmp}"
     : "${TMPDIR=/tmp}"
     # shellcheck disable=SC2039
     # shellcheck disable=SC2039
-    { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$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" 2>/dev/null) ; } ||
 	{ 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 ; } ||
 	{ 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 ; }
 	{ echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; }
@@ -129,16 +131,14 @@ if test -f /.attbin/uname ; then
 	PATH=$PATH:/.attbin ; export PATH
 	PATH=$PATH:/.attbin ; export PATH
 fi
 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_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
+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_VERSION=$( (uname -v) 2>/dev/null) || UNAME_VERSION=unknown
 
 
 case "$UNAME_SYSTEM" in
 case "$UNAME_SYSTEM" in
 Linux|GNU|GNU/*)
 Linux|GNU|GNU/*)
-	# If the system lacks a compiler, then just pick glibc.
-	# We could probably try harder.
-	LIBC=gnu
+	LIBC=unknown
 
 
 	set_cc_for_build
 	set_cc_for_build
 	cat <<-EOF > "$dummy.c"
 	cat <<-EOF > "$dummy.c"
@@ -147,17 +147,29 @@ Linux|GNU|GNU/*)
 	LIBC=uclibc
 	LIBC=uclibc
 	#elif defined(__dietlibc__)
 	#elif defined(__dietlibc__)
 	LIBC=dietlibc
 	LIBC=dietlibc
-	#else
+	#elif defined(__GLIBC__)
 	LIBC=gnu
 	LIBC=gnu
+	#else
+	#include <stdarg.h>
+	/* First heuristic to detect musl libc.  */
+	#ifdef __DEFINED_va_list
+	LIBC=musl
+	#endif
 	#endif
 	#endif
 	EOF
 	EOF
-	eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`"
+	eval "$($CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g')"
 
 
-	# If ldd exists, use it to detect musl libc.
-	if command -v ldd >/dev/null && \
-		ldd --version 2>&1 | grep -q ^musl
-	then
-	    LIBC=musl
+	# 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
 	fi
 	;;
 	;;
 esac
 esac
@@ -177,19 +189,20 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
 	# Note: NetBSD doesn't particularly care about the vendor
 	# Note: NetBSD doesn't particularly care about the vendor
 	# portion of the name.  We always set it to "unknown".
 	# portion of the name.  We always set it to "unknown".
 	sysctl="sysctl -n hw.machine_arch"
 	sysctl="sysctl -n hw.machine_arch"
-	UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \
+	UNAME_MACHINE_ARCH=$( (uname -p 2>/dev/null || \
 	    "/sbin/$sysctl" 2>/dev/null || \
 	    "/sbin/$sysctl" 2>/dev/null || \
 	    "/usr/sbin/$sysctl" 2>/dev/null || \
 	    "/usr/sbin/$sysctl" 2>/dev/null || \
-	    echo unknown)`
+	    echo unknown))
 	case "$UNAME_MACHINE_ARCH" in
 	case "$UNAME_MACHINE_ARCH" in
+	    aarch64eb) machine=aarch64_be-unknown ;;
 	    armeb) machine=armeb-unknown ;;
 	    armeb) machine=armeb-unknown ;;
 	    arm*) machine=arm-unknown ;;
 	    arm*) machine=arm-unknown ;;
 	    sh3el) machine=shl-unknown ;;
 	    sh3el) machine=shl-unknown ;;
 	    sh3eb) machine=sh-unknown ;;
 	    sh3eb) machine=sh-unknown ;;
 	    sh5el) machine=sh5le-unknown ;;
 	    sh5el) machine=sh5le-unknown ;;
 	    earmv*)
 	    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'`
+		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 ;;
@@ -220,7 +233,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
 	case "$UNAME_MACHINE_ARCH" in
 	case "$UNAME_MACHINE_ARCH" in
 	    earm*)
 	    earm*)
 		expr='s/^earmv[0-9]/-eabi/;s/eb$//'
 		expr='s/^earmv[0-9]/-eabi/;s/eb$//'
-		abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"`
+		abi=$(echo "$UNAME_MACHINE_ARCH" | sed -e "$expr")
 		;;
 		;;
 	esac
 	esac
 	# The OS release
 	# The OS release
@@ -233,7 +246,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
 		release='-gnu'
 		release='-gnu'
 		;;
 		;;
 	    *)
 	    *)
-		release=`echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2`
+		release=$(echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2)
 		;;
 		;;
 	esac
 	esac
 	# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
 	# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
@@ -242,15 +255,15 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
 	echo "$machine-${os}${release}${abi-}"
 	echo "$machine-${os}${release}${abi-}"
 	exit ;;
 	exit ;;
     *:Bitrig:*:*)
     *:Bitrig:*:*)
-	UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
+	UNAME_MACHINE_ARCH=$(arch | sed 's/Bitrig.//')
 	echo "$UNAME_MACHINE_ARCH"-unknown-bitrig"$UNAME_RELEASE"
 	echo "$UNAME_MACHINE_ARCH"-unknown-bitrig"$UNAME_RELEASE"
 	exit ;;
 	exit ;;
     *:OpenBSD:*:*)
     *:OpenBSD:*:*)
-	UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
+	UNAME_MACHINE_ARCH=$(arch | sed 's/OpenBSD.//')
 	echo "$UNAME_MACHINE_ARCH"-unknown-openbsd"$UNAME_RELEASE"
 	echo "$UNAME_MACHINE_ARCH"-unknown-openbsd"$UNAME_RELEASE"
 	exit ;;
 	exit ;;
     *:LibertyBSD:*:*)
     *:LibertyBSD:*:*)
-	UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'`
+	UNAME_MACHINE_ARCH=$(arch | sed 's/^.*BSD\.//')
 	echo "$UNAME_MACHINE_ARCH"-unknown-libertybsd"$UNAME_RELEASE"
 	echo "$UNAME_MACHINE_ARCH"-unknown-libertybsd"$UNAME_RELEASE"
 	exit ;;
 	exit ;;
     *:MidnightBSD:*:*)
     *:MidnightBSD:*:*)
@@ -286,17 +299,17 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
     alpha:OSF1:*:*)
     alpha:OSF1:*:*)
 	case $UNAME_RELEASE in
 	case $UNAME_RELEASE in
 	*4.0)
 	*4.0)
-		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
+		UNAME_RELEASE=$(/usr/sbin/sizer -v | awk '{print $3}')
 		;;
 		;;
 	*5.*)
 	*5.*)
-		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
+		UNAME_RELEASE=$(/usr/sbin/sizer -v | awk '{print $4}')
 		;;
 		;;
 	esac
 	esac
 	# According to Compaq, /usr/sbin/psrinfo has been available on
 	# According to Compaq, /usr/sbin/psrinfo has been available on
 	# OSF/1 and Tru64 systems produced since 1995.  I hope that
 	# OSF/1 and Tru64 systems produced since 1995.  I hope that
 	# covers most systems running today.  This code pipes the CPU
 	# covers most systems running today.  This code pipes the CPU
 	# types through head -n 1, so we only detect the type of CPU 0.
 	# 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`
+	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)")
 	    "EV4 (21064)")
 		UNAME_MACHINE=alpha ;;
 		UNAME_MACHINE=alpha ;;
@@ -334,7 +347,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
 	# A Tn.n version is a released field test version.
 	# A Tn.n version is a released field test version.
 	# A Xn.n version is an unreleased experimental baselevel.
 	# A Xn.n version is an unreleased experimental baselevel.
 	# 1.2 uses "1.2" for uname -r.
 	# 1.2 uses "1.2" for uname -r.
-	echo "$UNAME_MACHINE"-dec-osf"`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`"
+	echo "$UNAME_MACHINE"-dec-osf"$(echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz)"
 	# Reset EXIT trap before exiting to avoid spurious non-zero exit code.
 	# Reset EXIT trap before exiting to avoid spurious non-zero exit code.
 	exitcode=$?
 	exitcode=$?
 	trap '' 0
 	trap '' 0
@@ -368,7 +381,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
 	exit ;;
 	exit ;;
     Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
     Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
 	# [email protected] (Earle F. Ake) contributed MIS and NILE.
 	# [email protected] (Earle F. Ake) contributed MIS and NILE.
-	if test "`(/bin/universe) 2>/dev/null`" = att ; then
+	if test "$( (/bin/universe) 2>/dev/null)" = att ; then
 		echo pyramid-pyramid-sysv3
 		echo pyramid-pyramid-sysv3
 	else
 	else
 		echo pyramid-pyramid-bsd
 		echo pyramid-pyramid-bsd
@@ -381,17 +394,17 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
 	echo sparc-icl-nx6
 	echo sparc-icl-nx6
 	exit ;;
 	exit ;;
     DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
     DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
-	case `/usr/bin/uname -p` in
+	case $(/usr/bin/uname -p) in
 	    sparc) echo sparc-icl-nx7; exit ;;
 	    sparc) echo sparc-icl-nx7; exit ;;
 	esac ;;
 	esac ;;
     s390x:SunOS:*:*)
     s390x:SunOS:*:*)
-	echo "$UNAME_MACHINE"-ibm-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`"
+	echo "$UNAME_MACHINE"-ibm-solaris2"$(echo "$UNAME_RELEASE" | sed -e 's/[^.]*//')"
 	exit ;;
 	exit ;;
     sun4H:SunOS:5.*:*)
     sun4H:SunOS:5.*:*)
-	echo sparc-hal-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
+	echo sparc-hal-solaris2"$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*//')"
 	exit ;;
 	exit ;;
     sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
     sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
-	echo sparc-sun-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`"
+	echo sparc-sun-solaris2"$(echo "$UNAME_RELEASE" | sed -e 's/[^.]*//')"
 	exit ;;
 	exit ;;
     i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
     i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
 	echo i386-pc-auroraux"$UNAME_RELEASE"
 	echo i386-pc-auroraux"$UNAME_RELEASE"
@@ -402,7 +415,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
 	# If there is a compiler, see if it is configured for 64-bit objects.
 	# 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.
 	# Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
 	# This test works for both compilers.
 	# 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') | \
 	    if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
 		(CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
 		(CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
 		grep IS_64BIT_ARCH >/dev/null
 		grep IS_64BIT_ARCH >/dev/null
@@ -410,30 +423,30 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
 		SUN_ARCH=x86_64
 		SUN_ARCH=x86_64
 	    fi
 	    fi
 	fi
 	fi
-	echo "$SUN_ARCH"-pc-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
+	echo "$SUN_ARCH"-pc-solaris2"$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*//')"
 	exit ;;
 	exit ;;
     sun4*:SunOS:6*:*)
     sun4*:SunOS:6*:*)
 	# According to config.sub, this is the proper way to canonicalize
 	# According to config.sub, this is the proper way to canonicalize
 	# SunOS6.  Hard to guess exactly what SunOS6 will be like, but
 	# SunOS6.  Hard to guess exactly what SunOS6 will be like, but
 	# it's likely to be more like Solaris than SunOS4.
 	# it's likely to be more like Solaris than SunOS4.
-	echo sparc-sun-solaris3"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
+	echo sparc-sun-solaris3"$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*//')"
 	exit ;;
 	exit ;;
     sun4*:SunOS:*:*)
     sun4*:SunOS:*:*)
-	case "`/usr/bin/arch -k`" in
+	case "$(/usr/bin/arch -k)" in
 	    Series*|S4*)
 	    Series*|S4*)
-		UNAME_RELEASE=`uname -v`
+		UNAME_RELEASE=$(uname -v)
 		;;
 		;;
 	esac
 	esac
 	# Japanese Language versions have a version number like `4.1.3-JL'.
 	# Japanese Language versions have a version number like `4.1.3-JL'.
-	echo sparc-sun-sunos"`echo "$UNAME_RELEASE"|sed -e 's/-/_/'`"
+	echo sparc-sun-sunos"$(echo "$UNAME_RELEASE"|sed -e 's/-/_/')"
 	exit ;;
 	exit ;;
     sun3*:SunOS:*:*)
     sun3*:SunOS:*:*)
 	echo m68k-sun-sunos"$UNAME_RELEASE"
 	echo m68k-sun-sunos"$UNAME_RELEASE"
 	exit ;;
 	exit ;;
     sun*:*:4.2BSD:*)
     sun*:*:4.2BSD:*)
-	UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
+	UNAME_RELEASE=$( (sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null)
 	test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3
 	test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3
-	case "`/bin/arch`" in
+	case "$(/bin/arch)" in
 	    sun3)
 	    sun3)
 		echo m68k-sun-sunos"$UNAME_RELEASE"
 		echo m68k-sun-sunos"$UNAME_RELEASE"
 		;;
 		;;
@@ -513,8 +526,8 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
 	}
 	}
 EOF
 EOF
 	$CC_FOR_BUILD -o "$dummy" "$dummy.c" &&
 	$CC_FOR_BUILD -o "$dummy" "$dummy.c" &&
-	  dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` &&
-	  SYSTEM_NAME=`"$dummy" "$dummyarg"` &&
+	  dummyarg=$(echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p') &&
+	  SYSTEM_NAME=$("$dummy" "$dummyarg") &&
 	    { echo "$SYSTEM_NAME"; exit; }
 	    { echo "$SYSTEM_NAME"; exit; }
 	echo mips-mips-riscos"$UNAME_RELEASE"
 	echo mips-mips-riscos"$UNAME_RELEASE"
 	exit ;;
 	exit ;;
@@ -541,11 +554,11 @@ EOF
 	exit ;;
 	exit ;;
     AViiON:dgux:*:*)
     AViiON:dgux:*:*)
 	# DG/UX returns AViiON for all architectures
 	# DG/UX returns AViiON for all architectures
-	UNAME_PROCESSOR=`/usr/bin/uname -p`
-	if [ "$UNAME_PROCESSOR" = mc88100 ] || [ "$UNAME_PROCESSOR" = mc88110 ]
+	UNAME_PROCESSOR=$(/usr/bin/uname -p)
+	if test "$UNAME_PROCESSOR" = mc88100 || test "$UNAME_PROCESSOR" = mc88110
 	then
 	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
 	    then
 		echo m88k-dg-dgux"$UNAME_RELEASE"
 		echo m88k-dg-dgux"$UNAME_RELEASE"
 	    else
 	    else
@@ -569,17 +582,17 @@ EOF
 	echo m68k-tektronix-bsd
 	echo m68k-tektronix-bsd
 	exit ;;
 	exit ;;
     *:IRIX*:*:*)
     *:IRIX*:*:*)
-	echo mips-sgi-irix"`echo "$UNAME_RELEASE"|sed -e 's/-/_/g'`"
+	echo mips-sgi-irix"$(echo "$UNAME_RELEASE"|sed -e 's/-/_/g')"
 	exit ;;
 	exit ;;
     ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
     ????????: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
 	echo romp-ibm-aix     # uname -m gives an 8 hex-code CPU id
-	exit ;;               # Note that: echo "'`uname -s`'" gives 'AIX '
+	exit ;;               # Note that: echo "'$(uname -s)'" gives 'AIX '
     i*86:AIX:*:*)
     i*86:AIX:*:*)
 	echo i386-ibm-aix
 	echo i386-ibm-aix
 	exit ;;
 	exit ;;
     ia64:AIX:*:*)
     ia64:AIX:*:*)
-	if [ -x /usr/bin/oslevel ] ; then
-		IBM_REV=`/usr/bin/oslevel`
+	if test -x /usr/bin/oslevel ; then
+		IBM_REV=$(/usr/bin/oslevel)
 	else
 	else
 		IBM_REV="$UNAME_VERSION.$UNAME_RELEASE"
 		IBM_REV="$UNAME_VERSION.$UNAME_RELEASE"
 	fi
 	fi
@@ -599,7 +612,7 @@ EOF
 			exit(0);
 			exit(0);
 			}
 			}
 EOF
 EOF
-		if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"`
+		if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=$("$dummy")
 		then
 		then
 			echo "$SYSTEM_NAME"
 			echo "$SYSTEM_NAME"
 		else
 		else
@@ -612,15 +625,15 @@ EOF
 	fi
 	fi
 	exit ;;
 	exit ;;
     *:AIX:*:[4567])
     *:AIX:*:[4567])
-	IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
+	IBM_CPU_ID=$(/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }')
 	if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then
 	if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then
 		IBM_ARCH=rs6000
 		IBM_ARCH=rs6000
 	else
 	else
 		IBM_ARCH=powerpc
 		IBM_ARCH=powerpc
 	fi
 	fi
-	if [ -x /usr/bin/lslpp ] ; then
-		IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc |
-			   awk -F: '{ print $3 }' | sed s/[0-9]*$/0/`
+	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
 	else
 		IBM_REV="$UNAME_VERSION.$UNAME_RELEASE"
 		IBM_REV="$UNAME_VERSION.$UNAME_RELEASE"
 	fi
 	fi
@@ -648,14 +661,14 @@ EOF
 	echo m68k-hp-bsd4.4
 	echo m68k-hp-bsd4.4
 	exit ;;
 	exit ;;
     9000/[34678]??:HP-UX:*:*)
     9000/[34678]??:HP-UX:*:*)
-	HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'`
+	HPUX_REV=$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//')
 	case "$UNAME_MACHINE" in
 	case "$UNAME_MACHINE" in
 	    9000/31?)            HP_ARCH=m68000 ;;
 	    9000/31?)            HP_ARCH=m68000 ;;
 	    9000/[34]??)         HP_ARCH=m68k ;;
 	    9000/[34]??)         HP_ARCH=m68k ;;
 	    9000/[678][0-9][0-9])
 	    9000/[678][0-9][0-9])
-		if [ -x /usr/bin/getconf ]; then
-		    sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
-		    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
+		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
 		      523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0
 		      528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1
 		      528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1
@@ -667,7 +680,7 @@ EOF
 			esac ;;
 			esac ;;
 		    esac
 		    esac
 		fi
 		fi
-		if [ "$HP_ARCH" = "" ]; then
+		if test "$HP_ARCH" = ""; then
 		    set_cc_for_build
 		    set_cc_for_build
 		    sed 's/^		//' << EOF > "$dummy.c"
 		    sed 's/^		//' << EOF > "$dummy.c"
 
 
@@ -702,11 +715,11 @@ EOF
 		    exit (0);
 		    exit (0);
 		}
 		}
 EOF
 EOF
-		    (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=`"$dummy"`
+		    (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=$("$dummy")
 		    test -z "$HP_ARCH" && HP_ARCH=hppa
 		    test -z "$HP_ARCH" && HP_ARCH=hppa
 		fi ;;
 		fi ;;
 	esac
 	esac
-	if [ "$HP_ARCH" = hppa2.0w ]
+	if test "$HP_ARCH" = hppa2.0w
 	then
 	then
 	    set_cc_for_build
 	    set_cc_for_build
 
 
@@ -730,7 +743,7 @@ EOF
 	echo "$HP_ARCH"-hp-hpux"$HPUX_REV"
 	echo "$HP_ARCH"-hp-hpux"$HPUX_REV"
 	exit ;;
 	exit ;;
     ia64:HP-UX:*:*)
     ia64:HP-UX:*:*)
-	HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'`
+	HPUX_REV=$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//')
 	echo ia64-hp-hpux"$HPUX_REV"
 	echo ia64-hp-hpux"$HPUX_REV"
 	exit ;;
 	exit ;;
     3050*:HI-UX:*:*)
     3050*:HI-UX:*:*)
@@ -760,7 +773,7 @@ EOF
 	  exit (0);
 	  exit (0);
 	}
 	}
 EOF
 EOF
-	$CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` &&
+	$CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=$("$dummy") &&
 		{ echo "$SYSTEM_NAME"; exit; }
 		{ echo "$SYSTEM_NAME"; exit; }
 	echo unknown-hitachi-hiuxwe2
 	echo unknown-hitachi-hiuxwe2
 	exit ;;
 	exit ;;
@@ -780,7 +793,7 @@ EOF
 	echo hppa1.0-hp-osf
 	echo hppa1.0-hp-osf
 	exit ;;
 	exit ;;
     i*86:OSF1:*:*)
     i*86:OSF1:*:*)
-	if [ -x /usr/sbin/sysversion ] ; then
+	if test -x /usr/sbin/sysversion ; then
 	    echo "$UNAME_MACHINE"-unknown-osf1mk
 	    echo "$UNAME_MACHINE"-unknown-osf1mk
 	else
 	else
 	    echo "$UNAME_MACHINE"-unknown-osf1
 	    echo "$UNAME_MACHINE"-unknown-osf1
@@ -829,14 +842,14 @@ EOF
 	echo craynv-cray-unicosmp"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
 	echo craynv-cray-unicosmp"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
 	exit ;;
 	exit ;;
     F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
     F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
-	FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
-	FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
-	FUJITSU_REL=`echo "$UNAME_RELEASE" | sed -e 's/ /_/'`
+	FUJITSU_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}"
 	echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
 	exit ;;
 	exit ;;
     5000:UNIX_System_V:4.*:*)
     5000:UNIX_System_V:4.*:*)
-	FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
-	FUJITSU_REL=`echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'`
+	FUJITSU_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}"
 	echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
 	exit ;;
 	exit ;;
     i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
     i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
@@ -849,25 +862,25 @@ EOF
 	echo "$UNAME_MACHINE"-unknown-bsdi"$UNAME_RELEASE"
 	echo "$UNAME_MACHINE"-unknown-bsdi"$UNAME_RELEASE"
 	exit ;;
 	exit ;;
     arm:FreeBSD:*:*)
     arm:FreeBSD:*:*)
-	UNAME_PROCESSOR=`uname -p`
+	UNAME_PROCESSOR=$(uname -p)
 	set_cc_for_build
 	set_cc_for_build
 	if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
 	if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
 	    | grep -q __ARM_PCS_VFP
 	    | grep -q __ARM_PCS_VFP
 	then
 	then
-	    echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabi
+	    echo "${UNAME_PROCESSOR}"-unknown-freebsd"$(echo ${UNAME_RELEASE}|sed -e 's/[-(].*//')"-gnueabi
 	else
 	else
-	    echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabihf
+	    echo "${UNAME_PROCESSOR}"-unknown-freebsd"$(echo ${UNAME_RELEASE}|sed -e 's/[-(].*//')"-gnueabihf
 	fi
 	fi
 	exit ;;
 	exit ;;
     *:FreeBSD:*:*)
     *:FreeBSD:*:*)
-	UNAME_PROCESSOR=`/usr/bin/uname -p`
+	UNAME_PROCESSOR=$(/usr/bin/uname -p)
 	case "$UNAME_PROCESSOR" in
 	case "$UNAME_PROCESSOR" in
 	    amd64)
 	    amd64)
 		UNAME_PROCESSOR=x86_64 ;;
 		UNAME_PROCESSOR=x86_64 ;;
 	    i386)
 	    i386)
 		UNAME_PROCESSOR=i586 ;;
 		UNAME_PROCESSOR=i586 ;;
 	esac
 	esac
-	echo "$UNAME_PROCESSOR"-unknown-freebsd"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`"
+	echo "$UNAME_PROCESSOR"-unknown-freebsd"$(echo "$UNAME_RELEASE"|sed -e 's/[-(].*//')"
 	exit ;;
 	exit ;;
     i*:CYGWIN*:*)
     i*:CYGWIN*:*)
 	echo "$UNAME_MACHINE"-pc-cygwin
 	echo "$UNAME_MACHINE"-pc-cygwin
@@ -903,15 +916,15 @@ EOF
 	echo x86_64-pc-cygwin
 	echo x86_64-pc-cygwin
 	exit ;;
 	exit ;;
     prep*:SunOS:5.*:*)
     prep*:SunOS:5.*:*)
-	echo powerpcle-unknown-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
+	echo powerpcle-unknown-solaris2"$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*//')"
 	exit ;;
 	exit ;;
     *:GNU:*:*)
     *:GNU:*:*)
 	# the GNU system
 	# the GNU system
-	echo "`echo "$UNAME_MACHINE"|sed -e 's,[-/].*$,,'`-unknown-$LIBC`echo "$UNAME_RELEASE"|sed -e 's,/.*$,,'`"
+	echo "$(echo "$UNAME_MACHINE"|sed -e 's,[-/].*$,,')-unknown-$LIBC$(echo "$UNAME_RELEASE"|sed -e 's,/.*$,,')"
 	exit ;;
 	exit ;;
     *:GNU/*:*:*)
     *:GNU/*:*:*)
 	# other systems with GNU libc and userland
 	# other systems with GNU libc and userland
-	echo "$UNAME_MACHINE-unknown-`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`-$LIBC"
+	echo "$UNAME_MACHINE-unknown-$(echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]")$(echo "$UNAME_RELEASE"|sed -e 's/[-(].*//')-$LIBC"
 	exit ;;
 	exit ;;
     *:Minix:*:*)
     *:Minix:*:*)
 	echo "$UNAME_MACHINE"-unknown-minix
 	echo "$UNAME_MACHINE"-unknown-minix
@@ -924,7 +937,7 @@ EOF
 	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
 	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
 	exit ;;
 	exit ;;
     alpha:Linux:*:*)
     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 ;;
 	  EV5)   UNAME_MACHINE=alphaev5 ;;
 	  EV56)  UNAME_MACHINE=alphaev56 ;;
 	  EV56)  UNAME_MACHINE=alphaev56 ;;
 	  PCA56) UNAME_MACHINE=alphapca56 ;;
 	  PCA56) UNAME_MACHINE=alphapca56 ;;
@@ -983,6 +996,9 @@ EOF
     k1om:Linux:*:*)
     k1om:Linux:*:*)
 	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
 	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
 	exit ;;
 	exit ;;
+    loongarch32:Linux:*:* | loongarch64:Linux:*:* | loongarchx32:Linux:*:*)
+	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+	exit ;;
     m32r*:Linux:*:*)
     m32r*:Linux:*:*)
 	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
 	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
 	exit ;;
 	exit ;;
@@ -1033,7 +1049,7 @@ EOF
 	#endif
 	#endif
 	#endif
 	#endif
 EOF
 EOF
-	eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI'`"
+	eval "$($CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI')"
 	test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; }
 	test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; }
 	;;
 	;;
     mips64el:Linux:*:*)
     mips64el:Linux:*:*)
@@ -1053,7 +1069,7 @@ EOF
 	exit ;;
 	exit ;;
     parisc:Linux:*:* | hppa:Linux:*:*)
     parisc:Linux:*:* | hppa:Linux:*:*)
 	# Look for CPU level
 	# Look for CPU level
-	case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
+	case $(grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2) in
 	  PA7*) echo hppa1.1-unknown-linux-"$LIBC" ;;
 	  PA7*) echo hppa1.1-unknown-linux-"$LIBC" ;;
 	  PA8*) echo hppa2.0-unknown-linux-"$LIBC" ;;
 	  PA8*) echo hppa2.0-unknown-linux-"$LIBC" ;;
 	  *)    echo hppa-unknown-linux-"$LIBC" ;;
 	  *)    echo hppa-unknown-linux-"$LIBC" ;;
@@ -1071,7 +1087,7 @@ EOF
     ppcle:Linux:*:*)
     ppcle:Linux:*:*)
 	echo powerpcle-unknown-linux-"$LIBC"
 	echo powerpcle-unknown-linux-"$LIBC"
 	exit ;;
 	exit ;;
-    riscv32:Linux:*:* | riscv64:Linux:*:*)
+    riscv32:Linux:*:* | riscv32be:Linux:*:* | riscv64:Linux:*:* | riscv64be:Linux:*:*)
 	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
 	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
 	exit ;;
 	exit ;;
     s390:Linux:*:* | s390x:Linux:*:*)
     s390:Linux:*:* | s390x:Linux:*:*)
@@ -1094,17 +1110,16 @@ EOF
 	exit ;;
 	exit ;;
     x86_64:Linux:*:*)
     x86_64:Linux:*:*)
 	set_cc_for_build
 	set_cc_for_build
-	X86_64_ABI=
-	# If there is a compiler, see if it is configured for 32-bit objects.
-	if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+	LIBCABI=$LIBC
+	if test "$CC_FOR_BUILD" != no_compiler_found; then
 	    if (echo '#ifdef __ILP32__'; echo IS_X32; echo '#endif') | \
 	    if (echo '#ifdef __ILP32__'; echo IS_X32; echo '#endif') | \
-		(CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+		(CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
 		grep IS_X32 >/dev/null
 		grep IS_X32 >/dev/null
 	    then
 	    then
-		X86_64_ABI=x32
+		LIBCABI="$LIBC"x32
 	    fi
 	    fi
 	fi
 	fi
-	echo "$UNAME_MACHINE"-pc-linux-"$LIBC$X86_64_ABI"
+	echo "$UNAME_MACHINE"-pc-linux-"$LIBCABI"
 	exit ;;
 	exit ;;
     xtensa*:Linux:*:*)
     xtensa*:Linux:*:*)
 	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
 	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
@@ -1144,7 +1159,7 @@ EOF
 	echo "$UNAME_MACHINE"-pc-msdosdjgpp
 	echo "$UNAME_MACHINE"-pc-msdosdjgpp
 	exit ;;
 	exit ;;
     i*86:*:4.*:*)
     i*86:*:4.*:*)
-	UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'`
+	UNAME_REL=$(echo "$UNAME_RELEASE" | sed 's/\/MP$//')
 	if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
 	if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
 		echo "$UNAME_MACHINE"-univel-sysv"$UNAME_REL"
 		echo "$UNAME_MACHINE"-univel-sysv"$UNAME_REL"
 	else
 	else
@@ -1153,7 +1168,7 @@ EOF
 	exit ;;
 	exit ;;
     i*86:*:5:[678]*)
     i*86:*:5:[678]*)
 	# UnixWare 7.x, OpenUNIX and OpenServer 6.
 	# UnixWare 7.x, OpenUNIX and OpenServer 6.
-	case `/bin/uname -X | grep "^Machine"` in
+	case $(/bin/uname -X | grep "^Machine") in
 	    *486*)	     UNAME_MACHINE=i486 ;;
 	    *486*)	     UNAME_MACHINE=i486 ;;
 	    *Pentium)	     UNAME_MACHINE=i586 ;;
 	    *Pentium)	     UNAME_MACHINE=i586 ;;
 	    *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
 	    *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
@@ -1162,10 +1177,10 @@ EOF
 	exit ;;
 	exit ;;
     i*86:*:3.2:*)
     i*86:*:3.2:*)
 	if test -f /usr/options/cb.name; then
 	if test -f /usr/options/cb.name; then
-		UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
+		UNAME_REL=$(sed -n 's/.*Version //p' </usr/options/cb.name)
 		echo "$UNAME_MACHINE"-pc-isc"$UNAME_REL"
 		echo "$UNAME_MACHINE"-pc-isc"$UNAME_REL"
 	elif /bin/uname -X 2>/dev/null >/dev/null ; then
 	elif /bin/uname -X 2>/dev/null >/dev/null ; then
-		UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
+		UNAME_REL=$( (/bin/uname -X|grep Release|sed -e 's/.*= //'))
 		(/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
 		(/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
 		(/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
 		(/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
 			&& UNAME_MACHINE=i586
 			&& UNAME_MACHINE=i586
@@ -1215,7 +1230,7 @@ EOF
     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)
     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)
 	OS_REL=''
 	OS_REL=''
 	test -r /etc/.relid \
 	test -r /etc/.relid \
-	&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+	&& OS_REL=.$(sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid)
 	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
 	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
 	  && { echo i486-ncr-sysv4.3"$OS_REL"; exit; }
 	  && { echo i486-ncr-sysv4.3"$OS_REL"; exit; }
 	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
 	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
@@ -1226,7 +1241,7 @@ EOF
     NCR*:*:4.2:* | MPRAS*:*:4.2:*)
     NCR*:*:4.2:* | MPRAS*:*:4.2:*)
 	OS_REL='.3'
 	OS_REL='.3'
 	test -r /etc/.relid \
 	test -r /etc/.relid \
-	    && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+	    && OS_REL=.$(sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid)
 	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
 	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
 	    && { echo i486-ncr-sysv4.3"$OS_REL"; exit; }
 	    && { echo i486-ncr-sysv4.3"$OS_REL"; exit; }
 	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
 	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
@@ -1259,7 +1274,7 @@ EOF
 	exit ;;
 	exit ;;
     *:SINIX-*:*:*)
     *:SINIX-*:*:*)
 	if uname -p 2>/dev/null >/dev/null ; then
 	if uname -p 2>/dev/null >/dev/null ; then
-		UNAME_MACHINE=`(uname -p) 2>/dev/null`
+		UNAME_MACHINE=$( (uname -p) 2>/dev/null)
 		echo "$UNAME_MACHINE"-sni-sysv4
 		echo "$UNAME_MACHINE"-sni-sysv4
 	else
 	else
 		echo ns32k-sni-sysv
 		echo ns32k-sni-sysv
@@ -1293,7 +1308,7 @@ EOF
 	echo mips-sony-newsos6
 	echo mips-sony-newsos6
 	exit ;;
 	exit ;;
     R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
     R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
-	if [ -d /usr/nec ]; then
+	if test -d /usr/nec; then
 		echo mips-nec-sysv"$UNAME_RELEASE"
 		echo mips-nec-sysv"$UNAME_RELEASE"
 	else
 	else
 		echo mips-unknown-sysv"$UNAME_RELEASE"
 		echo mips-unknown-sysv"$UNAME_RELEASE"
@@ -1341,8 +1356,11 @@ EOF
     *:Rhapsody:*:*)
     *:Rhapsody:*:*)
 	echo "$UNAME_MACHINE"-apple-rhapsody"$UNAME_RELEASE"
 	echo "$UNAME_MACHINE"-apple-rhapsody"$UNAME_RELEASE"
 	exit ;;
 	exit ;;
+    arm64:Darwin:*:*)
+	echo aarch64-apple-darwin"$UNAME_RELEASE"
+	exit ;;
     *:Darwin:*:*)
     *:Darwin:*:*)
-	UNAME_PROCESSOR=`uname -p`
+	UNAME_PROCESSOR=$(uname -p)
 	case $UNAME_PROCESSOR in
 	case $UNAME_PROCESSOR in
 	    unknown) UNAME_PROCESSOR=powerpc ;;
 	    unknown) UNAME_PROCESSOR=powerpc ;;
 	esac
 	esac
@@ -1355,7 +1373,7 @@ EOF
 	else
 	else
 	    set_cc_for_build
 	    set_cc_for_build
 	fi
 	fi
-	if [ "$CC_FOR_BUILD" != no_compiler_found ]; then
+	if test "$CC_FOR_BUILD" != no_compiler_found; then
 	    if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
 	    if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
 		   (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
 		   (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
 		   grep IS_64BIT_ARCH >/dev/null
 		   grep IS_64BIT_ARCH >/dev/null
@@ -1379,7 +1397,7 @@ EOF
 	echo "$UNAME_PROCESSOR"-apple-darwin"$UNAME_RELEASE"
 	echo "$UNAME_PROCESSOR"-apple-darwin"$UNAME_RELEASE"
 	exit ;;
 	exit ;;
     *:procnto*:*:* | *:QNX:[0123456789]*:*)
     *:procnto*:*:* | *:QNX:[0123456789]*:*)
-	UNAME_PROCESSOR=`uname -p`
+	UNAME_PROCESSOR=$(uname -p)
 	if test "$UNAME_PROCESSOR" = x86; then
 	if test "$UNAME_PROCESSOR" = x86; then
 		UNAME_PROCESSOR=i386
 		UNAME_PROCESSOR=i386
 		UNAME_MACHINE=pc
 		UNAME_MACHINE=pc
@@ -1447,10 +1465,10 @@ EOF
 	echo mips-sei-seiux"$UNAME_RELEASE"
 	echo mips-sei-seiux"$UNAME_RELEASE"
 	exit ;;
 	exit ;;
     *:DragonFly:*:*)
     *:DragonFly:*:*)
-	echo "$UNAME_MACHINE"-unknown-dragonfly"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`"
+	echo "$UNAME_MACHINE"-unknown-dragonfly"$(echo "$UNAME_RELEASE"|sed -e 's/[-(].*//')"
 	exit ;;
 	exit ;;
     *:*VMS:*:*)
     *:*VMS:*:*)
-	UNAME_MACHINE=`(uname -p) 2>/dev/null`
+	UNAME_MACHINE=$( (uname -p) 2>/dev/null)
 	case "$UNAME_MACHINE" in
 	case "$UNAME_MACHINE" in
 	    A*) echo alpha-dec-vms ; exit ;;
 	    A*) echo alpha-dec-vms ; exit ;;
 	    I*) echo ia64-dec-vms ; exit ;;
 	    I*) echo ia64-dec-vms ; exit ;;
@@ -1460,7 +1478,7 @@ EOF
 	echo i386-pc-xenix
 	echo i386-pc-xenix
 	exit ;;
 	exit ;;
     i*86:skyos:*:*)
     i*86:skyos:*:*)
-	echo "$UNAME_MACHINE"-pc-skyos"`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'`"
+	echo "$UNAME_MACHINE"-pc-skyos"$(echo "$UNAME_RELEASE" | sed -e 's/ .*$//')"
 	exit ;;
 	exit ;;
     i*86:rdos:*:*)
     i*86:rdos:*:*)
 	echo "$UNAME_MACHINE"-pc-rdos
 	echo "$UNAME_MACHINE"-pc-rdos
@@ -1518,7 +1536,7 @@ main ()
 #define __ARCHITECTURE__ "m68k"
 #define __ARCHITECTURE__ "m68k"
 #endif
 #endif
   int version;
   int version;
-  version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
+  version=$( (hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null);
   if (version < 4)
   if (version < 4)
     printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
     printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
   else
   else
@@ -1610,7 +1628,7 @@ main ()
 }
 }
 EOF
 EOF
 
 
-$CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=`$dummy` &&
+$CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=$($dummy) &&
 	{ echo "$SYSTEM_NAME"; exit; }
 	{ echo "$SYSTEM_NAME"; exit; }
 
 
 # Apollos put the system type in the environment.
 # Apollos put the system type in the environment.
@@ -1635,9 +1653,15 @@ This script (version $timestamp), has failed to recognize the
 operating system you are using. If your script is old, overwrite *all*
 operating system you are using. If your script is old, overwrite *all*
 copies of config.guess and config.sub with the latest versions from:
 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
 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
+
+year=$(echo $timestamp | sed 's,-.*,,')
+# shellcheck disable=SC2003
+if test "$(expr "$(date +%Y)" - "$year")" -lt 3 ; then
+   cat >&2 <<EOF
 
 
 If $0 has already been updated, send the following data and any
 If $0 has already been updated, send the following data and any
 information you think might be pertinent to [email protected] to
 information you think might be pertinent to [email protected] to
@@ -1645,26 +1669,27 @@ provide the necessary information to handle your system.
 
 
 config.guess timestamp = $timestamp
 config.guess timestamp = $timestamp
 
 
-uname -m = `(uname -m) 2>/dev/null || echo unknown`
-uname -r = `(uname -r) 2>/dev/null || echo unknown`
-uname -s = `(uname -s) 2>/dev/null || echo unknown`
-uname -v = `(uname -v) 2>/dev/null || echo unknown`
+uname -m = $( (uname -m) 2>/dev/null || echo unknown)
+uname -r = $( (uname -r) 2>/dev/null || echo unknown)
+uname -s = $( (uname -s) 2>/dev/null || echo unknown)
+uname -v = $( (uname -v) 2>/dev/null || echo unknown)
 
 
-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
-/bin/uname -X     = `(/bin/uname -X) 2>/dev/null`
+/usr/bin/uname -p = $( (/usr/bin/uname -p) 2>/dev/null)
+/bin/uname -X     = $( (/bin/uname -X) 2>/dev/null)
 
 
-hostinfo               = `(hostinfo) 2>/dev/null`
-/bin/universe          = `(/bin/universe) 2>/dev/null`
-/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null`
-/bin/arch              = `(/bin/arch) 2>/dev/null`
-/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null`
-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
+hostinfo               = $( (hostinfo) 2>/dev/null)
+/bin/universe          = $( (/bin/universe) 2>/dev/null)
+/usr/bin/arch -k       = $( (/usr/bin/arch -k) 2>/dev/null)
+/bin/arch              = $( (/bin/arch) 2>/dev/null)
+/usr/bin/oslevel       = $( (/usr/bin/oslevel) 2>/dev/null)
+/usr/convex/getsysinfo = $( (/usr/convex/getsysinfo) 2>/dev/null)
 
 
 UNAME_MACHINE = "$UNAME_MACHINE"
 UNAME_MACHINE = "$UNAME_MACHINE"
 UNAME_RELEASE = "$UNAME_RELEASE"
 UNAME_RELEASE = "$UNAME_RELEASE"
 UNAME_SYSTEM  = "$UNAME_SYSTEM"
 UNAME_SYSTEM  = "$UNAME_SYSTEM"
 UNAME_VERSION = "$UNAME_VERSION"
 UNAME_VERSION = "$UNAME_VERSION"
 EOF
 EOF
+fi
 
 
 exit 1
 exit 1
 
 

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 180 - 175
libs/expat/conftools/config.sub


+ 80 - 68
libs/expat/conftools/install-sh

@@ -1,7 +1,7 @@
 #!/bin/sh
 #!/bin/sh
 # install - install a program, script, or datafile
 # 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
 # This originates from X11R5 (mit/util/scripts/install.sh), which was
 # later released in X11R6 (xc/config/util/install.sh) with the
 # later released in X11R6 (xc/config/util/install.sh) with the
@@ -69,6 +69,11 @@ posix_mkdir=
 # Desired mode of installed file.
 # Desired mode of installed file.
 mode=0755
 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=
 chgrpcmd=
 chmodcmd=$chmodprog
 chmodcmd=$chmodprog
 chowncmd=
 chowncmd=
@@ -99,18 +104,28 @@ Options:
      --version  display version info and exit.
      --version  display version info and exit.
 
 
   -c            (ignored)
   -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.
   -d            create directories instead of installing files.
   -g GROUP      $chgrpprog installed files to GROUP.
   -g GROUP      $chgrpprog installed files to GROUP.
   -m MODE       $chmodprog installed files to MODE.
   -m MODE       $chmodprog installed files to MODE.
   -o USER       $chownprog installed files to USER.
   -o USER       $chownprog installed files to USER.
+  -p            pass -p to $cpprog.
   -s            $stripprog installed files.
   -s            $stripprog installed files.
+  -S SUFFIX     attempt to back up existing files, with suffix SUFFIX.
   -t DIRECTORY  install into DIRECTORY.
   -t DIRECTORY  install into DIRECTORY.
   -T            report an error if DSTFILE is a directory.
   -T            report an error if DSTFILE is a directory.
 
 
 Environment variables override the default commands:
 Environment variables override the default commands:
   CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
   CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
   RMPROG STRIPPROG
   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 [email protected].
+Automake home page: https://www.gnu.org/software/automake/
 "
 "
 
 
 while test $# -ne 0; do
 while test $# -ne 0; do
@@ -137,8 +152,13 @@ while test $# -ne 0; do
     -o) chowncmd="$chownprog $2"
     -o) chowncmd="$chownprog $2"
         shift;;
         shift;;
 
 
+    -p) cpprog="$cpprog -p";;
+
     -s) stripcmd=$stripprog;;
     -s) stripcmd=$stripprog;;
 
 
+    -S) backupsuffix="$2"
+        shift;;
+
     -t)
     -t)
         is_target_a_directory=always
         is_target_a_directory=always
         dst_arg=$2
         dst_arg=$2
@@ -255,6 +275,10 @@ do
     dstdir=$dst
     dstdir=$dst
     test -d "$dstdir"
     test -d "$dstdir"
     dstdir_status=$?
     dstdir_status=$?
+    # Don't chown directories that already exist.
+    if test $dstdir_status = 0; then
+      chowncmd=""
+    fi
   else
   else
 
 
     # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
     # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
@@ -301,22 +325,6 @@ do
   if test $dstdir_status != 0; then
   if test $dstdir_status != 0; then
     case $posix_mkdir in
     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.
         # With -d, create the new directory with the user-specified mode.
         # Otherwise, rely on $mkdir_umask.
         # Otherwise, rely on $mkdir_umask.
         if test -n "$dir_arg"; then
         if test -n "$dir_arg"; then
@@ -326,52 +334,49 @@ do
         fi
         fi
 
 
         posix_mkdir=false
         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
     esac
 
 
     if
     if
@@ -382,7 +387,7 @@ do
     then :
     then :
     else
     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
       # or it failed possibly due to a race condition.  Create the
       # directory the slow way, step by step, checking for races as we go.
       # directory the slow way, step by step, checking for races as we go.
 
 
@@ -411,7 +416,7 @@ do
           prefixes=
           prefixes=
         else
         else
           if $posix_mkdir; then
           if $posix_mkdir; then
-            (umask=$mkdir_umask &&
+            (umask $mkdir_umask &&
              $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
              $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
             # Don't fail if two instances are running concurrently.
             # Don't fail if two instances are running concurrently.
             test -d "$prefix" || exit 1
             test -d "$prefix" || exit 1
@@ -488,6 +493,13 @@ do
     then
     then
       rm -f "$dsttmp"
       rm -f "$dsttmp"
     else
     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.
       # Rename the file to the real destination.
       $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
       $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
 
 
@@ -502,9 +514,9 @@ do
         # file should still install successfully.
         # file should still install successfully.
         {
         {
           test ! -f "$dst" ||
           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 $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
           { echo "$0: cannot unlink or rename $dst" >&2
             (exit 1); exit 1
             (exit 1); exit 1

+ 5 - 3
libs/expat/conftools/test-driver

@@ -42,11 +42,13 @@ print_usage ()
 {
 {
   cat <<END
   cat <<END
 Usage:
 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]
               TEST-SCRIPT [TEST-SCRIPT-ARGUMENTS]
+
 The '--test-name', '--log-file' and '--trs-file' options are mandatory.
 The '--test-name', '--log-file' and '--trs-file' options are mandatory.
+See the GNU Automake documentation for information.
 END
 END
 }
 }
 
 

+ 12 - 2
libs/expat/doc/Makefile.in

@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.16.2 from Makefile.am.
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
 # @configure_input@
 # @configure_input@
 
 
 # Copyright (C) 1994-2020 Free Software Foundation, Inc.
 # Copyright (C) 1994-2020 Free Software Foundation, Inc.
@@ -207,7 +207,6 @@ AWK = @AWK@
 CC = @CC@
 CC = @CC@
 CCDEPMODE = @CCDEPMODE@
 CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CFLAGS = @CFLAGS@
-CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CPPFLAGS = @CPPFLAGS@
 CXX = @CXX@
 CXX = @CXX@
 CXXCPP = @CXXCPP@
 CXXCPP = @CXXCPP@
@@ -225,6 +224,13 @@ ECHO_N = @ECHO_N@
 ECHO_T = @ECHO_T@
 ECHO_T = @ECHO_T@
 EGREP = @EGREP@
 EGREP = @EGREP@
 EXEEXT = @EXEEXT@
 EXEEXT = @EXEEXT@
+EXPAT_ATTR_INFO = @EXPAT_ATTR_INFO@
+EXPAT_CHAR_TYPE = @EXPAT_CHAR_TYPE@
+EXPAT_CONTEXT_BYTES = @EXPAT_CONTEXT_BYTES@
+EXPAT_DTD = @EXPAT_DTD@
+EXPAT_LARGE_SIZE = @EXPAT_LARGE_SIZE@
+EXPAT_MIN_SIZE = @EXPAT_MIN_SIZE@
+EXPAT_NS = @EXPAT_NS@
 FGREP = @FGREP@
 FGREP = @FGREP@
 FILEMAP = @FILEMAP@
 FILEMAP = @FILEMAP@
 GREP = @GREP@
 GREP = @GREP@
@@ -237,6 +243,7 @@ LD = @LD@
 LDFLAGS = @LDFLAGS@
 LDFLAGS = @LDFLAGS@
 LIBAGE = @LIBAGE@
 LIBAGE = @LIBAGE@
 LIBCURRENT = @LIBCURRENT@
 LIBCURRENT = @LIBCURRENT@
+LIBDIR_BASENAME = @LIBDIR_BASENAME@
 LIBOBJS = @LIBOBJS@
 LIBOBJS = @LIBOBJS@
 LIBREVISION = @LIBREVISION@
 LIBREVISION = @LIBREVISION@
 LIBS = @LIBS@
 LIBS = @LIBS@
@@ -266,6 +273,9 @@ RANLIB = @RANLIB@
 SED = @SED@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHELL = @SHELL@
+SO_MAJOR = @SO_MAJOR@
+SO_MINOR = @SO_MINOR@
+SO_PATCH = @SO_PATCH@
 STRIP = @STRIP@
 STRIP = @STRIP@
 VERSION = @VERSION@
 VERSION = @VERSION@
 _EXPAT_OUTPUT_NAME = @_EXPAT_OUTPUT_NAME@
 _EXPAT_OUTPUT_NAME = @_EXPAT_OUTPUT_NAME@

+ 23 - 7
libs/expat/doc/xmlwf.1

@@ -15,7 +15,7 @@ xmlwf \- Determines if an XML document is well-formed
 \fBxmlwf\fR \kx
 \fBxmlwf\fR \kx
 .if (\nx>(\n(.l/2)) .nr x (\n(.l/5)
 .if (\nx>(\n(.l/2)) .nr x (\n(.l/5)
 'in \n(.iu+\nxu
 'in \n(.iu+\nxu
-[\fB-s\fR] [\fB-n\fR] [\fB-p\fR] [\fB-x\fR] [\fB-e \fIencoding\fB\fR] [\fB-w\fR] [\fB-d \fIoutput-dir\fB\fR] [\fB-c\fR] [\fB-m\fR] [\fB-r\fR] [\fB-t\fR] [\fB-N\fR] [\fB-v\fR] [file ...]
+[\fB-s\fR] [\fB-n\fR] [\fB-p\fR] [\fB-x\fR] [\fB-e \fIencoding\fB\fR] [\fB-w\fR] [\fB-d \fIoutput-dir\fB\fR] [\fB-c\fR] [\fB-m\fR] [\fB-r\fR] [\fB-t\fR] [\fB-N\fR] [\fB-k\fR] [\fB-v\fR] [file ...]
 'in \n(.iu-\nxu
 'in \n(.iu-\nxu
 .ad b
 .ad b
 'hy
 'hy
@@ -156,6 +156,14 @@ without client overhead.
 \*(T<\fB\-t\fR\*(T> turns off most of the output options
 \*(T<\fB\-t\fR\*(T> turns off most of the output options
 (\*(T<\fB\-d\fR\*(T>, \*(T<\fB\-m\fR\*(T>, \*(T<\fB\-c\fR\*(T>, ...).
 (\*(T<\fB\-d\fR\*(T>, \*(T<\fB\-m\fR\*(T>, \*(T<\fB\-c\fR\*(T>, ...).
 .TP 
 .TP 
+\*(T<\fB\-k\fR\*(T>
+When processing multiple files, Expat by default halts after the 
+the first file with an error. This tells Expat to report the error
+but to keep processing. 
+This can be useful, for example, when testing a filter that converts
+many files to XML and you want to quickly find out which conversions
+failed.
+.TP 
 \*(T<\fB\-v\fR\*(T>
 \*(T<\fB\-v\fR\*(T>
 Prints the version of the Expat library being used, including some
 Prints the version of the Expat library being used, including some
 information on the compile-time configuration of the library, and
 information on the compile-time configuration of the library, and
@@ -210,24 +218,32 @@ will run \fBxmlwf\fR on the file
 Older versions of \fBxmlwf\fR do not support
 Older versions of \fBxmlwf\fR do not support
 reading from standard input.
 reading from standard input.
 .SH OUTPUT
 .SH OUTPUT
-If an input file is not well-formed,
-\fBxmlwf\fR prints a single line describing
-the problem to standard output. If a file is well formed,
-\fBxmlwf\fR outputs nothing.
+\fBxmlwf\fR outputs nothing for files which are problem-free.
+If any input file is not well-formed, or if the output for any
+input file cannot be opened, \fBxmlwf\fR prints a single
+line describing the problem to standard output.
+.PP
+If the \*(T<\fB\-k\fR\*(T> option is not provided, \fBxmlwf\fR
+halts upon encountering a well-formedness or output-file error. 
+If \*(T<\fB\-k\fR\*(T> is provided, \fBxmlwf\fR continues
+processing the remaining input files, describing problems found with any of them.
 .SH "EXIT STATUS"
 .SH "EXIT STATUS"
 For option \*(T<\fB\-v\fR\*(T> or \*(T<\fB\-h\fR\*(T>, \fBxmlwf\fR always exits with status code 0. For other cases, the following exit status codes are returned:
 For option \*(T<\fB\-v\fR\*(T> or \*(T<\fB\-h\fR\*(T>, \fBxmlwf\fR always exits with status code 0. For other cases, the following exit status codes are returned:
 .TP 
 .TP 
 \*(T<\fB0\fR\*(T>
 \*(T<\fB0\fR\*(T>
-The input files are well-formed.
+The input files are well-formed and the output (if requested) was written successfully.
 .TP 
 .TP 
 \*(T<\fB1\fR\*(T>
 \*(T<\fB1\fR\*(T>
 An internal error occurred.
 An internal error occurred.
 .TP 
 .TP 
 \*(T<\fB2\fR\*(T>
 \*(T<\fB2\fR\*(T>
-An input file was not well-formed or could not be parsed.
+One or more input files were not well-formed or could not be parsed.
 .TP 
 .TP 
 \*(T<\fB3\fR\*(T>
 \*(T<\fB3\fR\*(T>
 If using the \*(T<\fB\-d\fR\*(T> option, an error occurred opening an output file.
 If using the \*(T<\fB\-d\fR\*(T> option, an error occurred opening an output file.
+.TP 
+\*(T<\fB4\fR\*(T>
+There was a command-line argument error in how \fBxmlwf\fR was invoked.
 .SH BUGS
 .SH BUGS
 The errors should go to standard error, not standard output.
 The errors should go to standard error, not standard output.
 .PP
 .PP

+ 33 - 7
libs/expat/doc/xmlwf.xml

@@ -60,6 +60,7 @@
 	  <arg><option>-t</option></arg>
 	  <arg><option>-t</option></arg>
           <arg><option>-N</option></arg>
           <arg><option>-N</option></arg>
 
 
+	  <arg><option>-k</option></arg>
 	  <arg><option>-v</option></arg>
 	  <arg><option>-v</option></arg>
 
 
 	  <arg>file ...</arg>
 	  <arg>file ...</arg>
@@ -293,6 +294,20 @@ supports both.
         </listitem>
         </listitem>
       </varlistentry>
       </varlistentry>
 
 
+      <varlistentry>
+	<term><option>-k</option></term>
+	<listitem>
+		<para>
+  When processing multiple files, Expat by default halts after the	    
+  the first file with an error. This tells Expat to report the error
+  but to keep processing. 
+  This can be useful, for example, when testing a filter that converts
+  many files to XML and you want to quickly find out which conversions
+  failed.
+	  </para>
+	</listitem>
+      </varlistentry>
+      
       <varlistentry>
       <varlistentry>
         <term><option>-v</option></term>
         <term><option>-v</option></term>
         <listitem>
         <listitem>
@@ -379,11 +394,17 @@ supports both.
   <refsect1>
   <refsect1>
   <title>OUTPUT</title>
   <title>OUTPUT</title>
     <para>
     <para>
-	If an input file is not well-formed,
-	<command>&dhpackage;</command> prints a single line describing
-	the problem to standard output.  If a file is well formed,
-	<command>&dhpackage;</command> outputs nothing.
-	</para>
+	<command>&dhpackage;</command> outputs nothing for files which are problem-free.
+        If any input file is not well-formed, or if the output for any
+	input file cannot be opened, <command>&dhpackage;</command> prints a single
+	line describing	the problem to standard output.
+    </para>
+    <para>
+        If the <option>-k</option> option is not provided, <command>&dhpackage;</command>
+	halts upon encountering a well-formedness or output-file error. 
+	If <option>-k</option> is provided, <command>&dhpackage;</command> continues
+	processing the remaining input files, describing problems found with any of them.
+    </para>
   </refsect1>
   </refsect1>
 
 
   <refsect1>
   <refsect1>
@@ -392,7 +413,7 @@ supports both.
     <variablelist>
     <variablelist>
       <varlistentry>
       <varlistentry>
         <term><option>0</option></term>
         <term><option>0</option></term>
-        <listitem><para>The input files are well-formed.</para>
+        <listitem><para>The input files are well-formed and the output (if requested) was written successfully.</para>
         </listitem>
         </listitem>
       </varlistentry>
       </varlistentry>
       <varlistentry>
       <varlistentry>
@@ -402,7 +423,7 @@ supports both.
       </varlistentry>
       </varlistentry>
       <varlistentry>
       <varlistentry>
         <term><option>2</option></term>
         <term><option>2</option></term>
-        <listitem><para>An input file was not well-formed or could not be parsed.</para>
+        <listitem><para>One or more input files were not well-formed or could not be parsed.</para>
         </listitem>
         </listitem>
       </varlistentry>
       </varlistentry>
       <varlistentry>
       <varlistentry>
@@ -410,6 +431,11 @@ supports both.
         <listitem><para>If using the <option>-d</option> option, an error occurred opening an output file.</para>
         <listitem><para>If using the <option>-d</option> option, an error occurred opening an output file.</para>
         </listitem>
         </listitem>
       </varlistentry>
       </varlistentry>
+      <varlistentry>
+        <term><option>4</option></term>
+        <listitem><para>There was a command-line argument error in how <command>&dhpackage;</command> was invoked.</para>
+        </listitem>
+      </varlistentry>
     </variablelist>
     </variablelist>
 	</para>
 	</para>
   </refsect1>
   </refsect1>

+ 12 - 2
libs/expat/examples/Makefile.in

@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.16.2 from Makefile.am.
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
 # @configure_input@
 # @configure_input@
 
 
 # Copyright (C) 1994-2020 Free Software Foundation, Inc.
 # Copyright (C) 1994-2020 Free Software Foundation, Inc.
@@ -231,7 +231,6 @@ AWK = @AWK@
 CC = @CC@
 CC = @CC@
 CCDEPMODE = @CCDEPMODE@
 CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CFLAGS = @CFLAGS@
-CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CPPFLAGS = @CPPFLAGS@
 CXX = @CXX@
 CXX = @CXX@
 CXXCPP = @CXXCPP@
 CXXCPP = @CXXCPP@
@@ -249,6 +248,13 @@ ECHO_N = @ECHO_N@
 ECHO_T = @ECHO_T@
 ECHO_T = @ECHO_T@
 EGREP = @EGREP@
 EGREP = @EGREP@
 EXEEXT = @EXEEXT@
 EXEEXT = @EXEEXT@
+EXPAT_ATTR_INFO = @EXPAT_ATTR_INFO@
+EXPAT_CHAR_TYPE = @EXPAT_CHAR_TYPE@
+EXPAT_CONTEXT_BYTES = @EXPAT_CONTEXT_BYTES@
+EXPAT_DTD = @EXPAT_DTD@
+EXPAT_LARGE_SIZE = @EXPAT_LARGE_SIZE@
+EXPAT_MIN_SIZE = @EXPAT_MIN_SIZE@
+EXPAT_NS = @EXPAT_NS@
 FGREP = @FGREP@
 FGREP = @FGREP@
 FILEMAP = @FILEMAP@
 FILEMAP = @FILEMAP@
 GREP = @GREP@
 GREP = @GREP@
@@ -261,6 +267,7 @@ LD = @LD@
 LDFLAGS = @LDFLAGS@
 LDFLAGS = @LDFLAGS@
 LIBAGE = @LIBAGE@
 LIBAGE = @LIBAGE@
 LIBCURRENT = @LIBCURRENT@
 LIBCURRENT = @LIBCURRENT@
+LIBDIR_BASENAME = @LIBDIR_BASENAME@
 LIBOBJS = @LIBOBJS@
 LIBOBJS = @LIBOBJS@
 LIBREVISION = @LIBREVISION@
 LIBREVISION = @LIBREVISION@
 LIBS = @LIBS@
 LIBS = @LIBS@
@@ -290,6 +297,9 @@ RANLIB = @RANLIB@
 SED = @SED@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHELL = @SHELL@
+SO_MAJOR = @SO_MAJOR@
+SO_MINOR = @SO_MINOR@
+SO_PATCH = @SO_PATCH@
 STRIP = @STRIP@
 STRIP = @STRIP@
 VERSION = @VERSION@
 VERSION = @VERSION@
 _EXPAT_OUTPUT_NAME = @_EXPAT_OUTPUT_NAME@
 _EXPAT_OUTPUT_NAME = @_EXPAT_OUTPUT_NAME@

+ 9 - 7
libs/expat/expat_config.h

@@ -31,15 +31,15 @@
 /* Define to 1 if you have the `bsd' library (-lbsd). */
 /* Define to 1 if you have the `bsd' library (-lbsd). */
 /* #undef HAVE_LIBBSD */
 /* #undef HAVE_LIBBSD */
 
 
-/* Define to 1 if you have the <memory.h> header file. */
-#define HAVE_MEMORY_H 1
-
 /* Define to 1 if you have a working `mmap' system call. */
 /* Define to 1 if you have a working `mmap' system call. */
 #define HAVE_MMAP 1
 #define HAVE_MMAP 1
 
 
 /* Define to 1 if you have the <stdint.h> header file. */
 /* Define to 1 if you have the <stdint.h> header file. */
 #define HAVE_STDINT_H 1
 #define HAVE_STDINT_H 1
 
 
+/* Define to 1 if you have the <stdio.h> header file. */
+#define HAVE_STDIO_H 1
+
 /* Define to 1 if you have the <stdlib.h> header file. */
 /* Define to 1 if you have the <stdlib.h> header file. */
 #define HAVE_STDLIB_H 1
 #define HAVE_STDLIB_H 1
 
 
@@ -77,7 +77,7 @@
 #define PACKAGE_NAME "expat"
 #define PACKAGE_NAME "expat"
 
 
 /* Define to the full name and version of this package. */
 /* Define to the full name and version of this package. */
-#define PACKAGE_STRING "expat 2.2.10"
+#define PACKAGE_STRING "expat 2.3.0"
 
 
 /* Define to the one symbol short name of this package. */
 /* Define to the one symbol short name of this package. */
 #define PACKAGE_TARNAME "expat"
 #define PACKAGE_TARNAME "expat"
@@ -86,13 +86,15 @@
 #define PACKAGE_URL ""
 #define PACKAGE_URL ""
 
 
 /* Define to the version of this package. */
 /* Define to the version of this package. */
-#define PACKAGE_VERSION "2.2.10"
+#define PACKAGE_VERSION "2.3.0"
 
 
-/* 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. */
 #define STDC_HEADERS 1
 #define STDC_HEADERS 1
 
 
 /* Version number of package */
 /* Version number of package */
-#define VERSION "2.2.10"
+#define VERSION "2.3.0"
 
 
 /* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
 /* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
    significant byte first (like Motorola and SPARC, unlike Intel). */
    significant byte first (like Motorola and SPARC, unlike Intel). */

+ 6 - 4
libs/expat/expat_config.h.in

@@ -30,15 +30,15 @@
 /* Define to 1 if you have the `bsd' library (-lbsd). */
 /* Define to 1 if you have the `bsd' library (-lbsd). */
 #undef HAVE_LIBBSD
 #undef HAVE_LIBBSD
 
 
-/* Define to 1 if you have the <memory.h> header file. */
-#undef HAVE_MEMORY_H
-
 /* Define to 1 if you have a working `mmap' system call. */
 /* Define to 1 if you have a working `mmap' system call. */
 #undef HAVE_MMAP
 #undef HAVE_MMAP
 
 
 /* Define to 1 if you have the <stdint.h> header file. */
 /* Define to 1 if you have the <stdint.h> header file. */
 #undef HAVE_STDINT_H
 #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. */
 /* Define to 1 if you have the <stdlib.h> header file. */
 #undef HAVE_STDLIB_H
 #undef HAVE_STDLIB_H
 
 
@@ -87,7 +87,9 @@
 /* Define to the version of this package. */
 /* Define to the version of this package. */
 #undef PACKAGE_VERSION
 #undef PACKAGE_VERSION
 
 
-/* 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
 #undef STDC_HEADERS
 
 
 /* Version number of package */
 /* Version number of package */

+ 12 - 2
libs/expat/lib/Makefile.in

@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.16.2 from Makefile.am.
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
 # @configure_input@
 # @configure_input@
 
 
 # Copyright (C) 1994-2020 Free Software Foundation, Inc.
 # Copyright (C) 1994-2020 Free Software Foundation, Inc.
@@ -265,7 +265,6 @@ AWK = @AWK@
 CC = @CC@
 CC = @CC@
 CCDEPMODE = @CCDEPMODE@
 CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CFLAGS = @CFLAGS@
-CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CPPFLAGS = @CPPFLAGS@
 CXX = @CXX@
 CXX = @CXX@
 CXXCPP = @CXXCPP@
 CXXCPP = @CXXCPP@
@@ -283,6 +282,13 @@ ECHO_N = @ECHO_N@
 ECHO_T = @ECHO_T@
 ECHO_T = @ECHO_T@
 EGREP = @EGREP@
 EGREP = @EGREP@
 EXEEXT = @EXEEXT@
 EXEEXT = @EXEEXT@
+EXPAT_ATTR_INFO = @EXPAT_ATTR_INFO@
+EXPAT_CHAR_TYPE = @EXPAT_CHAR_TYPE@
+EXPAT_CONTEXT_BYTES = @EXPAT_CONTEXT_BYTES@
+EXPAT_DTD = @EXPAT_DTD@
+EXPAT_LARGE_SIZE = @EXPAT_LARGE_SIZE@
+EXPAT_MIN_SIZE = @EXPAT_MIN_SIZE@
+EXPAT_NS = @EXPAT_NS@
 FGREP = @FGREP@
 FGREP = @FGREP@
 FILEMAP = @FILEMAP@
 FILEMAP = @FILEMAP@
 GREP = @GREP@
 GREP = @GREP@
@@ -295,6 +301,7 @@ LD = @LD@
 LDFLAGS = @LDFLAGS@
 LDFLAGS = @LDFLAGS@
 LIBAGE = @LIBAGE@
 LIBAGE = @LIBAGE@
 LIBCURRENT = @LIBCURRENT@
 LIBCURRENT = @LIBCURRENT@
+LIBDIR_BASENAME = @LIBDIR_BASENAME@
 LIBOBJS = @LIBOBJS@
 LIBOBJS = @LIBOBJS@
 LIBREVISION = @LIBREVISION@
 LIBREVISION = @LIBREVISION@
 LIBS = @LIBS@
 LIBS = @LIBS@
@@ -324,6 +331,9 @@ RANLIB = @RANLIB@
 SED = @SED@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHELL = @SHELL@
+SO_MAJOR = @SO_MAJOR@
+SO_MINOR = @SO_MINOR@
+SO_PATCH = @SO_PATCH@
 STRIP = @STRIP@
 STRIP = @STRIP@
 VERSION = @VERSION@
 VERSION = @VERSION@
 _EXPAT_OUTPUT_NAME = @_EXPAT_OUTPUT_NAME@
 _EXPAT_OUTPUT_NAME = @_EXPAT_OUTPUT_NAME@

+ 6 - 4
libs/expat/lib/expat.h

@@ -115,7 +115,9 @@ enum XML_Error {
   XML_ERROR_RESERVED_PREFIX_XMLNS,
   XML_ERROR_RESERVED_PREFIX_XMLNS,
   XML_ERROR_RESERVED_NAMESPACE_URI,
   XML_ERROR_RESERVED_NAMESPACE_URI,
   /* Added in 2.2.1. */
   /* Added in 2.2.1. */
-  XML_ERROR_INVALID_ARGUMENT
+  XML_ERROR_INVALID_ARGUMENT,
+  /* Added in 2.3.0. */
+  XML_ERROR_NO_BUFFER
 };
 };
 
 
 enum XML_Content_Type {
 enum XML_Content_Type {
@@ -513,7 +515,7 @@ typedef struct {
    Otherwise it must return XML_STATUS_ERROR.
    Otherwise it must return XML_STATUS_ERROR.
 
 
    If info does not describe a suitable encoding, then the parser will
    If info does not describe a suitable encoding, then the parser will
-   return an XML_UNKNOWN_ENCODING error.
+   return an XML_ERROR_UNKNOWN_ENCODING error.
 */
 */
 typedef int(XMLCALL *XML_UnknownEncodingHandler)(void *encodingHandlerData,
 typedef int(XMLCALL *XML_UnknownEncodingHandler)(void *encodingHandlerData,
                                                  const XML_Char *name,
                                                  const XML_Char *name,
@@ -1014,8 +1016,8 @@ XML_GetFeatureList(void);
    See http://semver.org.
    See http://semver.org.
 */
 */
 #define XML_MAJOR_VERSION 2
 #define XML_MAJOR_VERSION 2
-#define XML_MINOR_VERSION 2
-#define XML_MICRO_VERSION 10
+#define XML_MINOR_VERSION 3
+#define XML_MICRO_VERSION 0
 
 
 #ifdef __cplusplus
 #ifdef __cplusplus
 }
 }

+ 4 - 9
libs/expat/lib/siphash.h

@@ -11,6 +11,9 @@
  * --------------------------------------------------------------------------
  * --------------------------------------------------------------------------
  * HISTORY:
  * HISTORY:
  *
  *
+ * 2020-10-03  (Sebastian Pipping)
+ *   - Drop support for Visual Studio 9.0/2008 and earlier
+ *
  * 2019-08-03  (Sebastian Pipping)
  * 2019-08-03  (Sebastian Pipping)
  *   - Mark part of sip24_valid as to be excluded from clang-format
  *   - Mark part of sip24_valid as to be excluded from clang-format
  *   - Re-format code using clang-format 9
  *   - Re-format code using clang-format 9
@@ -96,15 +99,7 @@
 #define SIPHASH_H
 #define SIPHASH_H
 
 
 #include <stddef.h> /* size_t */
 #include <stddef.h> /* size_t */
-
-#if defined(_WIN32) && defined(_MSC_VER) && (_MSC_VER < 1600)
-/* For vs2003/7.1 up to vs2008/9.0; _MSC_VER 1600 is vs2010/10.0 */
-typedef unsigned __int8 uint8_t;
-typedef unsigned __int32 uint32_t;
-typedef unsigned __int64 uint64_t;
-#else
-#  include <stdint.h> /* uint64_t uint32_t uint8_t */
-#endif
+#include <stdint.h> /* uint64_t uint32_t uint8_t */
 
 
 /*
 /*
  * Workaround to not require a C++11 compiler for using ULL suffix
  * Workaround to not require a C++11 compiler for using ULL suffix

+ 12 - 12
libs/expat/lib/xmlparse.c

@@ -1,4 +1,4 @@
-/* 5cd169f2942b85c05e0b1b96f9990f91ac3d07e470ad7ce906ac8590c8ed4f35 (2.2.10+)
+/* d667b5f8e56e24fdfaf5e38596d419d924a9fadceb987d81d5613ecb7ca51b0e (2.3.0+)
                             __  __            _
                             __  __            _
                          ___\ \/ /_ __   __ _| |_
                          ___\ \/ /_ __   __ _| |_
                         / _ \\  /| '_ \ / _` | __|
                         / _ \\  /| '_ \ / _` | __|
@@ -47,17 +47,7 @@
 #include <limits.h> /* UINT_MAX */
 #include <limits.h> /* UINT_MAX */
 #include <stdio.h>  /* fprintf */
 #include <stdio.h>  /* fprintf */
 #include <stdlib.h> /* getenv, rand_s */
 #include <stdlib.h> /* getenv, rand_s */
-
-#if defined(_WIN32) && defined(_MSC_VER) && (_MSC_VER < 1600)
-/* vs2008/9.0 and earlier lack stdint.h; _MSC_VER 1600 is vs2010/10.0 */
-#  if defined(_WIN64)
-typedef unsigned __int64 uintptr_t;
-#  else
-typedef unsigned __int32 uintptr_t;
-#  endif
-#else
-#  include <stdint.h> /* uintptr_t */
-#endif
+#include <stdint.h> /* uintptr_t */
 
 
 #ifdef _WIN32
 #ifdef _WIN32
 #  define getpid GetCurrentProcessId
 #  define getpid GetCurrentProcessId
@@ -1893,6 +1883,12 @@ XML_ParseBuffer(XML_Parser parser, int len, int isFinal) {
     parser->m_errorCode = XML_ERROR_FINISHED;
     parser->m_errorCode = XML_ERROR_FINISHED;
     return XML_STATUS_ERROR;
     return XML_STATUS_ERROR;
   case XML_INITIALIZED:
   case XML_INITIALIZED:
+    /* Has someone called XML_GetBuffer successfully before? */
+    if (! parser->m_bufferPtr) {
+      parser->m_errorCode = XML_ERROR_NO_BUFFER;
+      return XML_STATUS_ERROR;
+    }
+
     if (parser->m_parentParser == NULL && ! startParsing(parser)) {
     if (parser->m_parentParser == NULL && ! startParsing(parser)) {
       parser->m_errorCode = XML_ERROR_NO_MEMORY;
       parser->m_errorCode = XML_ERROR_NO_MEMORY;
       return XML_STATUS_ERROR;
       return XML_STATUS_ERROR;
@@ -2337,6 +2333,10 @@ XML_ErrorString(enum XML_Error code) {
   /* Added in 2.2.5. */
   /* Added in 2.2.5. */
   case XML_ERROR_INVALID_ARGUMENT: /* Constant added in 2.2.1, already */
   case XML_ERROR_INVALID_ARGUMENT: /* Constant added in 2.2.1, already */
     return XML_L("invalid argument");
     return XML_L("invalid argument");
+    /* Added in 2.3.0. */
+  case XML_ERROR_NO_BUFFER:
+    return XML_L(
+        "a successful prior call to function XML_GetBuffer is required");
   }
   }
   return NULL;
   return NULL;
 }
 }

+ 1 - 9
libs/expat/lib/xmltok.c

@@ -32,15 +32,7 @@
 
 
 #include <stddef.h>
 #include <stddef.h>
 #include <string.h> /* memcpy */
 #include <string.h> /* memcpy */
-
-#if defined(_MSC_VER) && (_MSC_VER <= 1700)
-/* for vs2012/11.0/1700 and earlier Visual Studio compilers */
-#  define bool int
-#  define false 0
-#  define true 1
-#else
-#  include <stdbool.h>
-#endif
+#include <stdbool.h>
 
 
 #ifdef _WIN32
 #ifdef _WIN32
 #  include "winconfig.h"
 #  include "winconfig.h"

+ 14 - 3
libs/expat/tests/Makefile.in

@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.16.2 from Makefile.am.
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
 # @configure_input@
 # @configure_input@
 
 
 # Copyright (C) 1994-2020 Free Software Foundation, Inc.
 # Copyright (C) 1994-2020 Free Software Foundation, Inc.
@@ -443,6 +443,7 @@ am__set_TESTS_bases = \
   bases='$(TEST_LOGS)'; \
   bases='$(TEST_LOGS)'; \
   bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
   bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
   bases=`echo $$bases`
   bases=`echo $$bases`
+AM_TESTSUITE_SUMMARY_HEADER = ' for $(PACKAGE_STRING)'
 RECHECK_LOGS = $(TEST_LOGS)
 RECHECK_LOGS = $(TEST_LOGS)
 TEST_SUITE_LOG = test-suite.log
 TEST_SUITE_LOG = test-suite.log
 TEST_EXTENSIONS = @EXEEXT@ .test
 TEST_EXTENSIONS = @EXEEXT@ .test
@@ -509,7 +510,6 @@ AWK = @AWK@
 CC = @CC@
 CC = @CC@
 CCDEPMODE = @CCDEPMODE@
 CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CFLAGS = @CFLAGS@
-CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CPPFLAGS = @CPPFLAGS@
 CXX = @CXX@
 CXX = @CXX@
 CXXCPP = @CXXCPP@
 CXXCPP = @CXXCPP@
@@ -527,6 +527,13 @@ ECHO_N = @ECHO_N@
 ECHO_T = @ECHO_T@
 ECHO_T = @ECHO_T@
 EGREP = @EGREP@
 EGREP = @EGREP@
 EXEEXT = @EXEEXT@
 EXEEXT = @EXEEXT@
+EXPAT_ATTR_INFO = @EXPAT_ATTR_INFO@
+EXPAT_CHAR_TYPE = @EXPAT_CHAR_TYPE@
+EXPAT_CONTEXT_BYTES = @EXPAT_CONTEXT_BYTES@
+EXPAT_DTD = @EXPAT_DTD@
+EXPAT_LARGE_SIZE = @EXPAT_LARGE_SIZE@
+EXPAT_MIN_SIZE = @EXPAT_MIN_SIZE@
+EXPAT_NS = @EXPAT_NS@
 FGREP = @FGREP@
 FGREP = @FGREP@
 FILEMAP = @FILEMAP@
 FILEMAP = @FILEMAP@
 GREP = @GREP@
 GREP = @GREP@
@@ -539,6 +546,7 @@ LD = @LD@
 LDFLAGS = @LDFLAGS@
 LDFLAGS = @LDFLAGS@
 LIBAGE = @LIBAGE@
 LIBAGE = @LIBAGE@
 LIBCURRENT = @LIBCURRENT@
 LIBCURRENT = @LIBCURRENT@
+LIBDIR_BASENAME = @LIBDIR_BASENAME@
 LIBOBJS = @LIBOBJS@
 LIBOBJS = @LIBOBJS@
 LIBREVISION = @LIBREVISION@
 LIBREVISION = @LIBREVISION@
 LIBS = @LIBS@
 LIBS = @LIBS@
@@ -568,6 +576,9 @@ RANLIB = @RANLIB@
 SED = @SED@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHELL = @SHELL@
+SO_MAJOR = @SO_MAJOR@
+SO_MINOR = @SO_MINOR@
+SO_PATCH = @SO_PATCH@
 STRIP = @STRIP@
 STRIP = @STRIP@
 VERSION = @VERSION@
 VERSION = @VERSION@
 _EXPAT_OUTPUT_NAME = @_EXPAT_OUTPUT_NAME@
 _EXPAT_OUTPUT_NAME = @_EXPAT_OUTPUT_NAME@
@@ -986,7 +997,7 @@ $(TEST_SUITE_LOG): $(TEST_LOGS)
 	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
 	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
 	fi;								\
 	fi;								\
 	echo "$${col}$$br$${std}"; 					\
 	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}"; 					\
 	echo "$${col}$$br$${std}"; 					\
 	create_testsuite_report --maybe-color;				\
 	create_testsuite_report --maybe-color;				\
 	echo "$$col$$br$$std";						\
 	echo "$$col$$br$$std";						\

+ 12 - 2
libs/expat/tests/benchmark/Makefile.in

@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.16.2 from Makefile.am.
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
 # @configure_input@
 # @configure_input@
 
 
 # Copyright (C) 1994-2020 Free Software Foundation, Inc.
 # Copyright (C) 1994-2020 Free Software Foundation, Inc.
@@ -228,7 +228,6 @@ AWK = @AWK@
 CC = @CC@
 CC = @CC@
 CCDEPMODE = @CCDEPMODE@
 CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CFLAGS = @CFLAGS@
-CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CPPFLAGS = @CPPFLAGS@
 CXX = @CXX@
 CXX = @CXX@
 CXXCPP = @CXXCPP@
 CXXCPP = @CXXCPP@
@@ -246,6 +245,13 @@ ECHO_N = @ECHO_N@
 ECHO_T = @ECHO_T@
 ECHO_T = @ECHO_T@
 EGREP = @EGREP@
 EGREP = @EGREP@
 EXEEXT = @EXEEXT@
 EXEEXT = @EXEEXT@
+EXPAT_ATTR_INFO = @EXPAT_ATTR_INFO@
+EXPAT_CHAR_TYPE = @EXPAT_CHAR_TYPE@
+EXPAT_CONTEXT_BYTES = @EXPAT_CONTEXT_BYTES@
+EXPAT_DTD = @EXPAT_DTD@
+EXPAT_LARGE_SIZE = @EXPAT_LARGE_SIZE@
+EXPAT_MIN_SIZE = @EXPAT_MIN_SIZE@
+EXPAT_NS = @EXPAT_NS@
 FGREP = @FGREP@
 FGREP = @FGREP@
 FILEMAP = @FILEMAP@
 FILEMAP = @FILEMAP@
 GREP = @GREP@
 GREP = @GREP@
@@ -258,6 +264,7 @@ LD = @LD@
 LDFLAGS = @LDFLAGS@
 LDFLAGS = @LDFLAGS@
 LIBAGE = @LIBAGE@
 LIBAGE = @LIBAGE@
 LIBCURRENT = @LIBCURRENT@
 LIBCURRENT = @LIBCURRENT@
+LIBDIR_BASENAME = @LIBDIR_BASENAME@
 LIBOBJS = @LIBOBJS@
 LIBOBJS = @LIBOBJS@
 LIBREVISION = @LIBREVISION@
 LIBREVISION = @LIBREVISION@
 LIBS = @LIBS@
 LIBS = @LIBS@
@@ -287,6 +294,9 @@ RANLIB = @RANLIB@
 SED = @SED@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHELL = @SHELL@
+SO_MAJOR = @SO_MAJOR@
+SO_MINOR = @SO_MINOR@
+SO_PATCH = @SO_PATCH@
 STRIP = @STRIP@
 STRIP = @STRIP@
 VERSION = @VERSION@
 VERSION = @VERSION@
 _EXPAT_OUTPUT_NAME = @_EXPAT_OUTPUT_NAME@
 _EXPAT_OUTPUT_NAME = @_EXPAT_OUTPUT_NAME@

+ 19 - 10
libs/expat/tests/minicheck.c

@@ -141,11 +141,18 @@ _check_set_test_info(char const *function, char const *filename, int lineno) {
 }
 }
 
 
 static void
 static void
-add_failure(SRunner *runner, int verbosity) {
-  runner->nfailures++;
+handle_success(int verbosity) {
   if (verbosity >= CK_VERBOSE) {
   if (verbosity >= CK_VERBOSE) {
-    printf("%s:%d: %s\n", _check_current_filename, _check_current_lineno,
-           _check_current_function);
+    printf("PASS: %s\n", _check_current_function);
+  }
+}
+
+static void
+handle_failure(SRunner *runner, int verbosity, const char *phase_info) {
+  runner->nfailures++;
+  if (verbosity != CK_SILENT) {
+    printf("FAIL: %s (%s at %s:%d)\n", _check_current_function, phase_info,
+           _check_current_filename, _check_current_lineno);
   }
   }
 }
 }
 
 
@@ -164,14 +171,14 @@ srunner_run_all(SRunner *runner, int verbosity) {
       if (tc->setup != NULL) {
       if (tc->setup != NULL) {
         /* setup */
         /* setup */
         if (setjmp(env)) {
         if (setjmp(env)) {
-          add_failure(runner, verbosity);
+          handle_failure(runner, verbosity, "during setup");
           continue;
           continue;
         }
         }
         tc->setup();
         tc->setup();
       }
       }
       /* test */
       /* test */
       if (setjmp(env)) {
       if (setjmp(env)) {
-        add_failure(runner, verbosity);
+        handle_failure(runner, verbosity, "during actual test");
         continue;
         continue;
       }
       }
       (tc->tests[i])();
       (tc->tests[i])();
@@ -179,15 +186,17 @@ srunner_run_all(SRunner *runner, int verbosity) {
       /* teardown */
       /* teardown */
       if (tc->teardown != NULL) {
       if (tc->teardown != NULL) {
         if (setjmp(env)) {
         if (setjmp(env)) {
-          add_failure(runner, verbosity);
+          handle_failure(runner, verbosity, "during teardown");
           continue;
           continue;
         }
         }
         tc->teardown();
         tc->teardown();
       }
       }
+
+      handle_success(verbosity);
     }
     }
     tc = tc->next_tcase;
     tc = tc->next_tcase;
   }
   }
-  if (verbosity) {
+  if (verbosity != CK_SILENT) {
     int passed = runner->nchecks - runner->nfailures;
     int passed = runner->nchecks - runner->nfailures;
     double percentage = ((double)passed) / runner->nchecks;
     double percentage = ((double)passed) / runner->nchecks;
     int display = (int)(percentage * 100);
     int display = (int)(percentage * 100);
@@ -203,8 +212,8 @@ _fail_unless(int condition, const char *file, int line, const char *msg) {
      it is.
      it is.
   */
   */
   UNUSED_P(condition);
   UNUSED_P(condition);
-  UNUSED_P(file);
-  UNUSED_P(line);
+  _check_current_filename = file;
+  _check_current_lineno = line;
   if (msg != NULL) {
   if (msg != NULL) {
     const int has_newline = (msg[strlen(msg) - 1] == '\n');
     const int has_newline = (msg[strlen(msg) - 1] == '\n');
     fprintf(stderr, "ERROR: %s%s", msg, has_newline ? "" : "\n");
     fprintf(stderr, "ERROR: %s%s", msg, has_newline ? "" : "\n");

+ 13 - 22
libs/expat/tests/runtests.c

@@ -45,28 +45,10 @@
 #include <stddef.h> /* ptrdiff_t */
 #include <stddef.h> /* ptrdiff_t */
 #include <ctype.h>
 #include <ctype.h>
 #include <limits.h>
 #include <limits.h>
-
-#if defined(_WIN32) && defined(_MSC_VER) && (_MSC_VER < 1600)
-/* For vs2003/7.1 up to vs2008/9.0; _MSC_VER 1600 is vs2010/10.0 */
-#  if defined(_WIN64)
-typedef __int64 intptr_t;
-#  else
-typedef __int32 intptr_t;
-#  endif
-typedef unsigned __int64 uint64_t;
-#else
-#  include <stdint.h> /* intptr_t uint64_t */
-#endif
+#include <stdint.h> /* intptr_t uint64_t */
 
 
 #if ! defined(__cplusplus)
 #if ! defined(__cplusplus)
-#  if defined(_MSC_VER) && (_MSC_VER <= 1700)
-/* for vs2012/11.0/1700 and earlier Visual Studio compilers */
-#    define bool int
-#    define false 0
-#    define true 1
-#  else
-#    include <stdbool.h>
-#  endif
+#  include <stdbool.h>
 #endif
 #endif
 
 
 #include "expat.h"
 #include "expat.h"
@@ -1779,7 +1761,7 @@ START_TEST(test_not_standalone_handler_accept) {
   XML_SetNotStandaloneHandler(g_parser, accept_not_standalone_handler);
   XML_SetNotStandaloneHandler(g_parser, accept_not_standalone_handler);
   run_ext_character_check(text, &test_data, XCS(""));
   run_ext_character_check(text, &test_data, XCS(""));
 
 
-  /* Repeat wtihout the external entity handler */
+  /* Repeat without the external entity handler */
   XML_ParserReset(g_parser, NULL);
   XML_ParserReset(g_parser, NULL);
   XML_SetNotStandaloneHandler(g_parser, accept_not_standalone_handler);
   XML_SetNotStandaloneHandler(g_parser, accept_not_standalone_handler);
   run_character_check(text, XCS(""));
   run_character_check(text, XCS(""));
@@ -7365,7 +7347,7 @@ START_TEST(test_misc_version) {
     fail("Version mismatch");
     fail("Version mismatch");
 
 
 #if ! defined(XML_UNICODE) || defined(XML_UNICODE_WCHAR_T)
 #if ! defined(XML_UNICODE) || defined(XML_UNICODE_WCHAR_T)
-  if (xcstrcmp(version_text, XCS("expat_2.2.10"))) /* needs bump on releases */
+  if (xcstrcmp(version_text, XCS("expat_2.3.0"))) /* needs bump on releases */
     fail("XML_*_VERSION in expat.h out of sync?\n");
     fail("XML_*_VERSION in expat.h out of sync?\n");
 #else
 #else
   /* If we have XML_UNICODE defined but not XML_UNICODE_WCHAR_T
   /* If we have XML_UNICODE defined but not XML_UNICODE_WCHAR_T
@@ -9851,6 +9833,15 @@ START_TEST(test_nsalloc_parse_buffer) {
 
 
   /* Try a parse before the start of the world */
   /* Try a parse before the start of the world */
   /* (Exercises new code path) */
   /* (Exercises new code path) */
+  if (XML_ParseBuffer(g_parser, 0, XML_FALSE) != XML_STATUS_ERROR)
+    fail("Pre-init XML_ParseBuffer not faulted");
+  if (XML_GetErrorCode(g_parser) != XML_ERROR_NO_BUFFER)
+    fail("Pre-init XML_ParseBuffer faulted for wrong reason");
+
+  buffer = XML_GetBuffer(g_parser, 1 /* any small number greater than 0 */);
+  if (buffer == NULL)
+    fail("Could not acquire parse buffer");
+
   allocation_count = 0;
   allocation_count = 0;
   if (XML_ParseBuffer(g_parser, 0, XML_FALSE) != XML_STATUS_ERROR)
   if (XML_ParseBuffer(g_parser, 0, XML_FALSE) != XML_STATUS_ERROR)
     fail("Pre-init XML_ParseBuffer not faulted");
     fail("Pre-init XML_ParseBuffer not faulted");

+ 1 - 1
libs/expat/win32/README.txt

@@ -5,7 +5,7 @@ Expat can be built on Windows in two ways:
 * Cygwin:
 * Cygwin:
   This follows the Unix build procedures.
   This follows the Unix build procedures.
 
 
-* MS Visual Studio 2008, 2010, 2013, 2015 and 2017:
+* MS Visual Studio 2013, 2015 and 2017:
   Use CMake to generate a solution file for Visual Studio, then use msbuild
   Use CMake to generate a solution file for Visual Studio, then use msbuild
   to compile.  For example:
   to compile.  For example:
 
 

+ 1 - 1
libs/expat/win32/expat.iss

@@ -4,7 +4,7 @@
 ; This script was contributed by Tim Peters.
 ; This script was contributed by Tim Peters.
 ; It was designed for Inno Setup 2.0.19 but works with later versions as well.
 ; It was designed for Inno Setup 2.0.19 but works with later versions as well.
 
 
-#define expatVer "2.2.10"
+#define expatVer "2.3.0"
 
 
 [Setup]
 [Setup]
 AppName=Expat
 AppName=Expat

+ 12 - 2
libs/expat/xmlwf/Makefile.in

@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.16.2 from Makefile.am.
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
 # @configure_input@
 # @configure_input@
 
 
 # Copyright (C) 1994-2020 Free Software Foundation, Inc.
 # Copyright (C) 1994-2020 Free Software Foundation, Inc.
@@ -237,7 +237,6 @@ AWK = @AWK@
 CC = @CC@
 CC = @CC@
 CCDEPMODE = @CCDEPMODE@
 CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CFLAGS = @CFLAGS@
-CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CPPFLAGS = @CPPFLAGS@
 CXX = @CXX@
 CXX = @CXX@
 CXXCPP = @CXXCPP@
 CXXCPP = @CXXCPP@
@@ -255,6 +254,13 @@ ECHO_N = @ECHO_N@
 ECHO_T = @ECHO_T@
 ECHO_T = @ECHO_T@
 EGREP = @EGREP@
 EGREP = @EGREP@
 EXEEXT = @EXEEXT@
 EXEEXT = @EXEEXT@
+EXPAT_ATTR_INFO = @EXPAT_ATTR_INFO@
+EXPAT_CHAR_TYPE = @EXPAT_CHAR_TYPE@
+EXPAT_CONTEXT_BYTES = @EXPAT_CONTEXT_BYTES@
+EXPAT_DTD = @EXPAT_DTD@
+EXPAT_LARGE_SIZE = @EXPAT_LARGE_SIZE@
+EXPAT_MIN_SIZE = @EXPAT_MIN_SIZE@
+EXPAT_NS = @EXPAT_NS@
 FGREP = @FGREP@
 FGREP = @FGREP@
 FILEMAP = @FILEMAP@
 FILEMAP = @FILEMAP@
 GREP = @GREP@
 GREP = @GREP@
@@ -267,6 +273,7 @@ LD = @LD@
 LDFLAGS = @LDFLAGS@
 LDFLAGS = @LDFLAGS@
 LIBAGE = @LIBAGE@
 LIBAGE = @LIBAGE@
 LIBCURRENT = @LIBCURRENT@
 LIBCURRENT = @LIBCURRENT@
+LIBDIR_BASENAME = @LIBDIR_BASENAME@
 LIBOBJS = @LIBOBJS@
 LIBOBJS = @LIBOBJS@
 LIBREVISION = @LIBREVISION@
 LIBREVISION = @LIBREVISION@
 LIBS = @LIBS@
 LIBS = @LIBS@
@@ -296,6 +303,9 @@ RANLIB = @RANLIB@
 SED = @SED@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHELL = @SHELL@
+SO_MAJOR = @SO_MAJOR@
+SO_MINOR = @SO_MINOR@
+SO_PATCH = @SO_PATCH@
 STRIP = @STRIP@
 STRIP = @STRIP@
 VERSION = @VERSION@
 VERSION = @VERSION@
 _EXPAT_OUTPUT_NAME = @_EXPAT_OUTPUT_NAME@
 _EXPAT_OUTPUT_NAME = @_EXPAT_OUTPUT_NAME@

+ 41 - 7
libs/expat/xmlwf/xmlwf.c

@@ -322,6 +322,13 @@ freeNotations(XmlwfUserData *data) {
   data->notationListHead = NULL;
   data->notationListHead = NULL;
 }
 }
 
 
+static void
+cleanupUserData(XmlwfUserData *userData) {
+  free((void *)userData->currentDoctypeName);
+  userData->currentDoctypeName = NULL;
+  freeNotations(userData);
+}
+
 static int
 static int
 xcscmp(const XML_Char *xs, const XML_Char *xt) {
 xcscmp(const XML_Char *xs, const XML_Char *xt) {
   while (*xs != 0 && *xt != 0) {
   while (*xs != 0 && *xt != 0) {
@@ -848,9 +855,11 @@ usage(const XML_Char *prog, int rc) {
       stderr,
       stderr,
       /* Generated with:
       /* Generated with:
        * $ xmlwf/xmlwf_helpgen.sh
        * $ xmlwf/xmlwf_helpgen.sh
+       * To update, change xmlwf/xmlwf_helpgen.py, then paste the output of
+       * xmlwf/xmlwf_helpgen.sh in here.
        */
        */
       /* clang-format off */
       /* clang-format off */
-      T("usage: %s [-s] [-n] [-p] [-x] [-e ENCODING] [-w] [-r] [-d DIRECTORY]\n")
+      T("usage: %s [-s] [-n] [-p] [-x] [-e ENCODING] [-w] [-r] [-k] [-d DIRECTORY]\n")
       T("             [-c | -m | -t] [-N]\n")
       T("             [-c | -m | -t] [-N]\n")
       T("             [FILE [FILE ...]]\n")
       T("             [FILE [FILE ...]]\n")
       T("\n")
       T("\n")
@@ -867,6 +876,7 @@ usage(const XML_Char *prog, int rc) {
       T("  -e ENCODING   override any in-document [e]ncoding declaration\n")
       T("  -e ENCODING   override any in-document [e]ncoding declaration\n")
       T("  -w            enable support for [W]indows code pages\n")
       T("  -w            enable support for [W]indows code pages\n")
       T("  -r            disable memory-mapping and use normal file [r]ead IO calls instead\n")
       T("  -r            disable memory-mapping and use normal file [r]ead IO calls instead\n")
+      T("  -k            when processing multiple files, [k]eep processing after first file with error\n")
       T("\n")
       T("\n")
       T("output control arguments:\n")
       T("output control arguments:\n")
       T("  -d DIRECTORY  output [d]estination directory\n")
       T("  -d DIRECTORY  output [d]estination directory\n")
@@ -879,6 +889,13 @@ usage(const XML_Char *prog, int rc) {
       T("  -h            show this [h]elp message and exit\n")
       T("  -h            show this [h]elp message and exit\n")
       T("  -v            show program's [v]ersion number and exit\n")
       T("  -v            show program's [v]ersion number and exit\n")
       T("\n")
       T("\n")
+      T("exit status:\n")
+      T("  0             the input files are well-formed and the output (if requested) was written successfully\n")
+      T("  1             could not allocate data structures, signals a serious problem with execution environment\n")
+      T("  2             one or more input files were not well-formed\n")
+      T("  3             could not create an output file\n")
+      T("  4             command-line argument error\n")
+      T("\n")
       T("xmlwf of libexpat is software libre, licensed under the MIT license.\n")
       T("xmlwf of libexpat is software libre, licensed under the MIT license.\n")
       T("Please report bugs at https://github.com/libexpat/libexpat/issues.  Thank you!\n")
       T("Please report bugs at https://github.com/libexpat/libexpat/issues.  Thank you!\n")
       , /* clang-format on */
       , /* clang-format on */
@@ -902,6 +919,8 @@ tmain(int argc, XML_Char **argv) {
   int useNamespaces = 0;
   int useNamespaces = 0;
   int requireStandalone = 0;
   int requireStandalone = 0;
   int requiresNotations = 0;
   int requiresNotations = 0;
+  int continueOnError = 0;
+  int exitCode = 0;
   enum XML_ParamEntityParsing paramEntityParsing
   enum XML_ParamEntityParsing paramEntityParsing
       = XML_PARAM_ENTITY_PARSING_NEVER;
       = XML_PARAM_ENTITY_PARSING_NEVER;
   int useStdin = 0;
   int useStdin = 0;
@@ -967,7 +986,7 @@ tmain(int argc, XML_Char **argv) {
     case T('d'):
     case T('d'):
       if (argv[i][j + 1] == T('\0')) {
       if (argv[i][j + 1] == T('\0')) {
         if (++i == argc)
         if (++i == argc)
-          usage(argv[0], 2);
+          usage(argv[0], 4);
         outputDir = argv[i];
         outputDir = argv[i];
       } else
       } else
         outputDir = argv[i] + j + 1;
         outputDir = argv[i] + j + 1;
@@ -977,7 +996,7 @@ tmain(int argc, XML_Char **argv) {
     case T('e'):
     case T('e'):
       if (argv[i][j + 1] == T('\0')) {
       if (argv[i][j + 1] == T('\0')) {
         if (++i == argc)
         if (++i == argc)
-          usage(argv[0], 2);
+          usage(argv[0], 4);
         encoding = argv[i];
         encoding = argv[i];
       } else
       } else
         encoding = argv[i] + j + 1;
         encoding = argv[i] + j + 1;
@@ -990,6 +1009,10 @@ tmain(int argc, XML_Char **argv) {
     case T('v'):
     case T('v'):
       showVersion(argv[0]);
       showVersion(argv[0]);
       return 0;
       return 0;
+    case T('k'):
+      continueOnError = 1;
+      j++;
+      break;
     case T('\0'):
     case T('\0'):
       if (j > 1) {
       if (j > 1) {
         i++;
         i++;
@@ -998,7 +1021,7 @@ tmain(int argc, XML_Char **argv) {
       }
       }
       /* fall through */
       /* fall through */
     default:
     default:
-      usage(argv[0], 2);
+      usage(argv[0], 4);
     }
     }
   }
   }
   if (i == argc) {
   if (i == argc) {
@@ -1061,7 +1084,14 @@ tmain(int argc, XML_Char **argv) {
       userData.fp = tfopen(outName, T("wb"));
       userData.fp = tfopen(outName, T("wb"));
       if (! userData.fp) {
       if (! userData.fp) {
         tperror(outName);
         tperror(outName);
-        exit(3);
+        exitCode = 3;
+        if (continueOnError) {
+          free(outName);
+          cleanupUserData(&userData);
+          continue;
+        } else {
+          break;
+        }
       }
       }
       setvbuf(userData.fp, NULL, _IOFBF, 16384);
       setvbuf(userData.fp, NULL, _IOFBF, 16384);
 #ifdef XML_UNICODE
 #ifdef XML_UNICODE
@@ -1123,8 +1153,12 @@ tmain(int argc, XML_Char **argv) {
     }
     }
     XML_ParserFree(parser);
     XML_ParserFree(parser);
     if (! result) {
     if (! result) {
-      exit(2);
+      exitCode = 2;
+      cleanupUserData(&userData);
+      if (! continueOnError) {
+        break;
+      }
     }
     }
   }
   }
-  return 0;
+  return exitCode;
 }
 }

+ 8 - 0
libs/expat/xmlwf/xmlwf_helpgen.py

@@ -31,6 +31,13 @@
 import argparse
 import argparse
 
 
 epilog = """
 epilog = """
+exit status:
+  0             the input files are well-formed and the output (if requested) was written successfully
+  1             could not allocate data structures, signals a serious problem with execution environment
+  2             one or more input files were not well-formed
+  3             could not create an output file
+  4             command-line argument error
+
 xmlwf of libexpat is software libre, licensed under the MIT license.
 xmlwf of libexpat is software libre, licensed under the MIT license.
 Please report bugs at https://github.com/libexpat/libexpat/issues.  Thank you!
 Please report bugs at https://github.com/libexpat/libexpat/issues.  Thank you!
 """
 """
@@ -48,6 +55,7 @@ input_related.add_argument('-x', action='store_true', help='enable processing of
 input_related.add_argument('-e', action='store', metavar='ENCODING', help='override any in-document [e]ncoding declaration')
 input_related.add_argument('-e', action='store', metavar='ENCODING', help='override any in-document [e]ncoding declaration')
 input_related.add_argument('-w', action='store_true', help='enable support for [W]indows code pages')
 input_related.add_argument('-w', action='store_true', help='enable support for [W]indows code pages')
 input_related.add_argument('-r', action='store_true', help='disable memory-mapping and use normal file [r]ead IO calls instead')
 input_related.add_argument('-r', action='store_true', help='disable memory-mapping and use normal file [r]ead IO calls instead')
+input_related.add_argument('-k', action='store_true', help='when processing multiple files, [k]eep processing after first file with error')
 
 
 output_related = parser.add_argument_group('output control arguments')
 output_related = parser.add_argument_group('output control arguments')
 output_related.add_argument('-d', action='store', metavar='DIRECTORY', help='output [d]estination directory')
 output_related.add_argument('-d', action='store', metavar='DIRECTORY', help='output [d]estination directory')

Một số tệp đã không được hiển thị bởi vì quá nhiều tập tin thay đổi trong này khác