diff --git a/poky/meta/recipes-extended/at/at_3.2.5.bb b/poky/meta/recipes-extended/at/at_3.2.5.bb
index 87a4361..c0c876a 100644
--- a/poky/meta/recipes-extended/at/at_3.2.5.bb
+++ b/poky/meta/recipes-extended/at/at_3.2.5.bb
@@ -52,8 +52,10 @@
 
 SYSTEMD_SERVICE:${PN} = "atd.service"
 
-do_configure:prepend() {
-	cp -f ${WORKDIR}/posixtm.[ch] ${S}
+do_patch[postfuncs] += "copy_posix_files"
+
+copy_posix_files() {
+    cp -f ${WORKDIR}/posixtm.[ch] ${S}
 }
 
 do_install () {
diff --git a/poky/meta/recipes-extended/baremetal-example/baremetal-helloworld_git.bb b/poky/meta/recipes-extended/baremetal-example/baremetal-helloworld_git.bb
new file mode 100644
index 0000000..82b2901
--- /dev/null
+++ b/poky/meta/recipes-extended/baremetal-example/baremetal-helloworld_git.bb
@@ -0,0 +1,72 @@
+SUMMARY = "Baremetal examples to work with the several QEMU architectures supported on OpenEmbedded"
+HOMEPAGE = "https://github.com/aehs29/baremetal-helloqemu"
+DESCRIPTION = "These are introductory examples to showcase the use of QEMU to run baremetal applications."
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=39346640a23c701e4f459e05f56f4449"
+
+SRCREV = "22016ecbb9fb6c5f3a7a06698aea7ff8a701c166"
+PV = "0.1+git${SRCPV}"
+
+SRC_URI = "git://github.com/aehs29/baremetal-helloqemu.git;protocol=https;branch=master"
+UPSTREAM_VERSION_UNKNOWN="1"
+
+S = "${WORKDIR}/git"
+
+# The following variables should be set to accomodate each application
+BAREMETAL_BINNAME ?= "hello_baremetal_${MACHINE}"
+IMAGE_LINK_NAME ?= "baremetal-helloworld-image-${MACHINE}"
+IMAGE_NAME_SUFFIX ?= ""
+
+# Baremetal-Image creates the proper wiring, assumes the output is provided in
+# binary and ELF format, installed on ${base_libdir}/firmware/ , we want a
+# package to be created since we might have some way of updating the baremetal
+# firmware from Linux
+inherit baremetal-image
+
+
+# startup code for x86 uses NASM syntax
+DEPENDS:qemux86:append = " nasm-native"
+
+# These parameters are app specific for this example
+# This will be translated automatically to the architecture and
+# machine that QEMU uses on OE, e.g. -machine virt -cpu cortex-a57
+# but the examples can also be run on other architectures/machines
+# such as vexpress-a15 by overriding the setting on the machine.conf
+COMPATIBLE_MACHINE = "qemuarmv5|qemuarm|qemuarm64|qemuriscv64|qemuriscv32|qemux86|qemux86-64"
+
+BAREMETAL_QEMUARCH ?= ""
+BAREMETAL_QEMUARCH:qemuarmv5 = "versatile"
+BAREMETAL_QEMUARCH:qemuarm = "arm"
+BAREMETAL_QEMUARCH:qemuarm64 = "aarch64"
+BAREMETAL_QEMUARCH:qemuriscv64 = "riscv64"
+BAREMETAL_QEMUARCH:qemuriscv32 = "riscv32"
+BAREMETAL_QEMUARCH:qemux86 = "x86"
+BAREMETAL_QEMUARCH:qemux86-64 = "x86-64"
+
+EXTRA_OEMAKE:append = " QEMUARCH=${BAREMETAL_QEMUARCH} V=1"
+
+# qemux86-64 uses a different Makefile
+do_compile:prepend:qemux86-64(){
+    cd x86-64
+}
+
+# Install binaries on the proper location for baremetal-image to fetch and deploy
+do_install(){
+    install -d ${D}/${base_libdir}/firmware
+    install -m 755 ${B}/build/hello_baremetal_${BAREMETAL_QEMUARCH}.bin ${D}/${base_libdir}/firmware/${BAREMETAL_BINNAME}.bin
+    install -m 755 ${B}/build/hello_baremetal_${BAREMETAL_QEMUARCH}.elf ${D}/${base_libdir}/firmware/${BAREMETAL_BINNAME}.elf
+}
+
+FILES:${PN} += " \
+    ${base_libdir}/firmware/${BAREMETAL_BINNAME}.bin \
+    ${base_libdir}/firmware/${BAREMETAL_BINNAME}.elf \
+"
+
+# qemux86-64 boots from iso rather than -kernel, create image to boot from
+do_image:append:qemux86-64(){
+    dd if=/dev/zero of=${B}/build/img.iso bs=1M count=10 status=none
+    dd if=${B}/build/stage1.bin of=${B}/build/img.iso bs=512 count=1 conv=notrunc
+    dd if=${B}/build/stage2.bin of=${B}/build/img.iso bs=512 seek=1 count=64 conv=notrunc
+    dd if=${B}/build/hello_baremetal_x86-64.bin of=${B}/build/img.iso bs=512 seek=65 conv=notrunc
+    install ${B}/build/img.iso ${IMGDEPLOYDIR}/${IMAGE_LINK_NAME}.iso
+}
diff --git a/poky/meta/recipes-extended/bash/bash_5.2.9.bb b/poky/meta/recipes-extended/bash/bash_5.2.15.bb
similarity index 88%
rename from poky/meta/recipes-extended/bash/bash_5.2.9.bb
rename to poky/meta/recipes-extended/bash/bash_5.2.15.bb
index 39a5d3d..f78f79f 100644
--- a/poky/meta/recipes-extended/bash/bash_5.2.9.bb
+++ b/poky/meta/recipes-extended/bash/bash_5.2.15.bb
@@ -14,7 +14,7 @@
            file://use_aclocal.patch \
            "
 
-SRC_URI[tarball.sha256sum] = "68d978264253bc933d692f1de195e2e5b463a3984dfb4e5504b076865f16b6dd"
+SRC_URI[tarball.sha256sum] = "13720965b5f4fc3a0d4b61dd37e7565c741da9a5be24edc2ae00182fc1b3588c"
 
 DEBUG_OPTIMIZATION:append:armv4 = " ${@bb.utils.contains('TUNE_CCARGS', '-mthumb', '-fomit-frame-pointer', '', d)}"
 DEBUG_OPTIMIZATION:append:armv5 = " ${@bb.utils.contains('TUNE_CCARGS', '-mthumb', '-fomit-frame-pointer', '', d)}"
diff --git a/poky/meta/recipes-extended/bc/bc_1.07.1.bb b/poky/meta/recipes-extended/bc/bc_1.07.1.bb
index 178588f..819da6c 100644
--- a/poky/meta/recipes-extended/bc/bc_1.07.1.bb
+++ b/poky/meta/recipes-extended/bc/bc_1.07.1.bb
@@ -37,4 +37,4 @@
 ALTERNATIVE:${PN} = "bc dc"
 ALTERNATIVE_PRIORITY = "100"
 
-BBCLASSEXTEND = "native"
+BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-extended/cronie/cronie_1.6.1.bb b/poky/meta/recipes-extended/cronie/cronie_1.6.1.bb
index 0781875..1b31bf0 100644
--- a/poky/meta/recipes-extended/cronie/cronie_1.6.1.bb
+++ b/poky/meta/recipes-extended/cronie/cronie_1.6.1.bb
@@ -35,6 +35,7 @@
 PACKAGECONFIG[audit] = "--with-audit,--without-audit,audit,"
 PACKAGECONFIG[pam] = "--with-pam,--without-pam,libpam,${PAM_DEPS}"
 PACKAGECONFIG[anacron] = "--enable-anacron,--disable-anacron,anacron"
+PACKAGECONFIG[selinux] = "--with-selinux,--without-selinux,libselinux"
 
 INITSCRIPT_NAME = "crond"
 INITSCRIPT_PARAMS = "start 90 2 3 4 5 . stop 60 0 1 6 ."
diff --git a/poky/meta/recipes-extended/gawk/gawk/remove-sensitive-tests.patch b/poky/meta/recipes-extended/gawk/gawk/remove-sensitive-tests.patch
index 167c078..ffae550 100644
--- a/poky/meta/recipes-extended/gawk/gawk/remove-sensitive-tests.patch
+++ b/poky/meta/recipes-extended/gawk/gawk/remove-sensitive-tests.patch
@@ -1,24 +1,43 @@
+From 354d24baf7c51977d22ff61ad42e6a2cbd4dc8ac Mon Sep 17 00:00:00 2001
+From: Ross Burton <ross.burton@arm.com>
+Date: Tue, 21 Dec 2021 17:09:12 +0000
+Subject: [PATCH] gawk: remove load-sensitive tests
+
 These tests require an unloaded host as otherwise timing sensitive tests can fail
 https://bugzilla.yoctoproject.org/show_bug.cgi?id=14371
 
 Upstream-Status: Inappropriate
 Signed-off-by: Ross Burton <ross.burton@arm.com>
 
---- a/test/Maketests~
-+++ b/test/Maketests
-@@ -2069,7 +2069,2 @@
+---
+ test/Maketests | 10 ----------
+ 1 file changed, 10 deletions(-)
 
+diff --git a/test/Maketests b/test/Maketests
+index 3a667af..f117697 100644
+--- a/test/Maketests
++++ b/test/Maketests
+@@ -2137,11 +2137,6 @@ symtab12:
+ 	@-AWKPATH="$(srcdir)" $(AWK) -f $@.awk  >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ 	@-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+ 
 -timeout:
 -	@echo $@ $(ZOS_FAIL)
--	@AWKPATH="$(srcdir)" $(AWK) -f $@.awk  >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+-	@-AWKPATH="$(srcdir)" $(AWK) -f $@.awk  >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
 -	@-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
 -
  typedregex1:
-@@ -2297,7 +2292,2 @@
+ 	@echo $@
+ 	@-AWKPATH="$(srcdir)" $(AWK) -f $@.awk  >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+@@ -2371,11 +2366,6 @@ rwarray:
+ 	@-AWKPATH="$(srcdir)" $(AWK) -f $@.awk  < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
  	@-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
--
+ 
 -time:
 -	@echo $@
--	@AWKPATH="$(srcdir)" $(AWK) -f $@.awk  >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+-	@-AWKPATH="$(srcdir)" $(AWK) -f $@.awk  >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
 -	@-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
-
+-
+ mpfrbigint:
+ 	@echo $@
+ 	@-AWKPATH="$(srcdir)" $(AWK) -f $@.awk  -M >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
diff --git a/poky/meta/recipes-extended/gawk/gawk/run-ptest b/poky/meta/recipes-extended/gawk/gawk/run-ptest
index f67a958..2675650 100644
--- a/poky/meta/recipes-extended/gawk/gawk/run-ptest
+++ b/poky/meta/recipes-extended/gawk/gawk/run-ptest
@@ -2,7 +2,7 @@
 
 cd test
 for i in `grep -E "^[a-z0-9_-]*:$" Maketests |awk -F: '{print $1}'`; do
-  #LC_ALL=${GAWKLOCALE:-C} LANG=${GAWKLOCALE:-C} 
+  unset LANG
   srcdir=`pwd` AWKPROG=gawk AWK=gawk CMP=cmp make -f Maketests $i >$i.tmp 2>&1
   if [ -e _$i ]; then
     cat _$i
diff --git a/poky/meta/recipes-extended/gawk/gawk_5.1.1.bb b/poky/meta/recipes-extended/gawk/gawk_5.2.1.bb
similarity index 86%
rename from poky/meta/recipes-extended/gawk/gawk_5.1.1.bb
rename to poky/meta/recipes-extended/gawk/gawk_5.2.1.bb
index fe33980..fbe6e70 100644
--- a/poky/meta/recipes-extended/gawk/gawk_5.1.1.bb
+++ b/poky/meta/recipes-extended/gawk/gawk_5.2.1.bb
@@ -20,13 +20,16 @@
            file://run-ptest \
            "
 
-SRC_URI[sha256sum] = "6168d8d1dc8f74bd17d9dc22fa9634c49070f232343b744901da15fb4f06bffd"
+SRC_URI[sha256sum] = "529e7c8c6acf21ff3a6183f4d763c632810908989c24675c77995d51ac37b79c"
 
 inherit autotools gettext texinfo update-alternatives
 
 FILES:${PN} += "${datadir}/awk"
 FILES:${PN}-dev += "${libdir}/${BPN}/*.la"
 
+PACKAGES =+ "${PN}-gawkbug"
+FILES:${PN}-gawkbug += "${bindir}/gawkbug"
+
 ALTERNATIVE:${PN} = "awk"
 ALTERNATIVE_TARGET[awk] = "${bindir}/gawk"
 ALTERNATIVE_PRIORITY = "100"
@@ -34,6 +37,8 @@
 do_install:append() {
 	# remove the link since we don't package it
 	rm ${D}${bindir}/awk
+	# Strip non-reproducible build flags (containing build paths)
+	sed -i -e 's|^CC.*|CC=""|g' -e 's|^CFLAGS.*|CFLAGS=""|g' ${D}${bindir}/gawkbug
 }
 
 inherit ptest
@@ -46,7 +51,7 @@
 	for i in $TESTS Maketests inclib.awk; do
 		cp ${S}/test/$i* ${D}${PTEST_PATH}/test
 	done
-	sed -i -e 's|/usr/local/bin|${bindir}|g' \
+	sed -i \
 	    -e 's|#!${base_bindir}/awk|#!${bindir}/awk|g' ${D}${PTEST_PATH}/test/*.awk
 
 	sed -i -e "s|GAWKLOCALE|LANG|g" ${D}${PTEST_PATH}/test/Maketests
diff --git a/poky/meta/recipes-extended/ghostscript/ghostscript/cross-compile.patch b/poky/meta/recipes-extended/ghostscript/ghostscript/cross-compile.patch
new file mode 100644
index 0000000..ba62820
--- /dev/null
+++ b/poky/meta/recipes-extended/ghostscript/ghostscript/cross-compile.patch
@@ -0,0 +1,40 @@
+From 4c3575346b9c7d394ebc73b4e5fabebadd8877ec Mon Sep 17 00:00:00 2001
+From: Chris Liddell <chris.liddell@artifex.com>
+Date: Thu, 24 Nov 2022 16:33:47 +0000
+Subject: [PATCH] Fix a little bitrot in the cross-compiling logic
+
+Removing the option to disable FAPI meant configuring for cross compiling would
+fail because the option being passed to the sub-call to configure would include
+an unknown command line option.
+
+Upstream-Status: Backport [https://git.ghostscript.com/?p=ghostpdl.git;a=patch;f=configure.ac;h=4c3575346b9c7d394ebc73b4e5fabebadd8877ec]
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+---
+ configure.ac | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index d5c68c4b3..738eb10a9 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -138,7 +138,7 @@ if test x"$host" != x"$build" ; then
+   echo $AUXFLAGS_MAK_LINE07 >> $AUXFLAGS_MAK.in
+ 
+   AC_MSG_NOTICE([Begin recursive call to configure script (for auxiliary tools)])
+-  "$absolute_source_path/configure" CC="$CCAUX" CFLAGS="$CFLAGSAUX" CPPFLAGS="$CPPFLAGSAUX" LDFLAGS="$LDFLAGSAUX" CCAUX= CFLAGSAUX= CFLAGSAUX= MAKEFILE=$AUXFLAGS_MAK --host=$build --build=$build --enable-auxtools_only --disable-hidden-visibility --with-local-zlib --without-libtiff --disable-contrib --disable-fontconfig --disable-dbus --disable-freetype --disable-fapi --disable-cups --disable-openjpeg --disable-gtk --with-libiconv=no --without-libidn --without-libpaper --without-pdftoraster --without-ijs --without-jbig2dec --without-x --with-drivers=""
++  "$absolute_source_path/configure" CC="$CCAUX" CFLAGS="$CFLAGSAUX" CPPFLAGS="$CPPFLAGSAUX" LDFLAGS="$LDFLAGSAUX" CCAUX= CFLAGSAUX= CFLAGSAUX= MAKEFILE=$AUXFLAGS_MAK --host=$build --build=$build --enable-auxtools_only --disable-hidden-visibility --with-local-zlib --without-libtiff --disable-contrib --disable-fontconfig --disable-dbus --disable-freetype --disable-cups --disable-openjpeg --disable-gtk --with-libiconv=no --without-libidn --without-libpaper --without-pdftoraster --without-ijs --without-jbig2dec --without-x --with-drivers=""
+   status=$?
+   cp config.log "$olddir/configaux.log"
+   if test $status -eq 0 ; then
+@@ -2530,7 +2530,7 @@ PDF=
+ PDF_MAK="\$(GLSRCDIR)\$(D)stub.mak"
+ PDFROMFS_MAK="\$(GLSRCDIR)\$(D)stub.mak"
+ 
+-if test x"$with_pdf" != x"no" ; then
++if test x"$with_pdf" != x"no" -a x"$enable_auxtools_only" != x"yes" ; then
+ 
+   if test x"$JBIG2_DECODER" = x""; then
+       AC_MSG_ERROR([No JBIG2 decoder available, required for PDF support])
+-- 
+2.25.1
+
diff --git a/poky/meta/recipes-extended/ghostscript/files/do-not-check-local-libpng-source.patch b/poky/meta/recipes-extended/ghostscript/ghostscript/do-not-check-local-libpng-source.patch
similarity index 85%
rename from poky/meta/recipes-extended/ghostscript/files/do-not-check-local-libpng-source.patch
rename to poky/meta/recipes-extended/ghostscript/ghostscript/do-not-check-local-libpng-source.patch
index a9afb99..13e71c8 100644
--- a/poky/meta/recipes-extended/ghostscript/files/do-not-check-local-libpng-source.patch
+++ b/poky/meta/recipes-extended/ghostscript/ghostscript/do-not-check-local-libpng-source.patch
@@ -1,4 +1,4 @@
-From 2adaa7366064a8f18af864eda74e52877a89620c Mon Sep 17 00:00:00 2001
+From 108a7d3f79af8c669af129bd87401402e76edfa9 Mon Sep 17 00:00:00 2001
 From: Hongxu Jia <hongxu.jia@windriver.com>
 Date: Mon, 18 Jan 2016 01:00:30 -0500
 Subject: [PATCH] configure.ac: do not check local png source
@@ -17,12 +17,12 @@
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/configure.ac b/configure.ac
-index 698abd3..e65ac8b 100644
+index bb57825..389c473 100644
 --- a/configure.ac
 +++ b/configure.ac
-@@ -1241,7 +1241,7 @@ else
+@@ -1441,7 +1441,7 @@ else
    PNGDEVS=''
-   PNGDEVS_ALL='png48 png16m pnggray pngmono pngmonod png256 png16 pngalpha'
+   PNGDEVS_ALL='png48 png16m pnggray pngmono pngmonod png256 png16 pngalpha png16malpha'
    AC_MSG_CHECKING([for local png library source])
 -  if test -f $srcdir/libpng/pngread.c; then
 +  if false; then
diff --git a/poky/meta/recipes-extended/ghostscript/ghostscript_9.56.1.bb b/poky/meta/recipes-extended/ghostscript/ghostscript_10.0.0.bb
similarity index 95%
rename from poky/meta/recipes-extended/ghostscript/ghostscript_9.56.1.bb
rename to poky/meta/recipes-extended/ghostscript/ghostscript_10.0.0.bb
index e71a6cc..56a9363 100644
--- a/poky/meta/recipes-extended/ghostscript/ghostscript_9.56.1.bb
+++ b/poky/meta/recipes-extended/ghostscript/ghostscript_10.0.0.bb
@@ -33,6 +33,7 @@
                 file://do-not-check-local-libpng-source.patch \
                 file://avoid-host-contamination.patch \
                 file://mkdir-p.patch \
+                file://cross-compile.patch \
 "
 
 SRC_URI = "${SRC_URI_BASE} \
@@ -44,7 +45,7 @@
                         file://base-genht.c-add-a-preprocessor-define-to-allow-fope.patch \
                         "
 
-SRC_URI[sha256sum] = "1598b9a38659cce8448d42a73054b2f9cbfcc40a9b97eeec5f22d4d6cd1de8e6"
+SRC_URI[sha256sum] = "a57764d70caf85e2fc0b0f59b83b92e25775631714dcdb97cc6e0cea414bb5a3"
 
 # Put something like
 #
@@ -72,7 +73,7 @@
 # Explicity disable libtiff, fontconfig,
 # freetype, cups for ghostscript-native
 EXTRA_OECONF:class-native = "--without-x --with-system-libtiff=no \
-                             --without-jbig2dec --without-libpaper \
+                             --without-libpaper \
                              --with-fontpath=${datadir}/fonts \
                              --without-libidn --disable-fontconfig \
                              --enable-freetype --disable-cups "
diff --git a/poky/meta/recipes-extended/gperf/gperf_3.1.bb b/poky/meta/recipes-extended/gperf/gperf_3.1.bb
index c9f09c7..4c32a5d 100644
--- a/poky/meta/recipes-extended/gperf/gperf_3.1.bb
+++ b/poky/meta/recipes-extended/gperf/gperf_3.1.bb
@@ -17,4 +17,4 @@
 # it where to look explicitly (mirroring the behaviour of upstream's Makefile.devel).
 EXTRA_AUTORECONF += " -I ${S} --exclude=aclocal"
 
-BBCLASSEXTEND = "native"
+BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-extended/iputils/iputils/0001-rarpd-rdisc-Drop-PrivateUsers.patch b/poky/meta/recipes-extended/iputils/iputils/0001-rarpd-rdisc-Drop-PrivateUsers.patch
deleted file mode 100644
index c61e39d..0000000
--- a/poky/meta/recipes-extended/iputils/iputils/0001-rarpd-rdisc-Drop-PrivateUsers.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From dfeeb3f1328d09f516edeb6349bd63e3c87f9397 Mon Sep 17 00:00:00 2001
-From: Alex Kiernan <alex.kiernan@gmail.com>
-Date: Thu, 13 Feb 2020 06:08:45 +0000
-Subject: [PATCH] rarpd:Drop PrivateUsers
-
-rarpd cannot gain the necessary capabilities with
-PrivateUsers enabled.
-
-Upstream-Status: Pending
-Signed-off-by: Alex Kiernan <alex.kiernan@gmail.com>
-
----
- systemd/rarpd.service.in | 1 -
- 1 file changed, 1 deletion(-)
-
-diff --git a/systemd/rarpd.service.in b/systemd/rarpd.service.in
-index e600c10..f5d7621 100644
---- a/systemd/rarpd.service.in
-+++ b/systemd/rarpd.service.in
-@@ -12,7 +12,6 @@ AmbientCapabilities=CAP_NET_RAW
- DynamicUser=yes
- PrivateTmp=yes
- PrivateDevices=yes
--PrivateUsers=yes
- ProtectSystem=strict
- ProtectHome=yes
- ProtectControlGroups=yes
diff --git a/poky/meta/recipes-extended/iputils/iputils_20211215.bb b/poky/meta/recipes-extended/iputils/iputils_20211215.bb
deleted file mode 100644
index 3ddce0b..0000000
--- a/poky/meta/recipes-extended/iputils/iputils_20211215.bb
+++ /dev/null
@@ -1,66 +0,0 @@
-SUMMARY = "Network monitoring tools"
-DESCRIPTION = "Utilities for the IP protocol, including \
-tracepath, tracepath6, ping, ping6 and arping."
-HOMEPAGE = "https://github.com/iputils/iputils"
-SECTION = "console/network"
-
-LICENSE = "BSD-3-Clause & GPL-2.0-or-later"
-
-LIC_FILES_CHKSUM = "file://LICENSE;md5=bb64c89bb0e23b72930d2380894c47a1"
-
-DEPENDS = "gnutls"
-
-SRC_URI = "git://github.com/iputils/iputils;branch=master;protocol=https \
-           file://0001-rarpd-rdisc-Drop-PrivateUsers.patch \
-           "
-SRCREV = "1d1e7c43210d8af316a41cb2c53d612a4c16f34d"
-
-S = "${WORKDIR}/git"
-
-UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>20\d+)"
-
-# Fixed in 2000-10-10, but the versioning of iputils
-# breaks the version order.
-CVE_CHECK_IGNORE += "CVE-2000-1213 CVE-2000-1214"
-
-PACKAGECONFIG ??= "libcap rarpd \
-                   ${@bb.utils.contains('DISTRO_FEATURES', 'ipv6', 'ninfod', '', d)} \
-                   ${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)}"
-PACKAGECONFIG[libcap] = "-DUSE_CAP=true, -DUSE_CAP=false -DNO_SETCAP_OR_SUID=true, libcap libcap-native"
-PACKAGECONFIG[libidn] = "-DUSE_IDN=true, -DUSE_IDN=false, libidn2"
-PACKAGECONFIG[gettext] = "-DUSE_GETTEXT=true, -DUSE_GETTEXT=false, gettext"
-PACKAGECONFIG[ninfod] = "-DBUILD_NINFOD=true,-DBUILD_NINFOD=false,"
-PACKAGECONFIG[rarpd] = "-DBUILD_RARPD=true,-DBUILD_RARPD=false,"
-PACKAGECONFIG[systemd] = "-Dsystemdunitdir=${systemd_system_unitdir},,systemd"
-PACKAGECONFIG[docs] = "-DBUILD_HTML_MANS=true -DBUILD_MANS=true,-DBUILD_HTML_MANS=false -DBUILD_MANS=false, libxslt"
-
-inherit meson systemd update-alternatives pkgconfig
-
-EXTRA_OEMESON += "--prefix=${root_prefix}/ -DSKIP_TESTS=true"
-
-ALTERNATIVE_PRIORITY = "100"
-
-ALTERNATIVE:${PN}-ping = "ping"
-ALTERNATIVE_LINK_NAME[ping] = "${base_bindir}/ping"
-
-SPLITPKGS = "${PN}-ping ${PN}-arping ${PN}-tracepath ${PN}-clockdiff ${PN}-rdisc \
-             ${@bb.utils.contains('PACKAGECONFIG', 'rarpd', '${PN}-rarpd', '', d)} \
-             ${@bb.utils.contains('DISTRO_FEATURES', 'ipv6', '${PN}-ninfod', '', d)}"
-PACKAGES += "${SPLITPKGS}"
-
-ALLOW_EMPTY:${PN} = "1"
-RDEPENDS:${PN} += "${SPLITPKGS}"
-
-FILES:${PN} = ""
-FILES:${PN}-ping = "${base_bindir}/ping.${BPN}"
-FILES:${PN}-arping = "${base_bindir}/arping"
-FILES:${PN}-tracepath = "${base_bindir}/tracepath"
-FILES:${PN}-clockdiff = "${base_bindir}/clockdiff"
-FILES:${PN}-rarpd = "${base_sbindir}/rarpd  ${systemd_system_unitdir}/rarpd@.service"
-FILES:${PN}-rdisc = "${base_sbindir}/rdisc"
-FILES:${PN}-ninfod = "${base_sbindir}/ninfod ${sysconfdir}/init.d/ninfod.sh"
-
-SYSTEMD_PACKAGES = "${@bb.utils.contains('DISTRO_FEATURES', 'ipv6', '${PN}-ninfod', '', d)} \
-                    ${PN}-rdisc"
-SYSTEMD_SERVICE:${PN}-ninfod = "ninfod.service"
-SYSTEMD_SERVICE:${PN}-rdisc = "rdisc.service"
diff --git a/poky/meta/recipes-extended/iputils/iputils_20221126.bb b/poky/meta/recipes-extended/iputils/iputils_20221126.bb
new file mode 100644
index 0000000..cd5fe9b
--- /dev/null
+++ b/poky/meta/recipes-extended/iputils/iputils_20221126.bb
@@ -0,0 +1,49 @@
+SUMMARY = "Network monitoring tools"
+DESCRIPTION = "Utilities for the IP protocol, including \
+tracepath, tracepath6, ping, ping6 and arping."
+HOMEPAGE = "https://github.com/iputils/iputils"
+SECTION = "console/network"
+
+LICENSE = "BSD-3-Clause & GPL-2.0-or-later"
+
+LIC_FILES_CHKSUM = "file://LICENSE;md5=627cc07ec86a45951d43e30658bbd819"
+
+DEPENDS = "gnutls"
+
+SRC_URI = "git://github.com/iputils/iputils;branch=master;protocol=https"
+SRCREV = "5ffabc4190cab975c7332645259e286a032e183b"
+
+S = "${WORKDIR}/git"
+
+UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>20\d+)"
+
+# Fixed in 2000-10-10, but the versioning of iputils
+# breaks the version order.
+CVE_CHECK_IGNORE += "CVE-2000-1213 CVE-2000-1214"
+
+PACKAGECONFIG ??= "libcap"
+PACKAGECONFIG[libcap] = "-DUSE_CAP=true, -DUSE_CAP=false -DNO_SETCAP_OR_SUID=true, libcap libcap-native"
+PACKAGECONFIG[libidn] = "-DUSE_IDN=true, -DUSE_IDN=false, libidn2"
+PACKAGECONFIG[gettext] = "-DUSE_GETTEXT=true, -DUSE_GETTEXT=false, gettext"
+PACKAGECONFIG[docs] = "-DBUILD_HTML_MANS=true -DBUILD_MANS=true,-DBUILD_HTML_MANS=false -DBUILD_MANS=false, libxslt"
+
+inherit meson update-alternatives pkgconfig
+
+EXTRA_OEMESON += "--prefix=${root_prefix}/ -DSKIP_TESTS=true"
+
+ALTERNATIVE_PRIORITY = "100"
+
+ALTERNATIVE:${PN}-ping = "ping"
+ALTERNATIVE_LINK_NAME[ping] = "${base_bindir}/ping"
+
+SPLITPKGS = "${PN}-ping ${PN}-arping ${PN}-tracepath ${PN}-clockdiff"
+PACKAGES += "${SPLITPKGS}"
+
+ALLOW_EMPTY:${PN} = "1"
+RDEPENDS:${PN} += "${SPLITPKGS}"
+
+FILES:${PN} = ""
+FILES:${PN}-ping = "${base_bindir}/ping.${BPN}"
+FILES:${PN}-arping = "${base_bindir}/arping"
+FILES:${PN}-tracepath = "${base_bindir}/tracepath"
+FILES:${PN}-clockdiff = "${base_bindir}/clockdiff"
diff --git a/poky/meta/recipes-extended/libarchive/libarchive/0001-libarchive-Do-not-include-sys-mount.h-when-linux-fs..patch b/poky/meta/recipes-extended/libarchive/libarchive/0001-libarchive-Do-not-include-sys-mount.h-when-linux-fs..patch
deleted file mode 100644
index 0d21799..0000000
--- a/poky/meta/recipes-extended/libarchive/libarchive/0001-libarchive-Do-not-include-sys-mount.h-when-linux-fs..patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From a2f68263a1da5ad227bcb9cd8fa91b93c8b6c99f Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Mon, 25 Jul 2022 10:56:53 -0700
-Subject: [PATCH] libarchive: Do not include sys/mount.h when linux/fs.h is
- present
-
-These headers are in conflict and only one is needed by
-archive_read_disk_posix.c therefore include linux/fs.h if it exists
-otherwise include sys/mount.h
-
-It also helps compiling with glibc 2.36
-where sys/mount.h conflicts with linux/mount.h see [1]
-
-[1] https://sourceware.org/glibc/wiki/Release/2.36
-
-Upstream-Status: Submitted [https://github.com/libarchive/libarchive/pull/1761]
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- libarchive/archive_read_disk_posix.c | 5 ++---
- 1 file changed, 2 insertions(+), 3 deletions(-)
-
-diff --git a/libarchive/archive_read_disk_posix.c b/libarchive/archive_read_disk_posix.c
-index 2b39e672..a96008db 100644
---- a/libarchive/archive_read_disk_posix.c
-+++ b/libarchive/archive_read_disk_posix.c
-@@ -34,9 +34,6 @@ __FBSDID("$FreeBSD$");
- #ifdef HAVE_SYS_PARAM_H
- #include <sys/param.h>
- #endif
--#ifdef HAVE_SYS_MOUNT_H
--#include <sys/mount.h>
--#endif
- #ifdef HAVE_SYS_STAT_H
- #include <sys/stat.h>
- #endif
-@@ -54,6 +51,8 @@ __FBSDID("$FreeBSD$");
- #endif
- #ifdef HAVE_LINUX_FS_H
- #include <linux/fs.h>
-+#elif HAVE_SYS_MOUNT_H
-+#include <sys/mount.h>
- #endif
- /*
-  * Some Linux distributions have both linux/ext2_fs.h and ext2fs/ext2_fs.h.
--- 
-2.25.1
-
diff --git a/poky/meta/recipes-extended/libarchive/libarchive_3.6.1.bb b/poky/meta/recipes-extended/libarchive/libarchive_3.6.2.bb
similarity index 90%
rename from poky/meta/recipes-extended/libarchive/libarchive_3.6.1.bb
rename to poky/meta/recipes-extended/libarchive/libarchive_3.6.2.bb
index 24d7918..f447035 100644
--- a/poky/meta/recipes-extended/libarchive/libarchive_3.6.1.bb
+++ b/poky/meta/recipes-extended/libarchive/libarchive_3.6.2.bb
@@ -30,14 +30,12 @@
 PACKAGECONFIG[mbedtls] = "--with-mbedtls,--without-mbedtls,mbedtls,"
 PACKAGECONFIG[zstd] = "--with-zstd,--without-zstd,zstd,"
 
-EXTRA_OECONF += "--enable-largefile"
+EXTRA_OECONF += "--enable-largefile --without-iconv"
 
-SRC_URI = "http://libarchive.org/downloads/libarchive-${PV}.tar.gz \
-           file://0001-libarchive-Do-not-include-sys-mount.h-when-linux-fs..patch \
-           "
+SRC_URI = "http://libarchive.org/downloads/libarchive-${PV}.tar.gz"
 UPSTREAM_CHECK_URI = "http://libarchive.org/"
 
-SRC_URI[sha256sum] = "c676146577d989189940f1959d9e3980d28513d74eedfbc6b7f15ea45fe54ee2"
+SRC_URI[sha256sum] = "ba6d02f15ba04aba9c23fd5f236bb234eab9d5209e95d1c4df85c44d5f19b9b3"
 
 inherit autotools update-alternatives pkgconfig
 
diff --git a/poky/meta/recipes-extended/libpipeline/libpipeline_1.5.6.bb b/poky/meta/recipes-extended/libpipeline/libpipeline_1.5.7.bb
similarity index 84%
rename from poky/meta/recipes-extended/libpipeline/libpipeline_1.5.6.bb
rename to poky/meta/recipes-extended/libpipeline/libpipeline_1.5.7.bb
index 7007608..73c7aaa 100644
--- a/poky/meta/recipes-extended/libpipeline/libpipeline_1.5.6.bb
+++ b/poky/meta/recipes-extended/libpipeline/libpipeline_1.5.7.bb
@@ -7,7 +7,7 @@
 LIC_FILES_CHKSUM = "file://COPYING;md5=1ebbd3e34237af26da5dc08a4e440464"
 
 SRC_URI = "${SAVANNAH_GNU_MIRROR}/libpipeline/libpipeline-${PV}.tar.gz"
-SRC_URI[sha256sum] = "60fbb9e7dc398528e5f3a776af57bb28ca3fe5d9f0cd8a961ac6cebfe6e9b797"
+SRC_URI[sha256sum] = "b8b45194989022a79ec1317f64a2a75b1551b2a55bea06f67704cb2a2e4690b0"
 
 inherit pkgconfig autotools
 
diff --git a/poky/meta/recipes-extended/libsolv/libsolv_0.7.22.bb b/poky/meta/recipes-extended/libsolv/libsolv_0.7.23.bb
similarity index 95%
rename from poky/meta/recipes-extended/libsolv/libsolv_0.7.22.bb
rename to poky/meta/recipes-extended/libsolv/libsolv_0.7.23.bb
index c27bf9c..1256905 100644
--- a/poky/meta/recipes-extended/libsolv/libsolv_0.7.22.bb
+++ b/poky/meta/recipes-extended/libsolv/libsolv_0.7.23.bb
@@ -12,7 +12,7 @@
            file://0001-utils-Conside-musl-when-wrapping-qsort_r.patch \
 "
 
-SRCREV = "ea114b257b78bda6ee3e4238118ed93bc57c5984"
+SRCREV = "6deaca7cf61ec2b32c4a3b494a751c8d15efbe8b"
 
 UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+(\.\d+)+)"
 
diff --git a/poky/meta/recipes-extended/logrotate/logrotate_3.20.1.bb b/poky/meta/recipes-extended/logrotate/logrotate_3.21.0.bb
similarity index 97%
rename from poky/meta/recipes-extended/logrotate/logrotate_3.20.1.bb
rename to poky/meta/recipes-extended/logrotate/logrotate_3.21.0.bb
index 034c37b..4e4ea10 100644
--- a/poky/meta/recipes-extended/logrotate/logrotate_3.20.1.bb
+++ b/poky/meta/recipes-extended/logrotate/logrotate_3.21.0.bb
@@ -12,7 +12,7 @@
 
 SRC_URI = "${GITHUB_BASE_URI}/download/${PV}/${BP}.tar.xz"
 
-SRC_URI[sha256sum] = "742f6d6e18eceffa49a4bacd933686d3e42931cfccfb694d7f6369b704e5d094"
+SRC_URI[sha256sum] = "8fa12015e3b8415c121fc9c0ca53aa872f7b0702f543afda7e32b6c4900f6516"
 
 # These CVEs are debian, gentoo or SUSE specific on the way logrotate was installed/used
 CVE_CHECK_IGNORE += "CVE-2011-1548 CVE-2011-1549 CVE-2011-1550"
diff --git a/poky/meta/recipes-extended/lsof/lsof_4.96.4.bb b/poky/meta/recipes-extended/lsof/lsof_4.96.5.bb
similarity index 82%
rename from poky/meta/recipes-extended/lsof/lsof_4.96.4.bb
rename to poky/meta/recipes-extended/lsof/lsof_4.96.5.bb
index bdd883d..9f80176 100644
--- a/poky/meta/recipes-extended/lsof/lsof_4.96.4.bb
+++ b/poky/meta/recipes-extended/lsof/lsof_4.96.5.bb
@@ -8,10 +8,19 @@
 
 SRC_URI = "git://github.com/lsof-org/lsof;branch=master;protocol=https \
            file://remove-host-information.patch"
-SRCREV = "669c33a253e414feb60fbbcf2984c25dc413cd75"
+SRCREV = "898916d4c7c390ea4610aebaf1d32b8a3c49f26b"
 
 S = "${WORKDIR}/git"
 
+
+inherit update-alternatives
+
+ALTERNATIVE_${PN} = "lsof"
+ALTERNATIVE_LINK_NAME[lsof] = "${sbindir}/lsof"
+# Make our priority higher than busybox
+ALTERNATIVE_PRIORITY = "100"
+
+
 export LSOF_INCLUDE = "${STAGING_INCDIR}"
 
 do_configure () {
diff --git a/poky/meta/recipes-extended/ltp/ltp/0001-testcases-Fix-largefile-support.patch b/poky/meta/recipes-extended/ltp/ltp/0001-testcases-Fix-largefile-support.patch
new file mode 100644
index 0000000..e9b48c3
--- /dev/null
+++ b/poky/meta/recipes-extended/ltp/ltp/0001-testcases-Fix-largefile-support.patch
@@ -0,0 +1,426 @@
+From 3cca69b85c88c6eb4f02313b3c6a9e0f6cc0b5d7 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 14 Dec 2022 18:14:22 -0800
+Subject: [PATCH] testcases: Fix largefile support
+
+Use standard functions ( not 64-bit equivalents ) which operate on off_t
+and pass -D_FILE_OFFSET_BITS=64 to enable LFS always so off_t is 64bit
+for these tests.
+
+This helps making it portable across musl which has removed the 64bit
+transition functions from _GNU_SOURCE namespace.
+
+Upstream-Status: Submitted [https://lists.linux.it/pipermail/ltp/2022-December/032310.html]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ testcases/kernel/io/direct_io/Makefile             |  2 +-
+ testcases/kernel/io/direct_io/diotest2.c           |  4 ++--
+ testcases/kernel/io/direct_io/diotest5.c           | 10 +++++-----
+ testcases/kernel/io/direct_io/diotest6.c           |  4 ++--
+ testcases/kernel/syscalls/fcntl/fcntl18.c          |  6 +++---
+ testcases/kernel/syscalls/fcntl/fcntl34.c          |  2 +-
+ testcases/kernel/syscalls/fcntl/fcntl36.c          |  4 ++--
+ testcases/kernel/syscalls/llseek/Makefile          |  2 ++
+ testcases/kernel/syscalls/llseek/llseek01.c        | 14 +++++++-------
+ testcases/kernel/syscalls/llseek/llseek02.c        | 12 ++++++------
+ testcases/kernel/syscalls/llseek/llseek03.c        |  6 +++---
+ testcases/kernel/syscalls/open/Makefile            |  2 ++
+ testcases/kernel/syscalls/open/open12.c            |  6 +++---
+ testcases/kernel/syscalls/openat/Makefile          |  2 ++
+ testcases/kernel/syscalls/openat/openat02.c        |  6 +++---
+ testcases/kernel/syscalls/sync_file_range/Makefile |  2 ++
+ .../syscalls/sync_file_range/sync_file_range01.c   |  4 ++--
+ .../syscalls/sync_file_range/sync_file_range02.c   |  6 +++---
+ 18 files changed, 51 insertions(+), 43 deletions(-)
+
+diff --git a/testcases/kernel/io/direct_io/Makefile b/testcases/kernel/io/direct_io/Makefile
+index 777f7b166..7480d7b0d 100644
+--- a/testcases/kernel/io/direct_io/Makefile
++++ b/testcases/kernel/io/direct_io/Makefile
+@@ -5,7 +5,7 @@ top_srcdir			?= ../../../..
+ 
+ include $(top_srcdir)/include/mk/testcases.mk
+ 
+-CFLAGS				+= -DSHARED_OFILE -D_GNU_SOURCE
++CFLAGS				+= -DSHARED_OFILE -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE
+ 
+ LDLIBS				+= -lpthread
+ 
+diff --git a/testcases/kernel/io/direct_io/diotest2.c b/testcases/kernel/io/direct_io/diotest2.c
+index c407c46ae..db47ee8ef 100644
+--- a/testcases/kernel/io/direct_io/diotest2.c
++++ b/testcases/kernel/io/direct_io/diotest2.c
+@@ -78,7 +78,7 @@ int bufsize = BUFSIZE;
+  *	For each iteration, write data starting at offse+iter*bufsize
+  *	location in the file and read from there.
+ */
+-int runtest(int fd_r, int fd_w, int iter, off64_t offset, int action)
++int runtest(int fd_r, int fd_w, int iter, off_t offset, int action)
+ {
+ 	char *buf1;
+ 	char *buf2;
+@@ -136,7 +136,7 @@ static void cleanup(void);
+ int main(int argc, char *argv[])
+ {
+ 	int iter = 100;		/* Iterations. Default 100 */
+-	off64_t offset = 0;	/* Offset. Default 0 */
++	off_t offset = 0;	/* Offset. Default 0 */
+ 	int i, action, fd_r, fd_w;
+ 	int fail_count = 0, total = 0, failed = 0;
+ 
+diff --git a/testcases/kernel/io/direct_io/diotest5.c b/testcases/kernel/io/direct_io/diotest5.c
+index 9bf917c64..ac66f2a04 100644
+--- a/testcases/kernel/io/direct_io/diotest5.c
++++ b/testcases/kernel/io/direct_io/diotest5.c
+@@ -75,14 +75,14 @@ int TST_TOTAL = 3;		/* Total number of test conditions */
+ static int bufsize = BUFSIZE;	/* Buffer size. Default 4k */
+ static int iter = 20;		/* Iterations. Default 20 */
+ static int nvector = 20;	/* Vector array. Default 20 */
+-static off64_t offset = 0;	/* Start offset. Default 0 */
++static off_t offset = 0;	/* Start offset. Default 0 */
+ static char filename[LEN];	/* Test data file */
+ static int fd1 = -1;
+ /*
+  * runtest: Write the data in vector array to the file. Read the data
+  *	from the file into another vectory array and verify. Repeat the test.
+ */
+-int runtest(int fd_r, int fd_w, int iter, off64_t offset, int action)
++int runtest(int fd_r, int fd_w, int iter, off_t offset, int action)
+ {
+ 	int i;
+ 	struct iovec *iov1, *iov2, *iovp;
+@@ -218,7 +218,7 @@ int main(int argc, char *argv[])
+ 		tst_brkm(TBROK, cleanup, "fd_w open failed for %s: %s",
+ 			 filename, strerror(errno));
+ 	}
+-	if ((fd_r = open64(filename, O_DIRECT | O_RDONLY | O_CREAT, 0666)) < 0) {
++	if ((fd_r = open(filename, O_DIRECT | O_RDONLY | O_CREAT, 0666)) < 0) {
+ 		tst_brkm(TBROK, cleanup, "fd_r open failed for %s: %s",
+ 			 filename, strerror(errno));
+ 	}
+@@ -240,7 +240,7 @@ int main(int argc, char *argv[])
+ 		tst_brkm(TBROK, cleanup, "fd_w open failed for %s: %s",
+ 			 filename, strerror(errno));
+ 	}
+-	if ((fd_r = open64(filename, O_RDONLY | O_CREAT, 0666)) < 0) {
++	if ((fd_r = open(filename, O_RDONLY | O_CREAT, 0666)) < 0) {
+ 		tst_brkm(TBROK, cleanup, "fd_r open failed for %s: %s",
+ 			 filename, strerror(errno));
+ 	}
+@@ -261,7 +261,7 @@ int main(int argc, char *argv[])
+ 		tst_brkm(TBROK, cleanup, "fd_w open failed for %s: %s",
+ 			 filename, strerror(errno));
+ 	}
+-	if ((fd_r = open64(filename, O_DIRECT | O_RDONLY | O_CREAT, 0666)) < 0) {
++	if ((fd_r = open(filename, O_DIRECT | O_RDONLY | O_CREAT, 0666)) < 0) {
+ 		tst_brkm(TBROK, cleanup, "fd_r open failed for %s: %s",
+ 			 filename, strerror(errno));
+ 	}
+diff --git a/testcases/kernel/io/direct_io/diotest6.c b/testcases/kernel/io/direct_io/diotest6.c
+index a06e6b82b..1905380f0 100644
+--- a/testcases/kernel/io/direct_io/diotest6.c
++++ b/testcases/kernel/io/direct_io/diotest6.c
+@@ -62,7 +62,7 @@ int TST_TOTAL = 3;
+ 
+ static int iter = 100;
+ static int bufsize = BUFSIZE;
+-static off64_t offset = 0;
++static off_t offset = 0;
+ static int nvector = 20;
+ static char filename[LEN];
+ static int fd1 = -1;
+@@ -84,7 +84,7 @@ static void prg_usage(void)
+ */
+ int runtest(int fd_r, int fd_w, int childnum, int action)
+ {
+-	off64_t seekoff;
++	off_t seekoff;
+ 	int i, ret = -1;
+ 	ssize_t n = 0;
+ 	struct iovec *iov_r, *iov_w;
+diff --git a/testcases/kernel/syscalls/fcntl/fcntl18.c b/testcases/kernel/syscalls/fcntl/fcntl18.c
+index 5eefbd128..1105dd393 100644
+--- a/testcases/kernel/syscalls/fcntl/fcntl18.c
++++ b/testcases/kernel/syscalls/fcntl/fcntl18.c
+@@ -103,11 +103,11 @@ int main(int ac, char **av)
+ 	tst_resm(TINFO, "Enter block 2");
+ 	fail = 0;
+ 	/* Error condition if address is bad */
+-	retval = fcntl(fd, F_GETLK64, (struct flock *)INVAL_FLAG);
++	retval = fcntl(fd, F_GETLK, (struct flock *)INVAL_FLAG);
+ 	if (errno == EFAULT) {
+-		tst_resm(TPASS, "Test F_GETLK64: for errno EFAULT PASSED");
++		tst_resm(TPASS, "Test F_GETLK: for errno EFAULT PASSED");
+ 	} else {
+-		tst_resm(TFAIL, "Test F_GETLK64: for errno EFAULT FAILED");
++		tst_resm(TFAIL, "Test F_GETLK: for errno EFAULT FAILED");
+ 		fail = 1;
+ 	}
+ 	if (fail) {
+diff --git a/testcases/kernel/syscalls/fcntl/fcntl34.c b/testcases/kernel/syscalls/fcntl/fcntl34.c
+index 3442114ff..536dead29 100644
+--- a/testcases/kernel/syscalls/fcntl/fcntl34.c
++++ b/testcases/kernel/syscalls/fcntl/fcntl34.c
+@@ -54,7 +54,7 @@ void *thread_fn_01(void *arg)
+ 
+ 	memset(buf, (intptr_t)arg, write_size);
+ 
+-	struct flock64 lck = {
++	struct flock lck = {
+ 		.l_whence = SEEK_SET,
+ 		.l_start  = 0,
+ 		.l_len    = 1,
+diff --git a/testcases/kernel/syscalls/fcntl/fcntl36.c b/testcases/kernel/syscalls/fcntl/fcntl36.c
+index d6b07fc41..4e4d48afc 100644
+--- a/testcases/kernel/syscalls/fcntl/fcntl36.c
++++ b/testcases/kernel/syscalls/fcntl/fcntl36.c
+@@ -72,7 +72,7 @@ static void *fn_ofd_w(void *arg)
+ 	int fd = SAFE_OPEN(fname, O_RDWR);
+ 	long wt = pa->cnt;
+ 
+-	struct flock64 lck = {
++	struct flock lck = {
+ 		.l_whence = SEEK_SET,
+ 		.l_start  = pa->offset,
+ 		.l_len    = pa->length,
+@@ -151,7 +151,7 @@ static void *fn_ofd_r(void *arg)
+ 	int i;
+ 	int fd = SAFE_OPEN(fname, O_RDWR);
+ 
+-	struct flock64 lck = {
++	struct flock lck = {
+ 		.l_whence = SEEK_SET,
+ 		.l_start  = pa->offset,
+ 		.l_len    = pa->length,
+diff --git a/testcases/kernel/syscalls/llseek/Makefile b/testcases/kernel/syscalls/llseek/Makefile
+index 044619fb8..8a916d0fa 100644
+--- a/testcases/kernel/syscalls/llseek/Makefile
++++ b/testcases/kernel/syscalls/llseek/Makefile
+@@ -6,3 +6,5 @@ top_srcdir		?= ../../../..
+ include $(top_srcdir)/include/mk/testcases.mk
+ 
+ include $(top_srcdir)/include/mk/generic_leaf_target.mk
++
++CFLAGS += -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE
+diff --git a/testcases/kernel/syscalls/llseek/llseek01.c b/testcases/kernel/syscalls/llseek/llseek01.c
+index 50f35493d..efb444dc8 100644
+--- a/testcases/kernel/syscalls/llseek/llseek01.c
++++ b/testcases/kernel/syscalls/llseek/llseek01.c
+@@ -4,7 +4,7 @@
+  *   07/2001 Ported by Wayne Boyer
+  */
+ /*
+- * Verify that lseek64() call succeeds to set the file pointer position to an
++ * Verify that lseek() call succeeds to set the file pointer position to an
+  * offset larger than file size limit (RLIMIT_FSIZE). Also, verify that any
+  * attempt to write to this location fails.
+  */
+@@ -27,22 +27,22 @@ static int fildes;
+ 
+ static void verify_llseek(void)
+ {
+-	TEST(lseek64(fildes, (loff_t) (80 * BUFSIZ), SEEK_SET));
++	TEST(lseek(fildes, (loff_t) (80 * BUFSIZ), SEEK_SET));
+ 	if (TST_RET == (80 * BUFSIZ))
+-		tst_res(TPASS, "lseek64() can set file pointer position larger than file size limit");
++		tst_res(TPASS, "lseek() can set file pointer position larger than file size limit");
+ 	else
+-		tst_res(TFAIL, "lseek64() returned wrong value %ld when write past file size", TST_RET);
++		tst_res(TFAIL, "lseek() returned wrong value %ld when write past file size", TST_RET);
+ 
+ 	if (write(fildes, write_buff, BUFSIZ) == -1)
+ 		tst_res(TPASS,"write failed after file size limit");
+ 	else
+ 		tst_brk(TFAIL, "write successful after file size limit");
+ 
+-	TEST(lseek64(fildes, (loff_t) BUFSIZ, SEEK_SET));
++	TEST(lseek(fildes, (loff_t) BUFSIZ, SEEK_SET));
+ 	if (TST_RET == BUFSIZ)
+-		tst_res(TPASS,"lseek64() can set file pointer position under filer size limit");
++		tst_res(TPASS,"lseek() can set file pointer position under filer size limit");
+ 	else
+-		tst_brk(TFAIL,"lseek64() returns wrong value %ld when write under file size", TST_RET);
++		tst_brk(TFAIL,"lseek() returns wrong value %ld when write under file size", TST_RET);
+ 
+ 	if (write(fildes, write_buff, BUFSIZ) != -1)
+ 		tst_res(TPASS, "write succcessfully under file size limit");
+diff --git a/testcases/kernel/syscalls/llseek/llseek02.c b/testcases/kernel/syscalls/llseek/llseek02.c
+index 3d9c21fc9..5431969f9 100644
+--- a/testcases/kernel/syscalls/llseek/llseek02.c
++++ b/testcases/kernel/syscalls/llseek/llseek02.c
+@@ -5,8 +5,8 @@
+  */
+ /*
+  * Description:
+- * 1) lseek64(2) fails and sets errno to EINVAL when whence is invalid.
+- * 2) lseek64(2) fails ans sets errno to EBADF when fd is not an open
++ * 1) lseek(2) fails and sets errno to EINVAL when whence is invalid.
++ * 2) lseek(2) fails ans sets errno to EBADF when fd is not an open
+  * file descriptor.
+  */
+ 
+@@ -39,17 +39,17 @@ static void verify_llseek(unsigned int n)
+ {
+ 	struct tcase *tc = &tcases[n];
+ 
+-	TEST(lseek64(*tc->fd, (loff_t) 1, tc->whence));
++	TEST(lseek(*tc->fd, (loff_t) 1, tc->whence));
+ 	if (TST_RET != (off_t) -1) {
+-		tst_res(TFAIL, "lseek64(%d, 1, %d) succeeded unexpectedly (%ld)",
++		tst_res(TFAIL, "lseek(%d, 1, %d) succeeded unexpectedly (%ld)",
+ 			*tc->fd, tc->whence, TST_RET);
+ 		return;
+ 	}
+ 	if (TST_ERR == tc->exp_err) {
+-		tst_res(TPASS | TTERRNO, "lseek64(%d, 1, %d) failed as expected",
++		tst_res(TPASS | TTERRNO, "lseek(%d, 1, %d) failed as expected",
+ 			*tc->fd, tc->whence);
+ 	} else {
+-		tst_res(TFAIL | TTERRNO, "lseek64(%d, 1, %d) failed "
++		tst_res(TFAIL | TTERRNO, "lseek(%d, 1, %d) failed "
+ 		        "unexpectedly, expected %s", *tc->fd, tc->whence,
+ 		        tst_strerrno(tc->exp_err));
+ 	}
+diff --git a/testcases/kernel/syscalls/llseek/llseek03.c b/testcases/kernel/syscalls/llseek/llseek03.c
+index d780f2af6..6c34119e5 100644
+--- a/testcases/kernel/syscalls/llseek/llseek03.c
++++ b/testcases/kernel/syscalls/llseek/llseek03.c
+@@ -72,7 +72,7 @@ static const char *str_whence(int whence)
+ 	}
+ }
+ 
+-static void verify_lseek64(unsigned int n)
++static void verify_lseek(unsigned int n)
+ {
+ 	struct tcase *tc = &tcases[n];
+ 	char read_buf[128];
+@@ -82,7 +82,7 @@ static void verify_lseek64(unsigned int n)
+ 
+ 	SAFE_READ(1, fd, read_buf, 4);
+ 
+-	TEST(lseek64(fd, tc->off, tc->whence));
++	TEST(lseek(fd, tc->off, tc->whence));
+ 
+ 	if (TST_RET == -1) {
+                 tst_res(TFAIL | TTERRNO, "llseek failed on %s ", TEST_FILE);
+@@ -121,6 +121,6 @@ exit:
+ static struct tst_test test = {
+ 	.needs_tmpdir = 1,
+ 	.setup = setup,
+-	.test = verify_lseek64,
++	.test = verify_lseek,
+ 	.tcnt = ARRAY_SIZE(tcases),
+ };
+diff --git a/testcases/kernel/syscalls/open/Makefile b/testcases/kernel/syscalls/open/Makefile
+index 044619fb8..8a916d0fa 100644
+--- a/testcases/kernel/syscalls/open/Makefile
++++ b/testcases/kernel/syscalls/open/Makefile
+@@ -6,3 +6,5 @@ top_srcdir		?= ../../../..
+ include $(top_srcdir)/include/mk/testcases.mk
+ 
+ include $(top_srcdir)/include/mk/generic_leaf_target.mk
++
++CFLAGS += -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE
+diff --git a/testcases/kernel/syscalls/open/open12.c b/testcases/kernel/syscalls/open/open12.c
+index bdf29a9a8..c840de53d 100644
+--- a/testcases/kernel/syscalls/open/open12.c
++++ b/testcases/kernel/syscalls/open/open12.c
+@@ -233,14 +233,14 @@ static void test_cloexec(void)
+ static void test_largefile(void)
+ {
+ 	int fd;
+-	off64_t offset;
++	off_t offset;
+ 
+ 	fd = SAFE_OPEN(cleanup, LARGE_FILE,
+ 				O_LARGEFILE | O_RDWR | O_CREAT, 0777);
+ 
+-	offset = lseek64(fd, 4.1*1024*1024*1024, SEEK_SET);
++	offset = lseek(fd, 4.1*1024*1024*1024, SEEK_SET);
+ 	if (offset == -1)
+-		tst_brkm(TBROK | TERRNO, cleanup, "lseek64 failed");
++		tst_brkm(TBROK | TERRNO, cleanup, "lseek failed");
+ 
+ 	SAFE_WRITE(cleanup, 1, fd, LARGE_FILE, sizeof(LARGE_FILE));
+ 
+diff --git a/testcases/kernel/syscalls/openat/Makefile b/testcases/kernel/syscalls/openat/Makefile
+index 044619fb8..8a916d0fa 100644
+--- a/testcases/kernel/syscalls/openat/Makefile
++++ b/testcases/kernel/syscalls/openat/Makefile
+@@ -6,3 +6,5 @@ top_srcdir		?= ../../../..
+ include $(top_srcdir)/include/mk/testcases.mk
+ 
+ include $(top_srcdir)/include/mk/generic_leaf_target.mk
++
++CFLAGS += -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE
+diff --git a/testcases/kernel/syscalls/openat/openat02.c b/testcases/kernel/syscalls/openat/openat02.c
+index 2ce119033..f6113852a 100644
+--- a/testcases/kernel/syscalls/openat/openat02.c
++++ b/testcases/kernel/syscalls/openat/openat02.c
+@@ -22,7 +22,7 @@
+  *   2)openat() succeeds to enable the close-on-exec flag for a
+  *     file descriptor, when 'flags' is set to O_CLOEXEC.
+  *   3)openat() succeeds to allow files whose sizes cannot be
+- *     represented in an off_t but can be represented in an off64_t
++ *     represented in an off_t but can be represented in an off_t
+  *     to be opened, when 'flags' is set to O_LARGEFILE.
+  *   4)openat() succeeds to not update the file last access time
+  *     (st_atime in the inode) when the file is read, when 'flags'
+@@ -193,12 +193,12 @@ void testfunc_cloexec(void)
+ void testfunc_largefile(void)
+ {
+ 	int fd;
+-	off64_t offset;
++	off_t offset;
+ 
+ 	fd = SAFE_OPEN(cleanup, LARGE_FILE,
+ 				O_LARGEFILE | O_RDWR | O_CREAT, 0777);
+ 
+-	offset = lseek64(fd, 4.1*1024*1024*1024, SEEK_SET);
++	offset = lseek(fd, 4.1*1024*1024*1024, SEEK_SET);
+ 	if (offset == -1)
+ 		tst_brkm(TBROK | TERRNO, cleanup, "lseek64 failed");
+ 
+diff --git a/testcases/kernel/syscalls/sync_file_range/Makefile b/testcases/kernel/syscalls/sync_file_range/Makefile
+index 044619fb8..8a916d0fa 100644
+--- a/testcases/kernel/syscalls/sync_file_range/Makefile
++++ b/testcases/kernel/syscalls/sync_file_range/Makefile
+@@ -6,3 +6,5 @@ top_srcdir		?= ../../../..
+ include $(top_srcdir)/include/mk/testcases.mk
+ 
+ include $(top_srcdir)/include/mk/generic_leaf_target.mk
++
++CFLAGS += -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE
+diff --git a/testcases/kernel/syscalls/sync_file_range/sync_file_range01.c b/testcases/kernel/syscalls/sync_file_range/sync_file_range01.c
+index 187ef6071..47188aa48 100644
+--- a/testcases/kernel/syscalls/sync_file_range/sync_file_range01.c
++++ b/testcases/kernel/syscalls/sync_file_range/sync_file_range01.c
+@@ -44,8 +44,8 @@ static int bfd = -1;
+ 
+ struct test_case {
+ 	int *fd;
+-	off64_t offset;
+-	off64_t nbytes;
++	off_t offset;
++	off_t nbytes;
+ 	unsigned int flags;
+ 	int error;
+ } tcases[] = {
+diff --git a/testcases/kernel/syscalls/sync_file_range/sync_file_range02.c b/testcases/kernel/syscalls/sync_file_range/sync_file_range02.c
+index 5da751c70..28a8156c8 100644
+--- a/testcases/kernel/syscalls/sync_file_range/sync_file_range02.c
++++ b/testcases/kernel/syscalls/sync_file_range/sync_file_range02.c
+@@ -31,10 +31,10 @@
+ 
+ struct testcase {
+ 	char *fname;
+-	off64_t sync_off;
+-	off64_t sync_size;
++	off_t sync_off;
++	off_t sync_size;
+ 	size_t exp_sync_size;
+-	off64_t write_off;
++	off_t write_off;
+ 	size_t write_size_mb;
+ 	const char *desc;
+ };
diff --git a/poky/meta/recipes-extended/ltp/ltp_20220930.bb b/poky/meta/recipes-extended/ltp/ltp_20220930.bb
index 405b17b..568a632 100644
--- a/poky/meta/recipes-extended/ltp/ltp_20220930.bb
+++ b/poky/meta/recipes-extended/ltp/ltp_20220930.bb
@@ -29,6 +29,7 @@
 SRC_URI = "git://github.com/linux-test-project/ltp.git;branch=master;protocol=https \
            file://0001-Remove-OOM-tests-from-runtest-mm.patch \
            file://disable_hanging_tests.patch \
+           file://0001-testcases-Fix-largefile-support.patch \
            "
 
 S = "${WORKDIR}/git"
diff --git a/poky/meta/recipes-extended/man-db/man-db_2.10.2.bb b/poky/meta/recipes-extended/man-db/man-db_2.11.1.bb
similarity index 84%
rename from poky/meta/recipes-extended/man-db/man-db_2.10.2.bb
rename to poky/meta/recipes-extended/man-db/man-db_2.11.1.bb
index a41e2dd..2d539c4 100644
--- a/poky/meta/recipes-extended/man-db/man-db_2.10.2.bb
+++ b/poky/meta/recipes-extended/man-db/man-db_2.11.1.bb
@@ -1,15 +1,17 @@
 SUMMARY = "An implementation of the standard Unix documentation system accessed using the man command"
 HOMEPAGE = "http://man-db.nongnu.org/"
 DESCRIPTION = "man-db is an implementation of the standard Unix documentation system accessed using the man command. It uses a Berkeley DB database in place of the traditional flat-text whatis databases."
-LICENSE = "LGPL-2.1-only & GPL-2.0-only"
-LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=4fbd65380cdd255951079008b364516c \
-                    file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+LICENSE = "LGPL-2.1-or-later & GPL-2.0-or-later & GPL-3.0-or-later"
+LIC_FILES_CHKSUM = "file://COPYING;md5=1ebbd3e34237af26da5dc08a4e440464 \
+                    file://docs/COPYING.GPLv2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+                    file://docs/COPYING.LIB;md5=4fbd65380cdd255951079008b364516c \
+                   "
 
 SRC_URI = "${SAVANNAH_NONGNU_MIRROR}/man-db/man-db-${PV}.tar.xz \
            file://99_mandb \
            file://0001-man-Move-local-variable-declaration-to-function-scop.patch \
            file://man_db.conf-avoid-multilib-install-file-conflict.patch"
-SRC_URI[sha256sum] = "ee97954d492a13731903c9d0727b9b01e5089edbd695f0cdb58d405a5af5514d"
+SRC_URI[sha256sum] = "2eabaa5251349847de9c9e43c634d986cbcc6f87642d1d9cb8608ec18487b6cc"
 
 DEPENDS = "libpipeline gdbm groff-native base-passwd"
 RDEPENDS:${PN} += "base-passwd"
diff --git a/poky/meta/recipes-extended/mdadm/files/0001-restripe.c-Use-_FILE_OFFSET_BITS-to-enable-largefile.patch b/poky/meta/recipes-extended/mdadm/files/0001-restripe.c-Use-_FILE_OFFSET_BITS-to-enable-largefile.patch
new file mode 100644
index 0000000..142ed35
--- /dev/null
+++ b/poky/meta/recipes-extended/mdadm/files/0001-restripe.c-Use-_FILE_OFFSET_BITS-to-enable-largefile.patch
@@ -0,0 +1,147 @@
+From 6b861a267a6ef6f60f6cc21e4c8e6d7cdd2451dc Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 10 Nov 2022 12:31:22 -0800
+Subject: [PATCH] restripe.c: Use _FILE_OFFSET_BITS to enable largefile support
+
+Instead of using the lseek64 and friends, its better to enable it via
+the feature macro _FILE_OFFSET_BITS = 64 and let the C library deal with
+the width of types
+
+Upstream-Status: Submitted [https://lore.kernel.org/linux-raid/20221110225546.337164-1-raj.khem@gmail.com/]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ restripe.c | 13 ++++++++-----
+ 1 file changed, 8 insertions(+), 5 deletions(-)
+
+--- a/restripe.c
++++ b/restripe.c
+@@ -22,6 +22,9 @@
+  *    Email: <neilb@suse.de>
+  */
+ 
++/* Enable largefile support */
++#define _FILE_OFFSET_BITS 64
++
+ #include "mdadm.h"
+ #include <stdint.h>
+ 
+@@ -581,7 +584,7 @@ int save_stripes(int *source, unsigned l
+ 				       raid_disks, level, layout);
+ 			if (dnum < 0) abort();
+ 			if (source[dnum] < 0 ||
+-			    lseek64(source[dnum],
++			    lseek(source[dnum],
+ 				    offsets[dnum] + offset, 0) < 0 ||
+ 			    read(source[dnum], buf+disk * chunk_size,
+ 				 chunk_size) != chunk_size) {
+@@ -754,8 +757,8 @@ int restore_stripes(int *dest, unsigned
+ 					   raid_disks, level, layout);
+ 			if (src_buf == NULL) {
+ 				/* read from file */
+-				if (lseek64(source, read_offset, 0) !=
+-					 (off64_t)read_offset) {
++				if (lseek(source, read_offset, 0) !=
++					 (off_t)read_offset) {
+ 					rv = -1;
+ 					goto abort;
+ 				}
+@@ -816,7 +819,7 @@ int restore_stripes(int *dest, unsigned
+ 		}
+ 		for (i=0; i < raid_disks ; i++)
+ 			if (dest[i] >= 0) {
+-				if (lseek64(dest[i],
++				if (lseek(dest[i],
+ 					 offsets[i]+offset, 0) < 0) {
+ 					rv = -1;
+ 					goto abort;
+@@ -866,7 +869,7 @@ int test_stripes(int *source, unsigned l
+ 		int disk;
+ 
+ 		for (i = 0 ; i < raid_disks ; i++) {
+-			if ((lseek64(source[i], offsets[i]+start, 0) < 0) ||
++			if ((lseek(source[i], offsets[i]+start, 0) < 0) ||
+ 			    (read(source[i], stripes[i], chunk_size) !=
+ 			     chunk_size)) {
+ 				free(q);
+--- a/raid6check.c
++++ b/raid6check.c
+@@ -22,6 +22,9 @@
+  *    Based on "restripe.c" from "mdadm" codebase
+  */
+ 
++/* Enable largefile support */
++#define _FILE_OFFSET_BITS 64
++
+ #include "mdadm.h"
+ #include <stdint.h>
+ #include <signal.h>
+@@ -279,9 +282,9 @@ int manual_repair(int chunk_size, int sy
+ 	}
+ 
+ 	int write_res1, write_res2;
+-	off64_t seek_res;
++	off_t seek_res;
+ 
+-	seek_res = lseek64(source[fd1],
++	seek_res = lseek(source[fd1],
+ 			   offsets[fd1] + start * chunk_size, SEEK_SET);
+ 	if (seek_res < 0) {
+ 		fprintf(stderr, "lseek failed for failed_disk1\n");
+@@ -289,7 +292,7 @@ int manual_repair(int chunk_size, int sy
+ 	}
+ 	write_res1 = write(source[fd1], blocks[failed_slot1], chunk_size);
+ 
+-	seek_res = lseek64(source[fd2],
++	seek_res = lseek(source[fd2],
+ 			   offsets[fd2] + start * chunk_size, SEEK_SET);
+ 	if (seek_res < 0) {
+ 		fprintf(stderr, "lseek failed for failed_disk2\n");
+@@ -374,7 +377,7 @@ int check_stripes(struct mdinfo *info, i
+ 			goto exitCheck;
+ 		}
+ 		for (i = 0 ; i < raid_disks ; i++) {
+-			off64_t seek_res = lseek64(source[i], offsets[i] + start * chunk_size,
++			off_t seek_res = lseek(source[i], offsets[i] + start * chunk_size,
+ 						   SEEK_SET);
+ 			if (seek_res < 0) {
+ 				fprintf(stderr, "lseek to source %d failed\n", i);
+--- a/swap_super.c
++++ b/swap_super.c
+@@ -1,3 +1,6 @@
++/* Enable largefile support */
++#define _FILE_OFFSET_BITS 64
++
+ #include <unistd.h>
+ #include <stdlib.h>
+ #include <fcntl.h>
+@@ -16,8 +19,6 @@
+ 
+ #define MD_NEW_SIZE_SECTORS(x)		((x & ~(MD_RESERVED_SECTORS - 1)) - MD_RESERVED_SECTORS)
+ 
+-extern long long lseek64(int, long long, int);
+-
+ int main(int argc, char *argv[])
+ {
+ 	int fd, i;
+@@ -38,8 +39,8 @@ int main(int argc, char *argv[])
+ 		exit(1);
+ 	}
+ 	offset = MD_NEW_SIZE_SECTORS(size) * 512LL;
+-	if (lseek64(fd, offset, 0) < 0LL) {
+-		perror("lseek64");
++	if (lseek(fd, offset, 0) < 0LL) {
++		perror("lseek");
+ 		exit(1);
+ 	}
+ 	if (read(fd, super, 4096) != 4096) {
+@@ -68,8 +69,8 @@ int main(int argc, char *argv[])
+ 		super[32*4+10*4 +i] = t;
+ 	}
+ 
+-	if (lseek64(fd, offset, 0) < 0LL) {
+-		perror("lseek64");
++	if (lseek(fd, offset, 0) < 0LL) {
++		perror("lseek");
+ 		exit(1);
+ 	}
+ 	if (write(fd, super, 4096) != 4096) {
diff --git a/poky/meta/recipes-extended/mdadm/mdadm_4.2.bb b/poky/meta/recipes-extended/mdadm/mdadm_4.2.bb
index 19035ca..7298860 100644
--- a/poky/meta/recipes-extended/mdadm/mdadm_4.2.bb
+++ b/poky/meta/recipes-extended/mdadm/mdadm_4.2.bb
@@ -24,6 +24,7 @@
            file://0001-mdadm-skip-test-11spare-migration.patch \
            file://0001-Fix-parsing-of-r-in-monitor-manager-mode.patch \
            file://0001-Makefile-install-mdcheck.patch \
+           file://0001-restripe.c-Use-_FILE_OFFSET_BITS-to-enable-largefile.patch \
            "
 
 SRC_URI[sha256sum] = "461c215670864bb74a4d1a3620684aa2b2f8296dffa06743f26dda5557acf01d"
diff --git a/poky/meta/recipes-extended/newt/files/0001-detect-gold-as-GNU-linker-too.patch b/poky/meta/recipes-extended/newt/files/0001-detect-gold-as-GNU-linker-too.patch
index a4b3afd..090ed5c 100644
--- a/poky/meta/recipes-extended/newt/files/0001-detect-gold-as-GNU-linker-too.patch
+++ b/poky/meta/recipes-extended/newt/files/0001-detect-gold-as-GNU-linker-too.patch
@@ -1,4 +1,4 @@
-From 58245b859ffbcb1780575bf1b0a018d55e74e434 Mon Sep 17 00:00:00 2001
+From 08ba909500412611953aea0fa2fe0d8fe76b6e24 Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@googlemail.com>
 Date: Wed, 21 Sep 2016 21:14:40 +0200
 Subject: [PATCH] detect gold as GNU linker too
@@ -9,23 +9,21 @@
 Upstream-Status: Pending
 
 Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
+
 ---
  configure.ac | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/configure.ac b/configure.ac
-index 03e8bda..c2fce51 100644
+index 468c718..cd93f30 100644
 --- a/configure.ac
 +++ b/configure.ac
 @@ -28,7 +28,7 @@ AC_CHECK_SIZEOF([void *])
  AC_MSG_CHECKING([for GNU ld])
- LD=`$CC -print-prog-name=ld 2>&5`
+ LD=$($CC -print-prog-name=ld 2>&5)
  
--if test `$LD -v 2>&1 | $ac_cv_path_GREP -c "GNU ld"` = 0; then
-+if test `$LD -v 2>&1 | $ac_cv_path_GREP -c "GNU "` = 0; then
+-if test $($LD -v 2>&1 | $ac_cv_path_GREP -c "GNU ld") = 0; then
++if test $($LD -v 2>&1 | $ac_cv_path_GREP -c "GNU ") = 0; then
    # Not
    GNU_LD=""
    AC_MSG_RESULT([no])
--- 
-2.5.5
-
diff --git a/poky/meta/recipes-extended/newt/files/0002-don-t-ignore-CFLAGS-when-building-snack.patch b/poky/meta/recipes-extended/newt/files/0002-don-t-ignore-CFLAGS-when-building-snack.patch
deleted file mode 100644
index ca235d5..0000000
--- a/poky/meta/recipes-extended/newt/files/0002-don-t-ignore-CFLAGS-when-building-snack.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From f60dc1063607ca1f201ba4cbda467d8af3f78f64 Mon Sep 17 00:00:00 2001
-From: Miroslav Lichvar <mlichvar@redhat.com>
-Date: Tue, 1 Oct 2019 16:37:55 +0200
-Subject: [PATCH] don't ignore CFLAGS when building snack
-
-In addition to the flags returned by python-config --cflags, use the
-user-specified CFLAGS when building the snack object.
-
-Upstream-Status: Backport from master
-Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
----
- Makefile.in | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/Makefile.in b/Makefile.in
-index be5f87b..6facd5e 100644
---- a/Makefile.in
-+++ b/Makefile.in
-@@ -96,8 +96,8 @@ _snack.$(SOEXT):   snack.c $(LIBNEWTSH)
- 		PIFLAGS=`$$pyconfig --includes`; \
- 		PLDFLAGS=`$$pyconfig --ldflags`; \
- 		PLFLAGS=`$$pyconfig --libs`; \
--		echo $(CC) $(SHCFLAGS) $(CPPFLAGS) $$PIFLAGS $$PCFLAGS -c -o $$ver/snack.o snack.c; \
--		$(CC) $(SHCFLAGS) $(CPPFLAGS) $$PIFLAGS $$PCFLAGS -c -o $$ver/snack.o snack.c; \
-+		echo $(CC) $(SHCFLAGS) $(CFLAGS) $(CPPFLAGS) $$PIFLAGS $$PCFLAGS -c -o $$ver/snack.o snack.c; \
-+		$(CC) $(SHCFLAGS) $(CFLAGS) $(CPPFLAGS) $$PIFLAGS $$PCFLAGS -c -o $$ver/snack.o snack.c; \
- 		echo $(CC) --shared $$PLDFLAGS $$PLFLAGS $(LDFLAGS) -o $$ver/_snack.$(SOEXT) $$ver/snack.o -L.  -lnewt $(LIBS); \
- 		$(CC) --shared $$PLDFLAGS $$PLFLAGS $(LDFLAGS) -o $$ver/_snack.$(SOEXT) $$ver/snack.o -L.  -lnewt $(LIBS); \
- 	done || :
diff --git a/poky/meta/recipes-extended/newt/libnewt_0.52.21.bb b/poky/meta/recipes-extended/newt/libnewt_0.52.23.bb
similarity index 87%
rename from poky/meta/recipes-extended/newt/libnewt_0.52.21.bb
rename to poky/meta/recipes-extended/newt/libnewt_0.52.23.bb
index 430e481..cd3731c 100644
--- a/poky/meta/recipes-extended/newt/libnewt_0.52.21.bb
+++ b/poky/meta/recipes-extended/newt/libnewt_0.52.23.bb
@@ -21,11 +21,9 @@
            file://cross_ar.patch \
            file://Makefile.in-Add-tinfo-library-to-the-linking-librari.patch \
            file://0001-detect-gold-as-GNU-linker-too.patch \
-           file://0002-don-t-ignore-CFLAGS-when-building-snack.patch \
            "
 
-SRC_URI[md5sum] = "a0a5fd6b53bb167a65e15996b249ebb5"
-SRC_URI[sha256sum] = "265eb46b55d7eaeb887fca7a1d51fe115658882dfe148164b6c49fccac5abb31"
+SRC_URI[sha256sum] = "caa372907b14ececfe298f0d512a62f41d33b290610244a58aed07bbc5ada12a"
 
 S = "${WORKDIR}/newt-${PV}"
 
diff --git a/poky/meta/recipes-extended/pam/libpam/CVE-2022-28321-0002.patch b/poky/meta/recipes-extended/pam/libpam/CVE-2022-28321-0002.patch
new file mode 100644
index 0000000..e7bf03f
--- /dev/null
+++ b/poky/meta/recipes-extended/pam/libpam/CVE-2022-28321-0002.patch
@@ -0,0 +1,205 @@
+From 23393bef92c1e768eda329813d7af55481c6ca9f Mon Sep 17 00:00:00 2001
+From: Thorsten Kukuk <kukuk@suse.com>
+Date: Thu, 24 Feb 2022 10:37:32 +0100
+Subject: [PATCH 2/2] pam_access: handle hostnames in access.conf
+
+According to the manual page, the following entry is valid but does not
+work:
+-:root:ALL EXCEPT localhost
+
+See https://bugzilla.suse.com/show_bug.cgi?id=1019866
+
+Patched is based on PR#226 from Josef Moellers
+
+Upstream-Status: Backport
+CVE: CVE-2022-28321
+
+Reference to upstream patch:
+[https://github.com/linux-pam/linux-pam/commit/23393bef92c1e768eda329813d7af55481c6ca9f]
+
+Signed-off-by: Stefan Ghinea <stefan.ghinea@windriver.com>
+---
+ modules/pam_access/pam_access.c | 95 ++++++++++++++++++++++++++-------
+ 1 file changed, 76 insertions(+), 19 deletions(-)
+
+diff --git a/modules/pam_access/pam_access.c b/modules/pam_access/pam_access.c
+index 277192b..bca424f 100644
+--- a/modules/pam_access/pam_access.c
++++ b/modules/pam_access/pam_access.c
+@@ -637,7 +637,7 @@ remote_match (pam_handle_t *pamh, char *tok, struct login_info *item)
+       if ((str_len = strlen(string)) > tok_len
+ 	  && strcasecmp(tok, string + str_len - tok_len) == 0)
+ 	return YES;
+-    } else if (tok[tok_len - 1] == '.') {
++    } else if (tok[tok_len - 1] == '.') {       /* internet network numbers (end with ".") */
+       struct addrinfo hint;
+ 
+       memset (&hint, '\0', sizeof (hint));
+@@ -678,7 +678,7 @@ remote_match (pam_handle_t *pamh, char *tok, struct login_info *item)
+       return NO;
+     }
+ 
+-    /* Assume network/netmask with an IP of a host.  */
++    /* Assume network/netmask, IP address or hostname.  */
+     return network_netmask_match(pamh, tok, string, item);
+ }
+ 
+@@ -696,7 +696,7 @@ string_match (pam_handle_t *pamh, const char *tok, const char *string,
+     /*
+      * If the token has the magic value "ALL" the match always succeeds.
+      * Otherwise, return YES if the token fully matches the string.
+-	 * "NONE" token matches NULL string.
++     * "NONE" token matches NULL string.
+      */
+ 
+     if (strcasecmp(tok, "ALL") == 0) {		/* all: always matches */
+@@ -714,7 +714,8 @@ string_match (pam_handle_t *pamh, const char *tok, const char *string,
+ 
+ /* network_netmask_match - match a string against one token
+  * where string is a hostname or ip (v4,v6) address and tok
+- * represents either a single ip (v4,v6) address or a network/netmask
++ * represents either a hostname, a single ip (v4,v6) address
++ * or a network/netmask
+  */
+ static int
+ network_netmask_match (pam_handle_t *pamh,
+@@ -723,10 +724,12 @@ network_netmask_match (pam_handle_t *pamh,
+     char *netmask_ptr;
+     char netmask_string[MAXHOSTNAMELEN + 1];
+     int addr_type;
++    struct addrinfo *ai = NULL;
+ 
+     if (item->debug)
+-    pam_syslog (pamh, LOG_DEBUG,
++      pam_syslog (pamh, LOG_DEBUG,
+ 		"network_netmask_match: tok=%s, item=%s", tok, string);
++
+     /* OK, check if tok is of type addr/mask */
+     if ((netmask_ptr = strchr(tok, '/')) != NULL)
+       {
+@@ -760,54 +763,108 @@ network_netmask_match (pam_handle_t *pamh,
+ 	    netmask_ptr = number_to_netmask(netmask, addr_type,
+ 		netmask_string, MAXHOSTNAMELEN);
+ 	  }
+-	}
++
++        /*
++         * Construct an addrinfo list from the IP address.
++         * This should not fail as the input is a correct IP address...
++         */
++	if (getaddrinfo (tok, NULL, NULL, &ai) != 0)
++	  {
++	    return NO;
++	  }
++      }
+     else
+-	/* NO, then check if it is only an addr */
+-	if (isipaddr(tok, NULL, NULL) != YES)
++      {
++        /*
++	 * It is either an IP address or a hostname.
++	 * Let getaddrinfo sort everything out
++	 */
++	if (getaddrinfo (tok, NULL, NULL, &ai) != 0)
+ 	  {
++	    pam_syslog(pamh, LOG_ERR, "cannot resolve hostname \"%s\"", tok);
++
+ 	    return NO;
+ 	  }
++	netmask_ptr = NULL;
++      }
+ 
+     if (isipaddr(string, NULL, NULL) != YES)
+       {
+-	/* Assume network/netmask with a name of a host.  */
+ 	struct addrinfo hint;
+ 
++	/* Assume network/netmask with a name of a host.  */
+ 	memset (&hint, '\0', sizeof (hint));
+ 	hint.ai_flags = AI_CANONNAME;
+ 	hint.ai_family = AF_UNSPEC;
+ 
+ 	if (item->gai_rv != 0)
++	  {
++	    freeaddrinfo(ai);
+ 	    return NO;
++	  }
+ 	else if (!item->res &&
+ 		(item->gai_rv = getaddrinfo (string, NULL, &hint, &item->res)) != 0)
++	  {
++	    freeaddrinfo(ai);
+ 	    return NO;
++	  }
+         else
+ 	  {
+ 	    struct addrinfo *runp = item->res;
++	    struct addrinfo *runp1;
+ 
+ 	    while (runp != NULL)
+ 	      {
+ 		char buf[INET6_ADDRSTRLEN];
+ 
+-		DIAG_PUSH_IGNORE_CAST_ALIGN;
+-		inet_ntop (runp->ai_family,
+-			runp->ai_family == AF_INET
+-			? (void *) &((struct sockaddr_in *) runp->ai_addr)->sin_addr
+-			: (void *) &((struct sockaddr_in6 *) runp->ai_addr)->sin6_addr,
+-			buf, sizeof (buf));
+-		DIAG_POP_IGNORE_CAST_ALIGN;
++		if (getnameinfo (runp->ai_addr, runp->ai_addrlen, buf, sizeof (buf), NULL, 0, NI_NUMERICHOST) != 0)
++		  {
++		    freeaddrinfo(ai);
++		    return NO;
++		  }
+ 
+-		if (are_addresses_equal(buf, tok, netmask_ptr))
++		for (runp1 = ai; runp1 != NULL; runp1 = runp1->ai_next)
+ 		  {
+-		    return YES;
++                    char buf1[INET6_ADDRSTRLEN];
++
++                    if (runp->ai_family != runp1->ai_family)
++                      continue;
++
++                    if (getnameinfo (runp1->ai_addr, runp1->ai_addrlen, buf1, sizeof (buf1), NULL, 0, NI_NUMERICHOST) != 0)
++		      {
++			freeaddrinfo(ai);
++			return NO;
++		      }
++
++                    if (are_addresses_equal (buf, buf1, netmask_ptr))
++                      {
++                        freeaddrinfo(ai);
++                        return YES;
++                      }
+ 		  }
+ 		runp = runp->ai_next;
+ 	      }
+ 	  }
+       }
+     else
+-      return (are_addresses_equal(string, tok, netmask_ptr));
++      {
++       struct addrinfo *runp1;
++
++       for (runp1 = ai; runp1 != NULL; runp1 = runp1->ai_next)
++         {
++           char buf1[INET6_ADDRSTRLEN];
++
++           (void) getnameinfo (runp1->ai_addr, runp1->ai_addrlen, buf1, sizeof (buf1), NULL, 0, NI_NUMERICHOST);
++
++           if (are_addresses_equal(string, buf1, netmask_ptr))
++             {
++               freeaddrinfo(ai);
++               return YES;
++             }
++         }
++      }
++
++  freeaddrinfo(ai);
+ 
+   return NO;
+ }
+-- 
+2.37.3
+
diff --git a/poky/meta/recipes-extended/psmisc/psmisc.inc b/poky/meta/recipes-extended/psmisc/psmisc.inc
index 12539da..a429c2e 100644
--- a/poky/meta/recipes-extended/psmisc/psmisc.inc
+++ b/poky/meta/recipes-extended/psmisc/psmisc.inc
@@ -26,6 +26,7 @@
 
 PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'ipv6', d)}"
 PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6,"
+PACKAGECONFIG[selinux] = "--enable-selinux,--disable-selinux,libselinux"
 
 ALLOW_EMPTY:${PN} = "1"
 
diff --git a/poky/meta/recipes-extended/psmisc/psmisc_23.5.bb b/poky/meta/recipes-extended/psmisc/psmisc_23.6.bb
similarity index 84%
rename from poky/meta/recipes-extended/psmisc/psmisc_23.5.bb
rename to poky/meta/recipes-extended/psmisc/psmisc_23.6.bb
index 1c390f3..2e55ad0 100644
--- a/poky/meta/recipes-extended/psmisc/psmisc_23.5.bb
+++ b/poky/meta/recipes-extended/psmisc/psmisc_23.6.bb
@@ -5,5 +5,5 @@
 SRC_URI = "git://gitlab.com/psmisc/psmisc.git;protocol=https;branch=master \
            file://0001-Use-UINTPTR_MAX-instead-of-__WORDSIZE.patch \
            "
-SRCREV = "17353f3fddef6b360bc47f7834f2cd011bea2b87"
+SRCREV = "3098e641dc1ddb210186f53464255670b480377b"
 S = "${WORKDIR}/git"
diff --git a/poky/meta/recipes-extended/quota/quota/0001-quota-Use-realloc-3-instead-of-reallocarray-3.patch b/poky/meta/recipes-extended/quota/quota/0001-quota-Use-realloc-3-instead-of-reallocarray-3.patch
deleted file mode 100644
index 34ded2d..0000000
--- a/poky/meta/recipes-extended/quota/quota/0001-quota-Use-realloc-3-instead-of-reallocarray-3.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 02b222a335527f1031cc9495d8c5ebc1bc5b1d4e Mon Sep 17 00:00:00 2001
-From: Fabrice Fontaine <fontaine.fabrice@gmail.com>
-Date: Wed, 11 Nov 2020 15:00:47 +0100
-Subject: [PATCH] quota: Use realloc(3) instead of reallocarray(3)
-
-reallocarray(3) has been added to glibc relatively recently (version
-2.26, from 2017) and apparently not all users run new enough glibc. Just
-use realloc(3) for now since in this case there's no real risk of
-overflow.
-
-Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
-Signed-off-by: Jan Kara <jack@suse.cz>
-Upstream-Status: Backport
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- quota.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/quota.c b/quota.c
-index a6ed61f..a60de12 100644
---- a/quota.c
-+++ b/quota.c
-@@ -385,7 +385,7 @@ int main(int argc, char **argv)
- 			  break;
- 		  case 259:
- 			  fscount++;
--			  fsnames = reallocarray(fsnames, fscount, sizeof(char *));
-+			  fsnames = realloc(fsnames, fscount * sizeof(char *));
- 			  if (!fsnames)
- 				die(1, _("Not enough memory for filesystem names"));
- 			  fsnames[fscount - 1] = optarg;
--- 
-2.17.1
-
diff --git a/poky/meta/recipes-extended/quota/quota/fcntl.patch b/poky/meta/recipes-extended/quota/quota/fcntl.patch
index 51a770c..09a0c68 100644
--- a/poky/meta/recipes-extended/quota/quota/fcntl.patch
+++ b/poky/meta/recipes-extended/quota/quota/fcntl.patch
@@ -1,3 +1,8 @@
+From 00a456145531d194d3993c9f4cd404d5ca16c9df Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Mon, 6 Apr 2015 17:36:44 +0000
+Subject: [PATCH] quota: Fix build with musl
+
 Include fcntl.h to pacify compiler errors on musl
 like
 
@@ -9,20 +14,14 @@
 
 Signed-off-by: Khem Raj <raj.khem@gmail.com>
 
-diff --git a/quota.h b/quota.h
-index 4c21411..d20c217 100644
---- a/quota.h
-+++ b/quota.h
-@@ -182,6 +182,6 @@ enum {
- 	#endif
- #endif
- 
--long quotactl __P((int, const char *, qid_t, caddr_t));
-+long quotactl (int, const char *, qid_t, caddr_t);
- 
- #endif /* _QUOTA_ */
+---
+ quotacheck.c    | 1 +
+ quotaio.c       | 1 +
+ rquota_client.c | 4 ++++
+ 3 files changed, 6 insertions(+)
+
 diff --git a/quotacheck.c b/quotacheck.c
-index 2cdf475..07c18a7 100644
+index bd62d9a..772a27d 100644
 --- a/quotacheck.c
 +++ b/quotacheck.c
 @@ -19,6 +19,7 @@
@@ -46,7 +45,7 @@
  #include <sys/stat.h>
  #include <sys/file.h>
 diff --git a/rquota_client.c b/rquota_client.c
-index a3a4ae3..0ffe7a9 100644
+index 7f8e821..d48505a 100644
 --- a/rquota_client.c
 +++ b/rquota_client.c
 @@ -19,7 +19,9 @@
diff --git a/poky/meta/recipes-extended/quota/quota_4.06.bb b/poky/meta/recipes-extended/quota/quota_4.09.bb
similarity index 89%
rename from poky/meta/recipes-extended/quota/quota_4.06.bb
rename to poky/meta/recipes-extended/quota/quota_4.09.bb
index 0535d14..b779657 100644
--- a/poky/meta/recipes-extended/quota/quota_4.06.bb
+++ b/poky/meta/recipes-extended/quota/quota_4.09.bb
@@ -9,9 +9,8 @@
 
 SRC_URI = "${SOURCEFORGE_MIRROR}/project/linuxquota/quota-tools/${PV}/quota-${PV}.tar.gz \
            file://fcntl.patch \
-           file://0001-quota-Use-realloc-3-instead-of-reallocarray-3.patch \
-          "
-SRC_URI[sha256sum] = "2f3e03039f378d4f0d97acdb49daf581dcaad64d2e1ddf129495fd579fbd268d"
+           "
+SRC_URI[sha256sum] = "9cdaca154bc92afc3117f0e5f5b3208dd5f84583af1cf061c39baa0a2bb142f9"
 
 CVE_PRODUCT = "linux_diskquota"
 
diff --git a/poky/meta/recipes-extended/rpcsvc-proto/rpcsvc-proto.bb b/poky/meta/recipes-extended/rpcsvc-proto/rpcsvc-proto.bb
index dd7bd2b..00919a3 100644
--- a/poky/meta/recipes-extended/rpcsvc-proto/rpcsvc-proto.bb
+++ b/poky/meta/recipes-extended/rpcsvc-proto/rpcsvc-proto.bb
@@ -21,7 +21,8 @@
 
 SRC_URI = "git://github.com/thkukuk/${BPN};branch=master;protocol=https \
            file://0001-Use-cross-compiled-rpcgen.patch \
-          "
+           file://0001-Use-AC_SYS_LARGEFILE-macro-to-control-largefile-supp.patch \
+           "
 
 S = "${WORKDIR}/git"
 
diff --git a/poky/meta/recipes-extended/rpcsvc-proto/rpcsvc-proto/0001-Use-AC_SYS_LARGEFILE-macro-to-control-largefile-supp.patch b/poky/meta/recipes-extended/rpcsvc-proto/rpcsvc-proto/0001-Use-AC_SYS_LARGEFILE-macro-to-control-largefile-supp.patch
new file mode 100644
index 0000000..f07866d
--- /dev/null
+++ b/poky/meta/recipes-extended/rpcsvc-proto/rpcsvc-proto/0001-Use-AC_SYS_LARGEFILE-macro-to-control-largefile-supp.patch
@@ -0,0 +1,80 @@
+From 6820c53c3952f78185beb59f767c372fc745dcf3 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sun, 11 Dec 2022 21:42:59 -0800
+Subject: [PATCH] Use AC_SYS_LARGEFILE macro to control largefile support
+
+The autoconf macro AC_SYS_LARGEFILE defines _FILE_OFFSET_BITS=64
+where necessary to ensure that off_t and all interfaces using off_t
+are 64bit, even on 32bit systems.
+
+replace stat64 by equivalent stat struct/func
+
+Upstream-Status: Accepted [https://github.com/thkukuk/rpcsvc-proto/pull/15]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ configure.ac      |  1 +
+ rpcgen/rpc_main.c | 16 +++++-----------
+ 2 files changed, 6 insertions(+), 11 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index bacc2fb..a9fc730 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -8,6 +8,7 @@ AC_PREFIX_DEFAULT(/usr)
+ AC_SUBST(PACKAGE)
+ AC_SUBST(VERSION)
+ 
++AC_SYS_LARGEFILE
+ AC_PROG_CC
+ AC_GNU_SOURCE
+ AM_PROG_CC_C_O
+diff --git a/rpcgen/rpc_main.c b/rpcgen/rpc_main.c
+index 277adc6..fd7dea9 100644
+--- a/rpcgen/rpc_main.c
++++ b/rpcgen/rpc_main.c
+@@ -62,12 +62,6 @@
+ #define EXTEND	1		/* alias for TRUE */
+ #define DONT_EXTEND	0	/* alias for FALSE */
+ 
+-#ifdef __APPLE__
+-# if __DARWIN_ONLY_64_BIT_INO_T
+-#  define stat64 stat
+-# endif
+-#endif
+-
+ struct commandline
+   {
+     int cflag;			/* xdr C routines */
+@@ -337,9 +331,9 @@ clear_args (void)
+ static void
+ find_cpp (void)
+ {
+-  struct stat64 buf;
++  struct stat buf;
+ 
+-  if (stat64 (CPP, &buf) == 0)
++  if (stat (CPP, &buf) == 0)
+     return;
+ 
+   if (cppDefined) /* user specified cpp but it does not exist */
+@@ -1125,17 +1119,17 @@ putarg (int whereto, const char *cp)
+ static void
+ checkfiles (const char *infile, const char *outfile)
+ {
+-  struct stat64 buf;
++  struct stat buf;
+ 
+   if (infile)			/* infile ! = NULL */
+-    if (stat64 (infile, &buf) < 0)
++    if (stat (infile, &buf) < 0)
+       {
+ 	perror (infile);
+ 	crash ();
+       }
+   if (outfile)
+     {
+-      if (stat64 (outfile, &buf) < 0)
++      if (stat (outfile, &buf) < 0)
+ 	return;			/* file does not exist */
+       else
+ 	{
diff --git a/poky/meta/recipes-extended/shadow/files/0001-Disable-use-of-syslog-for-sysroot.patch b/poky/meta/recipes-extended/shadow/files/0001-Disable-use-of-syslog-for-sysroot.patch
index 628db42..fa1532c 100644
--- a/poky/meta/recipes-extended/shadow/files/0001-Disable-use-of-syslog-for-sysroot.patch
+++ b/poky/meta/recipes-extended/shadow/files/0001-Disable-use-of-syslog-for-sysroot.patch
@@ -1,4 +1,4 @@
-From 8b845fff891798a03bdf21354b52e4487c2c0200 Mon Sep 17 00:00:00 2001
+From 85d0444229ee3d14fefcf10d093f49c862826f82 Mon Sep 17 00:00:00 2001
 From: Richard Purdie <richard.purdie@linuxfoundation.org>
 Date: Thu, 14 Apr 2022 23:11:53 +0000
 Subject: [PATCH] Disable use of syslog for shadow-native tools
@@ -17,10 +17,10 @@
  2 files changed, 3 insertions(+), 2 deletions(-)
 
 diff --git a/configure.ac b/configure.ac
-index 5dcae19..b2c58f5 100644
+index 924254a..603af81 100644
 --- a/configure.ac
 +++ b/configure.ac
-@@ -204,7 +204,7 @@ AC_DEFINE_UNQUOTED(PASSWD_PROGRAM, "$shadow_cv_passwd_dir/passwd",
+@@ -191,7 +191,7 @@ AC_DEFINE_UNQUOTED(PASSWD_PROGRAM, "$shadow_cv_passwd_dir/passwd",
  	[Path to passwd program.])
  
  dnl XXX - quick hack, should disappear before anyone notices :).
diff --git a/poky/meta/recipes-extended/shadow/files/0001-Drop-nsswitch.conf-message-when-not-in-place-eg.-musl.patch b/poky/meta/recipes-extended/shadow/files/0001-Drop-nsswitch.conf-message-when-not-in-place-eg.-musl.patch
deleted file mode 100644
index 21c9a14..0000000
--- a/poky/meta/recipes-extended/shadow/files/0001-Drop-nsswitch.conf-message-when-not-in-place-eg.-musl.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From 11290e897a49adddee215833944a518443d9b0d6 Mon Sep 17 00:00:00 2001
-From: Andrei Gherzan <andrei.gherzan@huawei.com>
-Date: Wed, 24 Aug 2022 00:54:47 +0200
-Subject: [PATCH] Drop nsswitch.conf message when not in place - eg. musl
-
-Upstream-Status: Inappropriate [issue reported at https://github.com/shadow-maint/shadow/issues/557]
-Signed-off-by: Andrei Gherzan <andrei.gherzan@huawei.com>
----
- lib/nss.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/lib/nss.c b/lib/nss.c
-index 06fa48e..44245da 100644
---- a/lib/nss.c
-+++ b/lib/nss.c
-@@ -59,7 +59,7 @@ void nss_init(const char *nsswitch_path) {
- 	//   subid:	files
- 	nssfp = fopen(nsswitch_path, "r");
- 	if (!nssfp) {
--		fprintf(shadow_logfd, "Failed opening %s: %m\n", nsswitch_path);
-+		//fprintf(shadow_logfd, "Failed opening %s: %m\n", nsswitch_path);
- 		atomic_store(&nss_init_completed, true);
- 		return;
- 	}
--- 
-2.25.1
-
diff --git a/poky/meta/recipes-extended/shadow/files/0001-shadow-use-relaxed-usernames.patch b/poky/meta/recipes-extended/shadow/files/0001-shadow-use-relaxed-usernames.patch
deleted file mode 100644
index 6c7abce..0000000
--- a/poky/meta/recipes-extended/shadow/files/0001-shadow-use-relaxed-usernames.patch
+++ /dev/null
@@ -1,104 +0,0 @@
-From b182c52d63bea0f08e1befcec5c3797dd97cdef5 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex@linutronix.de>
-Date: Tue, 16 Aug 2022 13:46:22 +0200
-Subject: [PATCH] shadow: use relaxed usernames
-
-The groupadd from shadow does not allow upper case group names, the
-same is true for the upstream shadow. But distributions like
-Debian/Ubuntu/CentOS has their own way to cope with this problem,
-this patch is picked up from CentOS release 7.0 to relax the usernames
-restrictions to allow the upper case group names, and the relaxation is
-POSIX compliant because POSIX indicate that usernames are composed of
-characters from the portable filename character set [A-Za-z0-9._-].
-
-Upstream-Status: Submitted [https://github.com/shadow-maint/shadow/pull/551]
-
-Signed-off-by: Shan Hai <shan.hai@windriver.com>
-Signed-off-by: Alexander Kanavin <alex@linutronix.de>
----
- libmisc/chkname.c  | 29 ++++++++++++++++++-----------
- man/groupadd.8.xml |  6 ------
- man/useradd.8.xml  |  6 ------
- 3 files changed, 18 insertions(+), 23 deletions(-)
-
-diff --git a/libmisc/chkname.c b/libmisc/chkname.c
-index cb002a14..c0306c5a 100644
---- a/libmisc/chkname.c
-+++ b/libmisc/chkname.c
-@@ -32,21 +32,28 @@ static bool is_valid_name (const char *name)
- 	}
- 
- 	/*
--	 * User/group names must match [a-z_][a-z0-9_-]*[$]
--	 */
--
--	if (('\0' == *name) ||
--	    !((('a' <= *name) && ('z' >= *name)) || ('_' == *name))) {
-+         * User/group names must match gnu e-regex:
-+         *    [a-zA-Z0-9_.][a-zA-Z0-9_.-]{0,30}[a-zA-Z0-9_.$-]?
-+         *
-+         * as a non-POSIX, extension, allow "$" as the last char for
-+         * sake of Samba 3.x "add machine script"
-+         */
-+	if ( ('\0' == *name) ||
-+             !((*name >= 'a' && *name <= 'z') ||
-+               (*name >= 'A' && *name <= 'Z') ||
-+               (*name >= '0' && *name <= '9') ||
-+               (*name == '_') || (*name == '.') 
-+	      )) {
- 		return false;
- 	}
- 
- 	while ('\0' != *++name) {
--		if (!(( ('a' <= *name) && ('z' >= *name) ) ||
--		      ( ('0' <= *name) && ('9' >= *name) ) ||
--		      ('_' == *name) ||
--		      ('-' == *name) ||
--		      ( ('$' == *name) && ('\0' == *(name + 1)) )
--		     )) {
-+                if (!(  (*name >= 'a' && *name <= 'z') ||
-+                        (*name >= 'A' && *name <= 'Z') ||
-+                        (*name >= '0' && *name <= '9') ||
-+                        (*name == '_') || (*name == '.') || (*name == '-') ||
-+                        (*name == '$' && *(name + 1) == '\0') 
-+                     )) {
- 			return false;
- 		}
- 	}
-diff --git a/man/groupadd.8.xml b/man/groupadd.8.xml
-index 26671f92..3eacaa09 100644
---- a/man/groupadd.8.xml
-+++ b/man/groupadd.8.xml
-@@ -63,12 +63,6 @@
-       values from the system. The new group will be entered into the system
-       files as needed.
-     </para>
--     <para>
--       Groupnames must start with a lower case letter or an underscore,
--       followed by lower case letters, digits, underscores, or dashes.
--       They can end with a dollar sign.
--       In regular expression terms: [a-z_][a-z0-9_-]*[$]?
--     </para>
-      <para>
-        Groupnames may only be up to &GROUP_NAME_MAX_LENGTH; characters long.
-      </para>
-diff --git a/man/useradd.8.xml b/man/useradd.8.xml
-index c7f95b47..e056d141 100644
---- a/man/useradd.8.xml
-+++ b/man/useradd.8.xml
-@@ -691,12 +691,6 @@
-       the user account creation request.
-     </para>
- 
--    <para>
--      Usernames must start with a lower case letter or an underscore,
--      followed by lower case letters, digits, underscores, or dashes.
--      They can end with a dollar sign.
--      In regular expression terms: [a-z_][a-z0-9_-]*[$]?
--    </para>
-     <para>
-       Usernames may only be up to 32 characters long.
-     </para>
--- 
-2.30.2
-
diff --git a/poky/meta/recipes-extended/shadow/files/commonio.c-fix-unexpected-open-failure-in-chroot-env.patch b/poky/meta/recipes-extended/shadow/files/commonio.c-fix-unexpected-open-failure-in-chroot-env.patch
index 173e8a9..85d9175 100644
--- a/poky/meta/recipes-extended/shadow/files/commonio.c-fix-unexpected-open-failure-in-chroot-env.patch
+++ b/poky/meta/recipes-extended/shadow/files/commonio.c-fix-unexpected-open-failure-in-chroot-env.patch
@@ -1,4 +1,4 @@
-From d767f776e631f1493fd7b266f2026d630ecf70fe Mon Sep 17 00:00:00 2001
+From 21583da072aa66901d859ac00ce209bac87ddecc Mon Sep 17 00:00:00 2001
 From: Chen Qi <Qi.Chen@windriver.com>
 Date: Thu, 17 Jul 2014 15:53:34 +0800
 Subject: [PATCH] commonio.c-fix-unexpected-open-failure-in-chroot-env
@@ -21,10 +21,10 @@
  1 file changed, 12 insertions(+), 4 deletions(-)
 
 diff --git a/lib/commonio.c b/lib/commonio.c
-index 9e0fde6..7c3a1da 100644
+index 9a02ce1..61384ec 100644
 --- a/lib/commonio.c
 +++ b/lib/commonio.c
-@@ -624,10 +624,18 @@ int commonio_open (struct commonio_db *db, int mode)
+@@ -616,10 +616,18 @@ int commonio_open (struct commonio_db *db, int mode)
  	db->cursor = NULL;
  	db->changed = false;
  
diff --git a/poky/meta/recipes-extended/shadow/shadow.inc b/poky/meta/recipes-extended/shadow/shadow.inc
index 5656a37..2c70a2d 100644
--- a/poky/meta/recipes-extended/shadow/shadow.inc
+++ b/poky/meta/recipes-extended/shadow/shadow.inc
@@ -12,7 +12,6 @@
 
 GITHUB_BASE_URI = "https://github.com/shadow-maint/shadow/releases"
 SRC_URI = "${GITHUB_BASE_URI}/download/${PV}/${BP}.tar.gz \
-           file://0001-shadow-use-relaxed-usernames.patch \
            ${@bb.utils.contains('PACKAGECONFIG', 'pam', '${PAM_SRC_URI}', '', d)} \
            file://useradd \
            "
@@ -25,12 +24,11 @@
 SRC_URI:append:class-native = " \
            file://0001-Disable-use-of-syslog-for-sysroot.patch \
            file://commonio.c-fix-unexpected-open-failure-in-chroot-env.patch \
-           file://0001-Drop-nsswitch.conf-message-when-not-in-place-eg.-musl.patch \
            "
 SRC_URI:append:class-nativesdk = " \
            file://0001-Disable-use-of-syslog-for-sysroot.patch \
            "
-SRC_URI[sha256sum] = "f525154adc5605e4ebf03d3e7ee8be4d7f3c7cf9df2c2244043406b6eefca2da"
+SRC_URI[sha256sum] = "813057047499c7fe81108adcf0cffa3ad4ec75e19a80151f9cbaa458ff2e86cd"
 
 
 # Additional Policy files for PAM
diff --git a/poky/meta/recipes-extended/shadow/shadow_4.12.3.bb b/poky/meta/recipes-extended/shadow/shadow_4.13.bb
similarity index 100%
rename from poky/meta/recipes-extended/shadow/shadow_4.12.3.bb
rename to poky/meta/recipes-extended/shadow/shadow_4.13.bb
diff --git a/poky/meta/recipes-extended/stress-ng/stress-ng/0001-Pass-LD_GOLD-1-via-makefile-to-enable-gold-linker.patch b/poky/meta/recipes-extended/stress-ng/stress-ng/0001-Pass-LD_GOLD-1-via-makefile-to-enable-gold-linker.patch
new file mode 100644
index 0000000..821e4d9
--- /dev/null
+++ b/poky/meta/recipes-extended/stress-ng/stress-ng/0001-Pass-LD_GOLD-1-via-makefile-to-enable-gold-linker.patch
@@ -0,0 +1,65 @@
+From 32386c13420f676bd938a8b1ceaeab8a5da46d17 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 3 Jan 2023 11:00:09 -0800
+Subject: [PATCH] Pass LD_GOLD=1 via makefile to enable gold linker
+
+Current logic prefers gold if a toolchain has gold linker installed and
+does not offer any option to chose default linker which might not be
+gold linker. Its better to pass this control to user instead of auto
+detecting and deciding.
+
+Upstream-Status: Submitted [https://github.com/ColinIanKing/stress-ng/pull/251]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ Makefile        | 7 +++++++
+ Makefile.config | 9 +--------
+ 2 files changed, 8 insertions(+), 8 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index f2fd4b6c..bff6b8ac 100644
+--- a/Makefile
++++ b/Makefile
+@@ -69,6 +69,13 @@ endif
+ #CFLAGS += -Weverything
+ #endif
+ 
++#
++# Use gold linker
++#
++ifeq ($(LD_GOLD),1)
++LDFLAGS += -fuse-ld=gold
++endif
++
+ GREP = grep
+ #
+ # SunOS requires special grep for -e support
+diff --git a/Makefile.config b/Makefile.config
+index 394ed20d..48c94fa1 100644
+--- a/Makefile.config
++++ b/Makefile.config
+@@ -241,7 +241,7 @@ define check_ld
+ 	$(call check_ld_tmp,$1,$2,$3)
+ endef
+ 
+-all: linkers libraries headers cpufeatures types functions
++all: libraries headers cpufeatures types functions
+ 	@for I in $$(ls $(CONFIGS)); do \
+ 		if [ -s $(CONFIGS)/$$I ]; then \
+ 			echo "#define $$I"; \
+@@ -262,13 +262,6 @@ configdir:
+ clean:
+ 	@rm -rf $(CONFIGS) config config.h
+ 
+-linkers: \
+-	configdir \
+-	LD_GOLD
+-
+-LD_GOLD:
+-	$(call check_ld,test-ld,HAVE_LD_GOLD,gold)
+-
+ libraries: \
+ 	configdir \
+ 	LIB_AIO LIB_APPARMOR LIB_BSD LIB_CRYPT LIB_DL \
+-- 
+2.39.0
+
diff --git a/poky/meta/recipes-extended/stress-ng/stress-ng_0.14.06.bb b/poky/meta/recipes-extended/stress-ng/stress-ng_0.15.01.bb
similarity index 80%
rename from poky/meta/recipes-extended/stress-ng/stress-ng_0.14.06.bb
rename to poky/meta/recipes-extended/stress-ng/stress-ng_0.15.01.bb
index b4068b0..0d95cad 100644
--- a/poky/meta/recipes-extended/stress-ng/stress-ng_0.14.06.bb
+++ b/poky/meta/recipes-extended/stress-ng/stress-ng_0.15.01.bb
@@ -5,11 +5,12 @@
 LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
-SRC_URI = "git://github.com/ColinIanKing/stress-ng.git;protocol=https;branch=master"
-SRCREV = "03493cb69e91c29718ff9f645514355cd99762c6"
+SRC_URI = "git://github.com/ColinIanKing/stress-ng.git;protocol=https;branch=master \
+           file://0001-Pass-LD_GOLD-1-via-makefile-to-enable-gold-linker.patch"
+SRCREV = "8c7c3d95555c50148470553b55477db895a4f1ad"
 S = "${WORKDIR}/git"
 
-DEPENDS = "coreutils-native"
+DEPENDS = "coreutils-native libbsd"
 
 PROVIDES = "stress"
 RPROVIDES:${PN} = "stress"
diff --git a/poky/meta/recipes-extended/sudo/sudo.inc b/poky/meta/recipes-extended/sudo/sudo.inc
index fd5bbf1..498d60d 100644
--- a/poky/meta/recipes-extended/sudo/sudo.inc
+++ b/poky/meta/recipes-extended/sudo/sudo.inc
@@ -23,6 +23,8 @@
 PACKAGECONFIG ??= ""
 PACKAGECONFIG[zlib] = "--enable-zlib,--disable-zlib,zlib"
 PACKAGECONFIG[pam-wheel] = ",,,pam-plugin-wheel"
+PACKAGECONFIG[audit] = "--with-linux-audit,--without-linux-audit,audit"
+PACKAGECONFIG[selinux] = "--with-selinux,--without-selinux,libselinux"
 
 EXTRA_OECONF = "--with-editor=${base_bindir}/vi --with-env-editor"
 
diff --git a/poky/meta/recipes-extended/texinfo/texinfo/0001-gnulib-Update.patch b/poky/meta/recipes-extended/texinfo/texinfo/0001-gnulib-Update.patch
deleted file mode 100644
index 470212c..0000000
--- a/poky/meta/recipes-extended/texinfo/texinfo/0001-gnulib-Update.patch
+++ /dev/null
@@ -1,11765 +0,0 @@
-From 4908050c39dbcdcbd59955ea23d692f25f342307 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Wed, 7 Jul 2021 13:42:35 -0700
-Subject: [PATCH] gnulib: Update
-
-Upstream-Status: Pending
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- gnulib/lib/Makefile.am                       | 782 +++++++++++--------
- gnulib/lib/_Noreturn.h                       |   8 +-
- gnulib/lib/alloca.in.h                       |  20 +-
- gnulib/lib/arg-nonnull.h                     |   8 +-
- gnulib/lib/argz.c                            |  16 +-
- gnulib/lib/argz.in.h                         |  14 +-
- gnulib/lib/asnprintf.c                       |  16 +-
- gnulib/lib/asprintf.c                        |  16 +-
- gnulib/lib/attribute.h                       |  16 +-
- gnulib/lib/basename-lgpl.c                   |  14 +-
- gnulib/lib/basename-lgpl.h                   |  26 +-
- gnulib/lib/btowc.c                           |  14 +-
- gnulib/lib/c++defs.h                         |   8 +-
- gnulib/lib/calloc.c                          |  55 ++
- gnulib/lib/cdefs.h                           |  26 +-
- gnulib/lib/cloexec.c                         |  18 +-
- gnulib/lib/cloexec.h                         |  18 +-
- gnulib/lib/close.c                           |  14 +-
- gnulib/lib/dup2.c                            |  14 +-
- gnulib/lib/dynarray.h                        |  24 +-
- gnulib/lib/errno.in.h                        |  16 +-
- gnulib/lib/error.c                           |  14 +-
- gnulib/lib/error.h                           |  14 +-
- gnulib/lib/exitfail.c                        |  14 +-
- gnulib/lib/exitfail.h                        |  14 +-
- gnulib/lib/fcntl.c                           |  14 +-
- gnulib/lib/fcntl.in.h                        |  14 +-
- gnulib/lib/fd-hook.c                         |  16 +-
- gnulib/lib/fd-hook.h                         |  16 +-
- gnulib/lib/filename.h                        |   8 +-
- gnulib/lib/float+.h                          |  16 +-
- gnulib/lib/float.c                           |  14 +-
- gnulib/lib/float.in.h                        |  14 +-
- gnulib/lib/free.c                            |  53 ++
- gnulib/lib/fstat.c                           |  14 +-
- gnulib/lib/getdtablesize.c                   |  14 +-
- gnulib/lib/getopt-cdefs.in.h                 |  21 +-
- gnulib/lib/getopt-core.h                     |   8 +-
- gnulib/lib/getopt-ext.h                      |   8 +-
- gnulib/lib/getopt-pfx-core.h                 |  21 +-
- gnulib/lib/getopt-pfx-ext.h                  |  21 +-
- gnulib/lib/getopt.c                          |   8 +-
- gnulib/lib/getopt.in.h                       |  24 +-
- gnulib/lib/getopt1.c                         |   8 +-
- gnulib/lib/getopt_int.h                      |   8 +-
- gnulib/lib/getprogname.c                     |  18 +-
- gnulib/lib/getprogname.h                     |   8 +-
- gnulib/lib/gettext.h                         |  16 +-
- gnulib/lib/glthread/lock.c                   |  16 +-
- gnulib/lib/glthread/lock.h                   |  16 +-
- gnulib/lib/glthread/threadlib.c              |  16 +-
- gnulib/lib/hard-locale.c                     |  14 +-
- gnulib/lib/hard-locale.h                     |  14 +-
- gnulib/lib/ialloc.c                          |  21 +
- gnulib/lib/ialloc.h                          |  94 +++
- gnulib/lib/idx.h                             | 114 +++
- gnulib/lib/intprops.h                        |  26 +-
- gnulib/lib/inttypes.in.h                     |  14 +-
- gnulib/lib/iswblank.c                        |  16 +-
- gnulib/lib/iswdigit.c                        |  16 +-
- gnulib/lib/iswxdigit.c                       |  16 +-
- gnulib/lib/itold.c                           |  14 +-
- gnulib/lib/langinfo.in.h                     |  16 +-
- gnulib/lib/lc-charset-dispatch.c             |  14 +-
- gnulib/lib/lc-charset-dispatch.h             |  14 +-
- gnulib/lib/libc-config.h                     |  25 +-
- gnulib/lib/limits.in.h                       |  16 +-
- gnulib/lib/localcharset.c                    |  16 +-
- gnulib/lib/localcharset.h                    |  16 +-
- gnulib/lib/locale.in.h                       |  14 +-
- gnulib/lib/localeconv.c                      |  14 +-
- gnulib/lib/malloc.c                          |  51 +-
- gnulib/lib/malloc/dynarray-skeleton.c        |   8 +-
- gnulib/lib/malloc/dynarray.h                 |   8 +-
- gnulib/lib/malloc/dynarray_at_failure.c      |   8 +-
- gnulib/lib/malloc/dynarray_emplace_enlarge.c |   8 +-
- gnulib/lib/malloc/dynarray_finalize.c        |   8 +-
- gnulib/lib/malloc/dynarray_resize.c          |   8 +-
- gnulib/lib/malloc/dynarray_resize_clear.c    |   8 +-
- gnulib/lib/malloca.c                         |  24 +-
- gnulib/lib/malloca.h                         |  21 +-
- gnulib/lib/mbchar.c                          |  14 +-
- gnulib/lib/mbchar.h                          |  14 +-
- gnulib/lib/mbiter.c                          |  18 +
- gnulib/lib/mbiter.h                          |  14 +-
- gnulib/lib/mbrtowc-impl-utf8.h               |  16 +-
- gnulib/lib/mbrtowc-impl.h                    |  14 +-
- gnulib/lib/mbrtowc.c                         |  14 +-
- gnulib/lib/mbscasecmp.c                      |  14 +-
- gnulib/lib/mbschr.c                          |  14 +-
- gnulib/lib/mbsinit.c                         |  14 +-
- gnulib/lib/mbslen.c                          |  14 +-
- gnulib/lib/mbsncasecmp.c                     |  14 +-
- gnulib/lib/mbsstr.c                          |  14 +-
- gnulib/lib/mbtowc-impl.h                     |  14 +-
- gnulib/lib/mbtowc-lock.c                     |  14 +-
- gnulib/lib/mbtowc-lock.h                     |  14 +-
- gnulib/lib/mbtowc.c                          |  14 +-
- gnulib/lib/mbuiter.c                         |  17 +
- gnulib/lib/mbuiter.h                         |  14 +-
- gnulib/lib/memchr.c                          |  24 +-
- gnulib/lib/memchr.valgrind                   |  14 +-
- gnulib/lib/mempcpy.c                         |  16 +-
- gnulib/lib/memrchr.c                         |  14 +-
- gnulib/lib/minmax.h                          |  60 ++
- gnulib/lib/msvc-inval.c                      |  16 +-
- gnulib/lib/msvc-inval.h                      |  16 +-
- gnulib/lib/msvc-nothrow.c                    |  16 +-
- gnulib/lib/msvc-nothrow.h                    |  16 +-
- gnulib/lib/nl_langinfo-lock.c                |  14 +-
- gnulib/lib/nl_langinfo.c                     |  14 +-
- gnulib/lib/open.c                            |  14 +-
- gnulib/lib/pathmax.h                         |  16 +-
- gnulib/lib/printf-args.c                     |  16 +-
- gnulib/lib/printf-args.h                     |  16 +-
- gnulib/lib/printf-parse.c                    |  27 +-
- gnulib/lib/printf-parse.h                    |  16 +-
- gnulib/lib/realloc.c                         |  63 ++
- gnulib/lib/reallocarray.c                    |  39 +
- gnulib/lib/regcomp.c                         |   8 +-
- gnulib/lib/regex.c                           |   8 +-
- gnulib/lib/regex.h                           |   8 +-
- gnulib/lib/regex_internal.c                  |   8 +-
- gnulib/lib/regex_internal.h                  |   8 +-
- gnulib/lib/regexec.c                         |  20 +-
- gnulib/lib/setlocale-lock.c                  |  14 +-
- gnulib/lib/setlocale_null.c                  |  14 +-
- gnulib/lib/setlocale_null.h                  |  14 +-
- gnulib/lib/size_max.h                        |  16 +-
- gnulib/lib/stat-time.c                       |  18 +
- gnulib/lib/stat-time.h                       |  14 +-
- gnulib/lib/stat-w32.c                        |  14 +-
- gnulib/lib/stat-w32.h                        |  14 +-
- gnulib/lib/stat.c                            |  14 +-
- gnulib/lib/stdarg.in.h                       |  16 +-
- gnulib/lib/stdbool.in.h                      |  16 +-
- gnulib/lib/stddef.in.h                       |  16 +-
- gnulib/lib/stdint.in.h                       |  20 +-
- gnulib/lib/stdio.in.h                        |  24 +-
- gnulib/lib/stdlib.in.h                       | 146 +++-
- gnulib/lib/stpcpy.c                          |  14 +-
- gnulib/lib/str-kmp.h                         |  26 +-
- gnulib/lib/str-two-way.h                     |  16 +-
- gnulib/lib/strcasecmp.c                      |  16 +-
- gnulib/lib/strcasestr.c                      |  16 +-
- gnulib/lib/strdup.c                          |  16 +-
- gnulib/lib/streq.h                           |  16 +-
- gnulib/lib/strerror-override.c               | 100 +--
- gnulib/lib/strerror-override.h               |  15 +-
- gnulib/lib/strerror.c                        |  14 +-
- gnulib/lib/string.in.h                       |  18 +-
- gnulib/lib/strings.in.h                      |  16 +-
- gnulib/lib/strncasecmp.c                     |  16 +-
- gnulib/lib/strndup.c                         |  16 +-
- gnulib/lib/strnlen.c                         |  16 +-
- gnulib/lib/strnlen1.c                        |  14 +-
- gnulib/lib/strnlen1.h                        |  14 +-
- gnulib/lib/strstr.c                          |  16 +-
- gnulib/lib/sys_stat.in.h                     |  16 +-
- gnulib/lib/sys_types.in.h                    |  16 +-
- gnulib/lib/time.in.h                         |  58 +-
- gnulib/lib/unistd.c                          |  18 +
- gnulib/lib/unistd.in.h                       |  29 +-
- gnulib/lib/unitypes.in.h                     |  16 +-
- gnulib/lib/uniwidth.in.h                     |  16 +-
- gnulib/lib/uniwidth/cjk.h                    |  16 +-
- gnulib/lib/uniwidth/width.c                  |  16 +-
- gnulib/lib/vasnprintf.c                      |  71 +-
- gnulib/lib/vasnprintf.h                      |  16 +-
- gnulib/lib/vasprintf.c                       |  16 +-
- gnulib/lib/verify.h                          |  14 +-
- gnulib/lib/warn-on-use.h                     |   8 +-
- gnulib/lib/wchar.in.h                        |  18 +-
- gnulib/lib/wcrtomb.c                         |  14 +-
- gnulib/lib/wctype-h.c                        |  19 +
- gnulib/lib/wctype.in.h                       |  26 +-
- gnulib/lib/wcwidth.c                         |  14 +-
- gnulib/lib/windows-initguard.h               |  16 +-
- gnulib/lib/windows-mutex.c                   |  16 +-
- gnulib/lib/windows-mutex.h                   |  16 +-
- gnulib/lib/windows-once.c                    |  16 +-
- gnulib/lib/windows-once.h                    |  16 +-
- gnulib/lib/windows-recmutex.c                |  16 +-
- gnulib/lib/windows-recmutex.h                |  16 +-
- gnulib/lib/windows-rwlock.c                  |  16 +-
- gnulib/lib/windows-rwlock.h                  |  16 +-
- gnulib/lib/xalloc-oversized.h                |  53 +-
- gnulib/lib/xalloc.h                          | 143 +---
- gnulib/lib/xmalloc.c                         | 293 +++++--
- gnulib/lib/xsize.c                           |  18 +
- gnulib/lib/xsize.h                           |  16 +-
- gnulib/m4/calloc.m4                          |  82 ++
- gnulib/m4/fcntl_h.m4                         |  39 +-
- gnulib/m4/free.m4                            |  52 ++
- gnulib/m4/fstat.m4                           |   4 +-
- gnulib/m4/gnulib-common.m4                   |  84 +-
- gnulib/m4/gnulib-comp.m4                     | 192 ++++-
- gnulib/m4/inttypes.m4                        |  31 +-
- gnulib/m4/iswdigit.m4                        |   6 +-
- gnulib/m4/iswxdigit.m4                       |   4 +-
- gnulib/m4/langinfo_h.m4                      |  25 +-
- gnulib/m4/largefile.m4                       |  28 +-
- gnulib/m4/locale_h.m4                        |  37 +-
- gnulib/m4/malloc.m4                          | 152 +++-
- gnulib/m4/math_h.m4                          | 227 +++---
- gnulib/m4/mbslen.m4                          |   4 +-
- gnulib/m4/memchr.m4                          |   4 +-
- gnulib/m4/mempcpy.m4                         |   4 +-
- gnulib/m4/memrchr.m4                         |   4 +-
- gnulib/m4/minmax.m4                          |  44 ++
- gnulib/m4/printf.m4                          |   5 +-
- gnulib/m4/realloc.m4                         |  63 ++
- gnulib/m4/reallocarray.m4                    |  23 +
- gnulib/m4/stat.m4                            |   4 +-
- gnulib/m4/stddef_h.m4                        |  23 +-
- gnulib/m4/stdint.m4                          |   6 +-
- gnulib/m4/stdio_h.m4                         | 168 ++--
- gnulib/m4/stdlib_h.m4                        | 122 +--
- gnulib/m4/stpcpy.m4                          |   4 +-
- gnulib/m4/strcase.m4                         |   6 +-
- gnulib/m4/strcasestr.m4                      |   4 +-
- gnulib/m4/strdup.m4                          |   6 +-
- gnulib/m4/strerror.m4                        |   4 +-
- gnulib/m4/string_h.m4                        | 124 +--
- gnulib/m4/strings_h.m4                       |  38 +-
- gnulib/m4/strndup.m4                         |   4 +-
- gnulib/m4/strnlen.m4                         |   4 +-
- gnulib/m4/strstr.m4                          |   4 +-
- gnulib/m4/sys_socket_h.m4                    |  53 +-
- gnulib/m4/sys_stat_h.m4                      |  65 +-
- gnulib/m4/sys_types_h.m4                     |  16 +-
- gnulib/m4/time_h.m4                          |  62 +-
- gnulib/m4/unistd_h.m4                        | 194 ++---
- gnulib/m4/visibility.m4                      |   6 +-
- gnulib/m4/wchar_h.m4                         | 109 +--
- gnulib/m4/wctype_h.m4                        |  39 +-
- gnulib/m4/wint_t.m4                          |  10 +-
- gnulib/m4/year2038.m4                        | 112 +++
- 238 files changed, 4521 insertions(+), 2636 deletions(-)
- create mode 100644 gnulib/lib/calloc.c
- create mode 100644 gnulib/lib/free.c
- create mode 100644 gnulib/lib/ialloc.c
- create mode 100644 gnulib/lib/ialloc.h
- create mode 100644 gnulib/lib/idx.h
- create mode 100644 gnulib/lib/minmax.h
- create mode 100644 gnulib/lib/realloc.c
- create mode 100644 gnulib/lib/reallocarray.c
- create mode 100644 gnulib/m4/calloc.m4
- create mode 100644 gnulib/m4/free.m4
- create mode 100644 gnulib/m4/minmax.m4
- create mode 100644 gnulib/m4/realloc.m4
- create mode 100644 gnulib/m4/reallocarray.m4
- create mode 100644 gnulib/m4/year2038.m4
-
---- a/gnulib/lib/Makefile.am
-+++ b/gnulib/lib/Makefile.am
-@@ -165,6 +165,24 @@ EXTRA_libgnu_a_SOURCES += btowc.c
- 
- ## end   gnulib module btowc
- 
-+## begin gnulib module calloc-gnu
-+
-+
-+EXTRA_DIST += calloc.c
-+
-+EXTRA_libgnu_a_SOURCES += calloc.c
-+
-+## end   gnulib module calloc-gnu
-+
-+## begin gnulib module calloc-posix
-+
-+
-+EXTRA_DIST += calloc.c
-+
-+EXTRA_libgnu_a_SOURCES += calloc.c
-+
-+## end   gnulib module calloc-posix
-+
- ## begin gnulib module cloexec
- 
- if gl_GNULIB_ENABLED_cloexec
-@@ -200,6 +218,32 @@ EXTRA_libgnu_a_SOURCES += dup2.c
- ## begin gnulib module dynarray
- 
- if gl_GNULIB_ENABLED_dynarray
-+BUILT_SOURCES += malloc/dynarray.gl.h malloc/dynarray-skeleton.gl.h
-+
-+malloc/dynarray.gl.h: malloc/dynarray.h
-+	$(AM_V_at)$(MKDIR_P) malloc
-+	$(AM_V_GEN)rm -f $@-t $@ && \
-+	{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
-+	  sed -e '/libc_hidden_proto/d' < $(srcdir)/malloc/dynarray.h; \
-+	} > $@-t && \
-+	mv $@-t $@
-+MOSTLYCLEANFILES += malloc/dynarray.gl.h malloc/dynarray.gl.h-t
-+
-+malloc/dynarray-skeleton.gl.h: malloc/dynarray-skeleton.c
-+	$(AM_V_at)$(MKDIR_P) malloc
-+	$(AM_V_GEN)rm -f $@-t $@ && \
-+	{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
-+	  sed -e 's|<malloc/dynarray\.h>|<malloc/dynarray.gl.h>|g' \
-+	      -e 's|__attribute_maybe_unused__|_GL_ATTRIBUTE_MAYBE_UNUSED|g' \
-+	      -e 's|__attribute_nonnull__|_GL_ATTRIBUTE_NONNULL|g' \
-+	      -e 's|__attribute_warn_unused_result__|_GL_ATTRIBUTE_NODISCARD|g' \
-+	      -e 's|__glibc_likely|_GL_LIKELY|g' \
-+	      -e 's|__glibc_unlikely|_GL_UNLIKELY|g' \
-+	      < $(srcdir)/malloc/dynarray-skeleton.c; \
-+	} > $@-t && \
-+	mv $@-t $@
-+MOSTLYCLEANFILES += malloc/dynarray-skeleton.gl.h malloc/dynarray-skeleton.gl.h-t
-+
- libgnu_a_SOURCES += malloc/dynarray_at_failure.c                 malloc/dynarray_emplace_enlarge.c                 malloc/dynarray_finalize.c                 malloc/dynarray_resize.c                 malloc/dynarray_resize_clear.c
- 
- endif
-@@ -285,13 +329,13 @@ fcntl.h: fcntl.in.h $(top_builddir)/conf
- 	      -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
- 	      -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
- 	      -e 's|@''NEXT_FCNTL_H''@|$(NEXT_FCNTL_H)|g' \
--	      -e 's/@''GNULIB_CREAT''@/$(GNULIB_CREAT)/g' \
--	      -e 's/@''GNULIB_FCNTL''@/$(GNULIB_FCNTL)/g' \
--	      -e 's/@''GNULIB_NONBLOCKING''@/$(GNULIB_NONBLOCKING)/g' \
--	      -e 's/@''GNULIB_OPEN''@/$(GNULIB_OPEN)/g' \
--	      -e 's/@''GNULIB_OPENAT''@/$(GNULIB_OPENAT)/g' \
--	      -e 's/@''GNULIB_MDA_CREAT''@/$(GNULIB_MDA_CREAT)/g' \
--	      -e 's/@''GNULIB_MDA_OPEN''@/$(GNULIB_MDA_OPEN)/g' \
-+	      -e 's/@''GNULIB_CREAT''@/$(GL_GNULIB_CREAT)/g' \
-+	      -e 's/@''GNULIB_FCNTL''@/$(GL_GNULIB_FCNTL)/g' \
-+	      -e 's/@''GNULIB_NONBLOCKING''@/$(GL_GNULIB_NONBLOCKING)/g' \
-+	      -e 's/@''GNULIB_OPEN''@/$(GL_GNULIB_OPEN)/g' \
-+	      -e 's/@''GNULIB_OPENAT''@/$(GL_GNULIB_OPENAT)/g' \
-+	      -e 's/@''GNULIB_MDA_CREAT''@/$(GL_GNULIB_MDA_CREAT)/g' \
-+	      -e 's/@''GNULIB_MDA_OPEN''@/$(GL_GNULIB_MDA_OPEN)/g' \
- 	      -e 's|@''HAVE_FCNTL''@|$(HAVE_FCNTL)|g' \
- 	      -e 's|@''HAVE_OPENAT''@|$(HAVE_OPENAT)|g' \
- 	      -e 's|@''REPLACE_CREAT''@|$(REPLACE_CREAT)|g' \
-@@ -358,6 +402,17 @@ EXTRA_libgnu_a_SOURCES += float.c itold.
- 
- ## end   gnulib module float
- 
-+## begin gnulib module free-posix
-+
-+if gl_GNULIB_ENABLED_ef07dc4b3077c11ea9cef586db4e5955
-+
-+endif
-+EXTRA_DIST += free.c
-+
-+EXTRA_libgnu_a_SOURCES += free.c
-+
-+## end   gnulib module free-posix
-+
- ## begin gnulib module fstat
- 
- if gl_GNULIB_ENABLED_fstat
-@@ -445,11 +500,23 @@ EXTRA_DIST += $(top_srcdir)/build-aux/co
- 
- ## end   gnulib module havelib
- 
-+## begin gnulib module ialloc
-+
-+libgnu_a_SOURCES += ialloc.c
-+
-+EXTRA_DIST += ialloc.h
-+
-+## end   gnulib module ialloc
-+
-+## begin gnulib module idx
-+
-+libgnu_a_SOURCES += idx.h
-+
-+## end   gnulib module idx
-+
- ## begin gnulib module intprops
- 
--if gl_GNULIB_ENABLED_intprops
- 
--endif
- EXTRA_DIST += intprops.h
- 
- ## end   gnulib module intprops
-@@ -470,10 +537,10 @@ inttypes.h: inttypes.in.h $(top_builddir
- 	      -e 's|@''NEXT_INTTYPES_H''@|$(NEXT_INTTYPES_H)|g' \
- 	      -e 's/@''APPLE_UNIVERSAL_BUILD''@/$(APPLE_UNIVERSAL_BUILD)/g' \
- 	      -e 's/@''PRIPTR_PREFIX''@/$(PRIPTR_PREFIX)/g' \
--	      -e 's/@''GNULIB_IMAXABS''@/$(GNULIB_IMAXABS)/g' \
--	      -e 's/@''GNULIB_IMAXDIV''@/$(GNULIB_IMAXDIV)/g' \
--	      -e 's/@''GNULIB_STRTOIMAX''@/$(GNULIB_STRTOIMAX)/g' \
--	      -e 's/@''GNULIB_STRTOUMAX''@/$(GNULIB_STRTOUMAX)/g' \
-+	      -e 's/@''GNULIB_IMAXABS''@/$(GL_GNULIB_IMAXABS)/g' \
-+	      -e 's/@''GNULIB_IMAXDIV''@/$(GL_GNULIB_IMAXDIV)/g' \
-+	      -e 's/@''GNULIB_STRTOIMAX''@/$(GL_GNULIB_STRTOIMAX)/g' \
-+	      -e 's/@''GNULIB_STRTOUMAX''@/$(GL_GNULIB_STRTOUMAX)/g' \
- 	      -e 's/@''HAVE_DECL_IMAXABS''@/$(HAVE_DECL_IMAXABS)/g' \
- 	      -e 's/@''HAVE_DECL_IMAXDIV''@/$(HAVE_DECL_IMAXDIV)/g' \
- 	      -e 's/@''HAVE_DECL_STRTOIMAX''@/$(HAVE_DECL_STRTOIMAX)/g' \
-@@ -540,7 +607,7 @@ langinfo.h: langinfo.in.h $(top_builddir
- 	      -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
- 	      -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
- 	      -e 's|@''NEXT_LANGINFO_H''@|$(NEXT_LANGINFO_H)|g' \
--	      -e 's/@''GNULIB_NL_LANGINFO''@/$(GNULIB_NL_LANGINFO)/g' \
-+	      -e 's/@''GNULIB_NL_LANGINFO''@/$(GL_GNULIB_NL_LANGINFO)/g' \
- 	      -e 's|@''HAVE_LANGINFO_CODESET''@|$(HAVE_LANGINFO_CODESET)|g' \
- 	      -e 's|@''HAVE_LANGINFO_T_FMT_AMPM''@|$(HAVE_LANGINFO_T_FMT_AMPM)|g' \
- 	      -e 's|@''HAVE_LANGINFO_ALTMON''@|$(HAVE_LANGINFO_ALTMON)|g' \
-@@ -622,11 +689,11 @@ locale.h: locale.in.h $(top_builddir)/co
- 	      -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
- 	      -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
- 	      -e 's|@''NEXT_LOCALE_H''@|$(NEXT_LOCALE_H)|g' \
--	      -e 's/@''GNULIB_LOCALECONV''@/$(GNULIB_LOCALECONV)/g' \
--	      -e 's/@''GNULIB_SETLOCALE''@/$(GNULIB_SETLOCALE)/g' \
--	      -e 's/@''GNULIB_SETLOCALE_NULL''@/$(GNULIB_SETLOCALE_NULL)/g' \
--	      -e 's/@''GNULIB_DUPLOCALE''@/$(GNULIB_DUPLOCALE)/g' \
--	      -e 's/@''GNULIB_LOCALENAME''@/$(GNULIB_LOCALENAME)/g' \
-+	      -e 's/@''GNULIB_LOCALECONV''@/$(GL_GNULIB_LOCALECONV)/g' \
-+	      -e 's/@''GNULIB_SETLOCALE''@/$(GL_GNULIB_SETLOCALE)/g' \
-+	      -e 's/@''GNULIB_SETLOCALE_NULL''@/$(GL_GNULIB_SETLOCALE_NULL)/g' \
-+	      -e 's/@''GNULIB_DUPLOCALE''@/$(GL_GNULIB_DUPLOCALE)/g' \
-+	      -e 's/@''GNULIB_LOCALENAME''@/$(GL_GNULIB_LOCALENAME)/g' \
- 	      -e 's|@''HAVE_NEWLOCALE''@|$(HAVE_NEWLOCALE)|g' \
- 	      -e 's|@''HAVE_DUPLOCALE''@|$(HAVE_DUPLOCALE)|g' \
- 	      -e 's|@''HAVE_FREELOCALE''@|$(HAVE_FREELOCALE)|g' \
-@@ -670,11 +737,18 @@ libgnu_a_SOURCES += glthread/lock.h glth
- endif
- ## end   gnulib module lock
- 
-+## begin gnulib module malloc-gnu
-+
-+
-+EXTRA_DIST += malloc.c
-+
-+EXTRA_libgnu_a_SOURCES += malloc.c
-+
-+## end   gnulib module malloc-gnu
-+
- ## begin gnulib module malloc-posix
- 
--if gl_GNULIB_ENABLED_ef455225c00f5049c808c2eda3e76866
- 
--endif
- EXTRA_DIST += malloc.c
- 
- EXTRA_libgnu_a_SOURCES += malloc.c
-@@ -805,6 +879,12 @@ EXTRA_libgnu_a_SOURCES += memrchr.c
- 
- ## end   gnulib module memrchr
- 
-+## begin gnulib module minmax
-+
-+libgnu_a_SOURCES += minmax.h
-+
-+## end   gnulib module minmax
-+
- ## begin gnulib module msvc-inval
- 
- if gl_GNULIB_ENABLED_f691f076f650964c9f5598c3ee487616
-@@ -856,6 +936,33 @@ EXTRA_DIST += pathmax.h
- 
- ## end   gnulib module pathmax
- 
-+## begin gnulib module realloc-gnu
-+
-+
-+EXTRA_DIST += realloc.c
-+
-+EXTRA_libgnu_a_SOURCES += realloc.c
-+
-+## end   gnulib module realloc-gnu
-+
-+## begin gnulib module realloc-posix
-+
-+
-+EXTRA_DIST += realloc.c
-+
-+EXTRA_libgnu_a_SOURCES += realloc.c
-+
-+## end   gnulib module realloc-posix
-+
-+## begin gnulib module reallocarray
-+
-+
-+EXTRA_DIST += reallocarray.c
-+
-+EXTRA_libgnu_a_SOURCES += reallocarray.c
-+
-+## end   gnulib module reallocarray
-+
- ## begin gnulib module regex
- 
- 
-@@ -1072,7 +1179,7 @@ stdint.h: stdint.in.h $(top_builddir)/co
- 	      -e 's/@''BITSIZEOF_WINT_T''@/$(BITSIZEOF_WINT_T)/g' \
- 	      -e 's/@''HAVE_SIGNED_WINT_T''@/$(HAVE_SIGNED_WINT_T)/g' \
- 	      -e 's/@''WINT_T_SUFFIX''@/$(WINT_T_SUFFIX)/g' \
--	      -e 's/@''GNULIB_OVERRIDES_WINT_T''@/$(GNULIB_OVERRIDES_WINT_T)/g' \
-+	      -e 's/@''GNULIBHEADERS_OVERRIDE_WINT_T''@/$(GNULIBHEADERS_OVERRIDE_WINT_T)/g' \
- 	      < $(srcdir)/stdint.in.h; \
- 	} > $@-t && \
- 	mv $@-t $@
-@@ -1100,65 +1207,65 @@ stdio.h: stdio.in.h $(top_builddir)/conf
- 	      -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
- 	      -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
- 	      -e 's|@''NEXT_STDIO_H''@|$(NEXT_STDIO_H)|g' \
--	      -e 's/@''GNULIB_DPRINTF''@/$(GNULIB_DPRINTF)/g' \
--	      -e 's/@''GNULIB_FCLOSE''@/$(GNULIB_FCLOSE)/g' \
--	      -e 's/@''GNULIB_FDOPEN''@/$(GNULIB_FDOPEN)/g' \
--	      -e 's/@''GNULIB_FFLUSH''@/$(GNULIB_FFLUSH)/g' \
--	      -e 's/@''GNULIB_FGETC''@/$(GNULIB_FGETC)/g' \
--	      -e 's/@''GNULIB_FGETS''@/$(GNULIB_FGETS)/g' \
--	      -e 's/@''GNULIB_FOPEN''@/$(GNULIB_FOPEN)/g' \
--	      -e 's/@''GNULIB_FPRINTF''@/$(GNULIB_FPRINTF)/g' \
--	      -e 's/@''GNULIB_FPRINTF_POSIX''@/$(GNULIB_FPRINTF_POSIX)/g' \
--	      -e 's/@''GNULIB_FPURGE''@/$(GNULIB_FPURGE)/g' \
--	      -e 's/@''GNULIB_FPUTC''@/$(GNULIB_FPUTC)/g' \
--	      -e 's/@''GNULIB_FPUTS''@/$(GNULIB_FPUTS)/g' \
--	      -e 's/@''GNULIB_FREAD''@/$(GNULIB_FREAD)/g' \
--	      -e 's/@''GNULIB_FREOPEN''@/$(GNULIB_FREOPEN)/g' \
--	      -e 's/@''GNULIB_FSCANF''@/$(GNULIB_FSCANF)/g' \
--	      -e 's/@''GNULIB_FSEEK''@/$(GNULIB_FSEEK)/g' \
--	      -e 's/@''GNULIB_FSEEKO''@/$(GNULIB_FSEEKO)/g' \
--	      -e 's/@''GNULIB_FTELL''@/$(GNULIB_FTELL)/g' \
--	      -e 's/@''GNULIB_FTELLO''@/$(GNULIB_FTELLO)/g' \
--	      -e 's/@''GNULIB_FWRITE''@/$(GNULIB_FWRITE)/g' \
--	      -e 's/@''GNULIB_GETC''@/$(GNULIB_GETC)/g' \
--	      -e 's/@''GNULIB_GETCHAR''@/$(GNULIB_GETCHAR)/g' \
--	      -e 's/@''GNULIB_GETDELIM''@/$(GNULIB_GETDELIM)/g' \
--	      -e 's/@''GNULIB_GETLINE''@/$(GNULIB_GETLINE)/g' \
--	      -e 's/@''GNULIB_OBSTACK_PRINTF''@/$(GNULIB_OBSTACK_PRINTF)/g' \
--	      -e 's/@''GNULIB_OBSTACK_PRINTF_POSIX''@/$(GNULIB_OBSTACK_PRINTF_POSIX)/g' \
--	      -e 's/@''GNULIB_PCLOSE''@/$(GNULIB_PCLOSE)/g' \
--	      -e 's/@''GNULIB_PERROR''@/$(GNULIB_PERROR)/g' \
--	      -e 's/@''GNULIB_POPEN''@/$(GNULIB_POPEN)/g' \
--	      -e 's/@''GNULIB_PRINTF''@/$(GNULIB_PRINTF)/g' \
--	      -e 's/@''GNULIB_PRINTF_POSIX''@/$(GNULIB_PRINTF_POSIX)/g' \
--	      -e 's/@''GNULIB_PUTC''@/$(GNULIB_PUTC)/g' \
--	      -e 's/@''GNULIB_PUTCHAR''@/$(GNULIB_PUTCHAR)/g' \
--	      -e 's/@''GNULIB_PUTS''@/$(GNULIB_PUTS)/g' \
--	      -e 's/@''GNULIB_REMOVE''@/$(GNULIB_REMOVE)/g' \
--	      -e 's/@''GNULIB_RENAME''@/$(GNULIB_RENAME)/g' \
--	      -e 's/@''GNULIB_RENAMEAT''@/$(GNULIB_RENAMEAT)/g' \
--	      -e 's/@''GNULIB_SCANF''@/$(GNULIB_SCANF)/g' \
--	      -e 's/@''GNULIB_SNPRINTF''@/$(GNULIB_SNPRINTF)/g' \
--	      -e 's/@''GNULIB_SPRINTF_POSIX''@/$(GNULIB_SPRINTF_POSIX)/g' \
--	      -e 's/@''GNULIB_STDIO_H_NONBLOCKING''@/$(GNULIB_STDIO_H_NONBLOCKING)/g' \
--	      -e 's/@''GNULIB_STDIO_H_SIGPIPE''@/$(GNULIB_STDIO_H_SIGPIPE)/g' \
--	      -e 's/@''GNULIB_TMPFILE''@/$(GNULIB_TMPFILE)/g' \
--	      -e 's/@''GNULIB_VASPRINTF''@/$(GNULIB_VASPRINTF)/g' \
--	      -e 's/@''GNULIB_VDPRINTF''@/$(GNULIB_VDPRINTF)/g' \
--	      -e 's/@''GNULIB_VFPRINTF''@/$(GNULIB_VFPRINTF)/g' \
--	      -e 's/@''GNULIB_VFPRINTF_POSIX''@/$(GNULIB_VFPRINTF_POSIX)/g' \
--	      -e 's/@''GNULIB_VFSCANF''@/$(GNULIB_VFSCANF)/g' \
--	      -e 's/@''GNULIB_VSCANF''@/$(GNULIB_VSCANF)/g' \
--	      -e 's/@''GNULIB_VPRINTF''@/$(GNULIB_VPRINTF)/g' \
--	      -e 's/@''GNULIB_VPRINTF_POSIX''@/$(GNULIB_VPRINTF_POSIX)/g' \
--	      -e 's/@''GNULIB_VSNPRINTF''@/$(GNULIB_VSNPRINTF)/g' \
--	      -e 's/@''GNULIB_VSPRINTF_POSIX''@/$(GNULIB_VSPRINTF_POSIX)/g' \
--	      -e 's/@''GNULIB_MDA_FCLOSEALL''@/$(GNULIB_MDA_FCLOSEALL)/g' \
--	      -e 's/@''GNULIB_MDA_FDOPEN''@/$(GNULIB_MDA_FDOPEN)/g' \
--	      -e 's/@''GNULIB_MDA_FILENO''@/$(GNULIB_MDA_FILENO)/g' \
--	      -e 's/@''GNULIB_MDA_GETW''@/$(GNULIB_MDA_GETW)/g' \
--	      -e 's/@''GNULIB_MDA_PUTW''@/$(GNULIB_MDA_PUTW)/g' \
--	      -e 's/@''GNULIB_MDA_TEMPNAM''@/$(GNULIB_MDA_TEMPNAM)/g' \
-+	      -e 's/@''GNULIB_DPRINTF''@/$(GL_GNULIB_DPRINTF)/g' \
-+	      -e 's/@''GNULIB_FCLOSE''@/$(GL_GNULIB_FCLOSE)/g' \
-+	      -e 's/@''GNULIB_FDOPEN''@/$(GL_GNULIB_FDOPEN)/g' \
-+	      -e 's/@''GNULIB_FFLUSH''@/$(GL_GNULIB_FFLUSH)/g' \
-+	      -e 's/@''GNULIB_FGETC''@/$(GL_GNULIB_FGETC)/g' \
-+	      -e 's/@''GNULIB_FGETS''@/$(GL_GNULIB_FGETS)/g' \
-+	      -e 's/@''GNULIB_FOPEN''@/$(GL_GNULIB_FOPEN)/g' \
-+	      -e 's/@''GNULIB_FPRINTF''@/$(GL_GNULIB_FPRINTF)/g' \
-+	      -e 's/@''GNULIB_FPRINTF_POSIX''@/$(GL_GNULIB_FPRINTF_POSIX)/g' \
-+	      -e 's/@''GNULIB_FPURGE''@/$(GL_GNULIB_FPURGE)/g' \
-+	      -e 's/@''GNULIB_FPUTC''@/$(GL_GNULIB_FPUTC)/g' \
-+	      -e 's/@''GNULIB_FPUTS''@/$(GL_GNULIB_FPUTS)/g' \
-+	      -e 's/@''GNULIB_FREAD''@/$(GL_GNULIB_FREAD)/g' \
-+	      -e 's/@''GNULIB_FREOPEN''@/$(GL_GNULIB_FREOPEN)/g' \
-+	      -e 's/@''GNULIB_FSCANF''@/$(GL_GNULIB_FSCANF)/g' \
-+	      -e 's/@''GNULIB_FSEEK''@/$(GL_GNULIB_FSEEK)/g' \
-+	      -e 's/@''GNULIB_FSEEKO''@/$(GL_GNULIB_FSEEKO)/g' \
-+	      -e 's/@''GNULIB_FTELL''@/$(GL_GNULIB_FTELL)/g' \
-+	      -e 's/@''GNULIB_FTELLO''@/$(GL_GNULIB_FTELLO)/g' \
-+	      -e 's/@''GNULIB_FWRITE''@/$(GL_GNULIB_FWRITE)/g' \
-+	      -e 's/@''GNULIB_GETC''@/$(GL_GNULIB_GETC)/g' \
-+	      -e 's/@''GNULIB_GETCHAR''@/$(GL_GNULIB_GETCHAR)/g' \
-+	      -e 's/@''GNULIB_GETDELIM''@/$(GL_GNULIB_GETDELIM)/g' \
-+	      -e 's/@''GNULIB_GETLINE''@/$(GL_GNULIB_GETLINE)/g' \
-+	      -e 's/@''GNULIB_OBSTACK_PRINTF''@/$(GL_GNULIB_OBSTACK_PRINTF)/g' \
-+	      -e 's/@''GNULIB_OBSTACK_PRINTF_POSIX''@/$(GL_GNULIB_OBSTACK_PRINTF_POSIX)/g' \
-+	      -e 's/@''GNULIB_PCLOSE''@/$(GL_GNULIB_PCLOSE)/g' \
-+	      -e 's/@''GNULIB_PERROR''@/$(GL_GNULIB_PERROR)/g' \
-+	      -e 's/@''GNULIB_POPEN''@/$(GL_GNULIB_POPEN)/g' \
-+	      -e 's/@''GNULIB_PRINTF''@/$(GL_GNULIB_PRINTF)/g' \
-+	      -e 's/@''GNULIB_PRINTF_POSIX''@/$(GL_GNULIB_PRINTF_POSIX)/g' \
-+	      -e 's/@''GNULIB_PUTC''@/$(GL_GNULIB_PUTC)/g' \
-+	      -e 's/@''GNULIB_PUTCHAR''@/$(GL_GNULIB_PUTCHAR)/g' \
-+	      -e 's/@''GNULIB_PUTS''@/$(GL_GNULIB_PUTS)/g' \
-+	      -e 's/@''GNULIB_REMOVE''@/$(GL_GNULIB_REMOVE)/g' \
-+	      -e 's/@''GNULIB_RENAME''@/$(GL_GNULIB_RENAME)/g' \
-+	      -e 's/@''GNULIB_RENAMEAT''@/$(GL_GNULIB_RENAMEAT)/g' \
-+	      -e 's/@''GNULIB_SCANF''@/$(GL_GNULIB_SCANF)/g' \
-+	      -e 's/@''GNULIB_SNPRINTF''@/$(GL_GNULIB_SNPRINTF)/g' \
-+	      -e 's/@''GNULIB_SPRINTF_POSIX''@/$(GL_GNULIB_SPRINTF_POSIX)/g' \
-+	      -e 's/@''GNULIB_STDIO_H_NONBLOCKING''@/$(GL_GNULIB_STDIO_H_NONBLOCKING)/g' \
-+	      -e 's/@''GNULIB_STDIO_H_SIGPIPE''@/$(GL_GNULIB_STDIO_H_SIGPIPE)/g' \
-+	      -e 's/@''GNULIB_TMPFILE''@/$(GL_GNULIB_TMPFILE)/g' \
-+	      -e 's/@''GNULIB_VASPRINTF''@/$(GL_GNULIB_VASPRINTF)/g' \
-+	      -e 's/@''GNULIB_VDPRINTF''@/$(GL_GNULIB_VDPRINTF)/g' \
-+	      -e 's/@''GNULIB_VFPRINTF''@/$(GL_GNULIB_VFPRINTF)/g' \
-+	      -e 's/@''GNULIB_VFPRINTF_POSIX''@/$(GL_GNULIB_VFPRINTF_POSIX)/g' \
-+	      -e 's/@''GNULIB_VFSCANF''@/$(GL_GNULIB_VFSCANF)/g' \
-+	      -e 's/@''GNULIB_VSCANF''@/$(GL_GNULIB_VSCANF)/g' \
-+	      -e 's/@''GNULIB_VPRINTF''@/$(GL_GNULIB_VPRINTF)/g' \
-+	      -e 's/@''GNULIB_VPRINTF_POSIX''@/$(GL_GNULIB_VPRINTF_POSIX)/g' \
-+	      -e 's/@''GNULIB_VSNPRINTF''@/$(GL_GNULIB_VSNPRINTF)/g' \
-+	      -e 's/@''GNULIB_VSPRINTF_POSIX''@/$(GL_GNULIB_VSPRINTF_POSIX)/g' \
-+	      -e 's/@''GNULIB_MDA_FCLOSEALL''@/$(GL_GNULIB_MDA_FCLOSEALL)/g' \
-+	      -e 's/@''GNULIB_MDA_FDOPEN''@/$(GL_GNULIB_MDA_FDOPEN)/g' \
-+	      -e 's/@''GNULIB_MDA_FILENO''@/$(GL_GNULIB_MDA_FILENO)/g' \
-+	      -e 's/@''GNULIB_MDA_GETW''@/$(GL_GNULIB_MDA_GETW)/g' \
-+	      -e 's/@''GNULIB_MDA_PUTW''@/$(GL_GNULIB_MDA_PUTW)/g' \
-+	      -e 's/@''GNULIB_MDA_TEMPNAM''@/$(GL_GNULIB_MDA_TEMPNAM)/g' \
- 	      < $(srcdir)/stdio.in.h | \
- 	  sed -e 's|@''HAVE_DECL_FCLOSEALL''@|$(HAVE_DECL_FCLOSEALL)|g' \
- 	      -e 's|@''HAVE_DECL_FPURGE''@|$(HAVE_DECL_FPURGE)|g' \
-@@ -1236,49 +1343,51 @@ stdlib.h: stdlib.in.h $(top_builddir)/co
- 	      -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
- 	      -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
- 	      -e 's|@''NEXT_STDLIB_H''@|$(NEXT_STDLIB_H)|g' \
--	      -e 's/@''GNULIB__EXIT''@/$(GNULIB__EXIT)/g' \
--	      -e 's/@''GNULIB_ALIGNED_ALLOC''@/$(GNULIB_ALIGNED_ALLOC)/g' \
--	      -e 's/@''GNULIB_ATOLL''@/$(GNULIB_ATOLL)/g' \
--	      -e 's/@''GNULIB_CALLOC_POSIX''@/$(GNULIB_CALLOC_POSIX)/g' \
--	      -e 's/@''GNULIB_CANONICALIZE_FILE_NAME''@/$(GNULIB_CANONICALIZE_FILE_NAME)/g' \
--	      -e 's/@''GNULIB_FREE_POSIX''@/$(GNULIB_FREE_POSIX)/g' \
--	      -e 's/@''GNULIB_GETLOADAVG''@/$(GNULIB_GETLOADAVG)/g' \
--	      -e 's/@''GNULIB_GETSUBOPT''@/$(GNULIB_GETSUBOPT)/g' \
--	      -e 's/@''GNULIB_GRANTPT''@/$(GNULIB_GRANTPT)/g' \
--	      -e 's/@''GNULIB_MALLOC_POSIX''@/$(GNULIB_MALLOC_POSIX)/g' \
--	      -e 's/@''GNULIB_MBTOWC''@/$(GNULIB_MBTOWC)/g' \
--	      -e 's/@''GNULIB_MKDTEMP''@/$(GNULIB_MKDTEMP)/g' \
--	      -e 's/@''GNULIB_MKOSTEMP''@/$(GNULIB_MKOSTEMP)/g' \
--	      -e 's/@''GNULIB_MKOSTEMPS''@/$(GNULIB_MKOSTEMPS)/g' \
--	      -e 's/@''GNULIB_MKSTEMP''@/$(GNULIB_MKSTEMP)/g' \
--	      -e 's/@''GNULIB_MKSTEMPS''@/$(GNULIB_MKSTEMPS)/g' \
--	      -e 's/@''GNULIB_POSIX_MEMALIGN''@/$(GNULIB_POSIX_MEMALIGN)/g' \
--	      -e 's/@''GNULIB_POSIX_OPENPT''@/$(GNULIB_POSIX_OPENPT)/g' \
--	      -e 's/@''GNULIB_PTSNAME''@/$(GNULIB_PTSNAME)/g' \
--	      -e 's/@''GNULIB_PTSNAME_R''@/$(GNULIB_PTSNAME_R)/g' \
--	      -e 's/@''GNULIB_PUTENV''@/$(GNULIB_PUTENV)/g' \
--	      -e 's/@''GNULIB_QSORT_R''@/$(GNULIB_QSORT_R)/g' \
--	      -e 's/@''GNULIB_RANDOM''@/$(GNULIB_RANDOM)/g' \
--	      -e 's/@''GNULIB_RANDOM_R''@/$(GNULIB_RANDOM_R)/g' \
--	      -e 's/@''GNULIB_REALLOC_POSIX''@/$(GNULIB_REALLOC_POSIX)/g' \
--	      -e 's/@''GNULIB_REALLOCARRAY''@/$(GNULIB_REALLOCARRAY)/g' \
--	      -e 's/@''GNULIB_REALPATH''@/$(GNULIB_REALPATH)/g' \
--	      -e 's/@''GNULIB_RPMATCH''@/$(GNULIB_RPMATCH)/g' \
--	      -e 's/@''GNULIB_SECURE_GETENV''@/$(GNULIB_SECURE_GETENV)/g' \
--	      -e 's/@''GNULIB_SETENV''@/$(GNULIB_SETENV)/g' \
--	      -e 's/@''GNULIB_STRTOD''@/$(GNULIB_STRTOD)/g' \
--	      -e 's/@''GNULIB_STRTOLD''@/$(GNULIB_STRTOLD)/g' \
--	      -e 's/@''GNULIB_STRTOLL''@/$(GNULIB_STRTOLL)/g' \
--	      -e 's/@''GNULIB_STRTOULL''@/$(GNULIB_STRTOULL)/g' \
--	      -e 's/@''GNULIB_SYSTEM_POSIX''@/$(GNULIB_SYSTEM_POSIX)/g' \
--	      -e 's/@''GNULIB_UNLOCKPT''@/$(GNULIB_UNLOCKPT)/g' \
--	      -e 's/@''GNULIB_UNSETENV''@/$(GNULIB_UNSETENV)/g' \
--	      -e 's/@''GNULIB_WCTOMB''@/$(GNULIB_WCTOMB)/g' \
--	      -e 's/@''GNULIB_MDA_ECVT''@/$(GNULIB_MDA_ECVT)/g' \
--	      -e 's/@''GNULIB_MDA_FCVT''@/$(GNULIB_MDA_FCVT)/g' \
--	      -e 's/@''GNULIB_MDA_GCVT''@/$(GNULIB_MDA_GCVT)/g' \
--	      -e 's/@''GNULIB_MDA_MKTEMP''@/$(GNULIB_MDA_MKTEMP)/g' \
--	      -e 's/@''GNULIB_MDA_PUTENV''@/$(GNULIB_MDA_PUTENV)/g' \
-+	      -e 's/@''GNULIB__EXIT''@/$(GL_GNULIB__EXIT)/g' \
-+	      -e 's/@''GNULIB_ALIGNED_ALLOC''@/$(GL_GNULIB_ALIGNED_ALLOC)/g' \
-+	      -e 's/@''GNULIB_ATOLL''@/$(GL_GNULIB_ATOLL)/g' \
-+	      -e 's/@''GNULIB_CALLOC_POSIX''@/$(GL_GNULIB_CALLOC_POSIX)/g' \
-+	      -e 's/@''GNULIB_CANONICALIZE_FILE_NAME''@/$(GL_GNULIB_CANONICALIZE_FILE_NAME)/g' \
-+	      -e 's/@''GNULIB_FREE_POSIX''@/$(GL_GNULIB_FREE_POSIX)/g' \
-+	      -e 's/@''GNULIB_GETLOADAVG''@/$(GL_GNULIB_GETLOADAVG)/g' \
-+	      -e 's/@''GNULIB_GETSUBOPT''@/$(GL_GNULIB_GETSUBOPT)/g' \
-+	      -e 's/@''GNULIB_GRANTPT''@/$(GL_GNULIB_GRANTPT)/g' \
-+	      -e 's/@''GNULIB_MALLOC_POSIX''@/$(GL_GNULIB_MALLOC_POSIX)/g' \
-+	      -e 's/@''GNULIB_MBTOWC''@/$(GL_GNULIB_MBTOWC)/g' \
-+	      -e 's/@''GNULIB_MKDTEMP''@/$(GL_GNULIB_MKDTEMP)/g' \
-+	      -e 's/@''GNULIB_MKOSTEMP''@/$(GL_GNULIB_MKOSTEMP)/g' \
-+	      -e 's/@''GNULIB_MKOSTEMPS''@/$(GL_GNULIB_MKOSTEMPS)/g' \
-+	      -e 's/@''GNULIB_MKSTEMP''@/$(GL_GNULIB_MKSTEMP)/g' \
-+	      -e 's/@''GNULIB_MKSTEMPS''@/$(GL_GNULIB_MKSTEMPS)/g' \
-+	      -e 's/@''GNULIB_POSIX_MEMALIGN''@/$(GL_GNULIB_POSIX_MEMALIGN)/g' \
-+	      -e 's/@''GNULIB_POSIX_OPENPT''@/$(GL_GNULIB_POSIX_OPENPT)/g' \
-+	      -e 's/@''GNULIB_PTSNAME''@/$(GL_GNULIB_PTSNAME)/g' \
-+	      -e 's/@''GNULIB_PTSNAME_R''@/$(GL_GNULIB_PTSNAME_R)/g' \
-+	      -e 's/@''GNULIB_PUTENV''@/$(GL_GNULIB_PUTENV)/g' \
-+	      -e 's/@''GNULIB_QSORT_R''@/$(GL_GNULIB_QSORT_R)/g' \
-+	      -e 's/@''GNULIB_RANDOM''@/$(GL_GNULIB_RANDOM)/g' \
-+	      -e 's/@''GNULIB_RANDOM_R''@/$(GL_GNULIB_RANDOM_R)/g' \
-+	      -e 's/@''GNULIB_REALLOC_POSIX''@/$(GL_GNULIB_REALLOC_POSIX)/g' \
-+	      -e 's/@''GNULIB_REALLOCARRAY''@/$(GL_GNULIB_REALLOCARRAY)/g' \
-+	      -e 's/@''GNULIB_REALPATH''@/$(GL_GNULIB_REALPATH)/g' \
-+	      -e 's/@''GNULIB_RPMATCH''@/$(GL_GNULIB_RPMATCH)/g' \
-+	      -e 's/@''GNULIB_SECURE_GETENV''@/$(GL_GNULIB_SECURE_GETENV)/g' \
-+	      -e 's/@''GNULIB_SETENV''@/$(GL_GNULIB_SETENV)/g' \
-+	      -e 's/@''GNULIB_STRTOD''@/$(GL_GNULIB_STRTOD)/g' \
-+	      -e 's/@''GNULIB_STRTOL''@/$(GL_GNULIB_STRTOL)/g' \
-+	      -e 's/@''GNULIB_STRTOLD''@/$(GL_GNULIB_STRTOLD)/g' \
-+	      -e 's/@''GNULIB_STRTOLL''@/$(GL_GNULIB_STRTOLL)/g' \
-+	      -e 's/@''GNULIB_STRTOUL''@/$(GL_GNULIB_STRTOUL)/g' \
-+	      -e 's/@''GNULIB_STRTOULL''@/$(GL_GNULIB_STRTOULL)/g' \
-+	      -e 's/@''GNULIB_SYSTEM_POSIX''@/$(GL_GNULIB_SYSTEM_POSIX)/g' \
-+	      -e 's/@''GNULIB_UNLOCKPT''@/$(GL_GNULIB_UNLOCKPT)/g' \
-+	      -e 's/@''GNULIB_UNSETENV''@/$(GL_GNULIB_UNSETENV)/g' \
-+	      -e 's/@''GNULIB_WCTOMB''@/$(GL_GNULIB_WCTOMB)/g' \
-+	      -e 's/@''GNULIB_MDA_ECVT''@/$(GL_GNULIB_MDA_ECVT)/g' \
-+	      -e 's/@''GNULIB_MDA_FCVT''@/$(GL_GNULIB_MDA_FCVT)/g' \
-+	      -e 's/@''GNULIB_MDA_GCVT''@/$(GL_GNULIB_MDA_GCVT)/g' \
-+	      -e 's/@''GNULIB_MDA_MKTEMP''@/$(GL_GNULIB_MDA_MKTEMP)/g' \
-+	      -e 's/@''GNULIB_MDA_PUTENV''@/$(GL_GNULIB_MDA_PUTENV)/g' \
- 	      < $(srcdir)/stdlib.in.h | \
- 	  sed -e 's|@''HAVE__EXIT''@|$(HAVE__EXIT)|g' \
- 	      -e 's|@''HAVE_ALIGNED_ALLOC''@|$(HAVE_ALIGNED_ALLOC)|g' \
-@@ -1314,8 +1423,10 @@ stdlib.h: stdlib.in.h $(top_builddir)/co
- 	      -e 's|@''HAVE_SETSTATE''@|$(HAVE_SETSTATE)|g' \
- 	      -e 's|@''HAVE_DECL_SETSTATE''@|$(HAVE_DECL_SETSTATE)|g' \
- 	      -e 's|@''HAVE_STRTOD''@|$(HAVE_STRTOD)|g' \
-+	      -e 's|@''HAVE_STRTOL''@|$(HAVE_STRTOL)|g' \
- 	      -e 's|@''HAVE_STRTOLD''@|$(HAVE_STRTOLD)|g' \
- 	      -e 's|@''HAVE_STRTOLL''@|$(HAVE_STRTOLL)|g' \
-+	      -e 's|@''HAVE_STRTOUL''@|$(HAVE_STRTOUL)|g' \
- 	      -e 's|@''HAVE_STRTOULL''@|$(HAVE_STRTOULL)|g' \
- 	      -e 's|@''HAVE_STRUCT_RANDOM_DATA''@|$(HAVE_STRUCT_RANDOM_DATA)|g' \
- 	      -e 's|@''HAVE_SYS_LOADAVG_H''@|$(HAVE_SYS_LOADAVG_H)|g' \
-@@ -1337,11 +1448,16 @@ stdlib.h: stdlib.in.h $(top_builddir)/co
- 	      -e 's|@''REPLACE_RANDOM''@|$(REPLACE_RANDOM)|g' \
- 	      -e 's|@''REPLACE_RANDOM_R''@|$(REPLACE_RANDOM_R)|g' \
- 	      -e 's|@''REPLACE_REALLOC''@|$(REPLACE_REALLOC)|g' \
-+	      -e 's|@''REPLACE_REALLOCARRAY''@|$(REPLACE_REALLOCARRAY)|g' \
- 	      -e 's|@''REPLACE_REALPATH''@|$(REPLACE_REALPATH)|g' \
- 	      -e 's|@''REPLACE_SETENV''@|$(REPLACE_SETENV)|g' \
- 	      -e 's|@''REPLACE_SETSTATE''@|$(REPLACE_SETSTATE)|g' \
- 	      -e 's|@''REPLACE_STRTOD''@|$(REPLACE_STRTOD)|g' \
-+	      -e 's|@''REPLACE_STRTOL''@|$(REPLACE_STRTOL)|g' \
- 	      -e 's|@''REPLACE_STRTOLD''@|$(REPLACE_STRTOLD)|g' \
-+	      -e 's|@''REPLACE_STRTOLL''@|$(REPLACE_STRTOLL)|g' \
-+	      -e 's|@''REPLACE_STRTOUL''@|$(REPLACE_STRTOUL)|g' \
-+	      -e 's|@''REPLACE_STRTOULL''@|$(REPLACE_STRTOULL)|g' \
- 	      -e 's|@''REPLACE_UNSETENV''@|$(REPLACE_UNSETENV)|g' \
- 	      -e 's|@''REPLACE_WCTOMB''@|$(REPLACE_WCTOMB)|g' \
- 	      -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
-@@ -1444,49 +1560,49 @@ string.h: string.in.h $(top_builddir)/co
- 	      -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
- 	      -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
- 	      -e 's|@''NEXT_STRING_H''@|$(NEXT_STRING_H)|g' \
--	      -e 's/@''GNULIB_EXPLICIT_BZERO''@/$(GNULIB_EXPLICIT_BZERO)/g' \
--	      -e 's/@''GNULIB_FFSL''@/$(GNULIB_FFSL)/g' \
--	      -e 's/@''GNULIB_FFSLL''@/$(GNULIB_FFSLL)/g' \
--	      -e 's/@''GNULIB_MBSLEN''@/$(GNULIB_MBSLEN)/g' \
--	      -e 's/@''GNULIB_MBSNLEN''@/$(GNULIB_MBSNLEN)/g' \
--	      -e 's/@''GNULIB_MBSCHR''@/$(GNULIB_MBSCHR)/g' \
--	      -e 's/@''GNULIB_MBSRCHR''@/$(GNULIB_MBSRCHR)/g' \
--	      -e 's/@''GNULIB_MBSSTR''@/$(GNULIB_MBSSTR)/g' \
--	      -e 's/@''GNULIB_MBSCASECMP''@/$(GNULIB_MBSCASECMP)/g' \
--	      -e 's/@''GNULIB_MBSNCASECMP''@/$(GNULIB_MBSNCASECMP)/g' \
--	      -e 's/@''GNULIB_MBSPCASECMP''@/$(GNULIB_MBSPCASECMP)/g' \
--	      -e 's/@''GNULIB_MBSCASESTR''@/$(GNULIB_MBSCASESTR)/g' \
--	      -e 's/@''GNULIB_MBSCSPN''@/$(GNULIB_MBSCSPN)/g' \
--	      -e 's/@''GNULIB_MBSPBRK''@/$(GNULIB_MBSPBRK)/g' \
--	      -e 's/@''GNULIB_MBSSPN''@/$(GNULIB_MBSSPN)/g' \
--	      -e 's/@''GNULIB_MBSSEP''@/$(GNULIB_MBSSEP)/g' \
--	      -e 's/@''GNULIB_MBSTOK_R''@/$(GNULIB_MBSTOK_R)/g' \
--	      -e 's/@''GNULIB_MEMCHR''@/$(GNULIB_MEMCHR)/g' \
--	      -e 's/@''GNULIB_MEMMEM''@/$(GNULIB_MEMMEM)/g' \
--	      -e 's/@''GNULIB_MEMPCPY''@/$(GNULIB_MEMPCPY)/g' \
--	      -e 's/@''GNULIB_MEMRCHR''@/$(GNULIB_MEMRCHR)/g' \
--	      -e 's/@''GNULIB_RAWMEMCHR''@/$(GNULIB_RAWMEMCHR)/g' \
--	      -e 's/@''GNULIB_STPCPY''@/$(GNULIB_STPCPY)/g' \
--	      -e 's/@''GNULIB_STPNCPY''@/$(GNULIB_STPNCPY)/g' \
--	      -e 's/@''GNULIB_STRCHRNUL''@/$(GNULIB_STRCHRNUL)/g' \
--	      -e 's/@''GNULIB_STRDUP''@/$(GNULIB_STRDUP)/g' \
--	      -e 's/@''GNULIB_STRNCAT''@/$(GNULIB_STRNCAT)/g' \
--	      -e 's/@''GNULIB_STRNDUP''@/$(GNULIB_STRNDUP)/g' \
--	      -e 's/@''GNULIB_STRNLEN''@/$(GNULIB_STRNLEN)/g' \
--	      -e 's/@''GNULIB_STRPBRK''@/$(GNULIB_STRPBRK)/g' \
--	      -e 's/@''GNULIB_STRSEP''@/$(GNULIB_STRSEP)/g' \
--	      -e 's/@''GNULIB_STRSTR''@/$(GNULIB_STRSTR)/g' \
--	      -e 's/@''GNULIB_STRCASESTR''@/$(GNULIB_STRCASESTR)/g' \
--	      -e 's/@''GNULIB_STRTOK_R''@/$(GNULIB_STRTOK_R)/g' \
--	      -e 's/@''GNULIB_STRERROR''@/$(GNULIB_STRERROR)/g' \
--	      -e 's/@''GNULIB_STRERROR_R''@/$(GNULIB_STRERROR_R)/g' \
--	      -e 's/@''GNULIB_STRERRORNAME_NP''@/$(GNULIB_STRERRORNAME_NP)/g' \
--	      -e 's/@''GNULIB_SIGABBREV_NP''@/$(GNULIB_SIGABBREV_NP)/g' \
--	      -e 's/@''GNULIB_SIGDESCR_NP''@/$(GNULIB_SIGDESCR_NP)/g' \
--	      -e 's/@''GNULIB_STRSIGNAL''@/$(GNULIB_STRSIGNAL)/g' \
--	      -e 's/@''GNULIB_STRVERSCMP''@/$(GNULIB_STRVERSCMP)/g' \
--	      -e 's/@''GNULIB_MDA_MEMCCPY''@/$(GNULIB_MDA_MEMCCPY)/g' \
--	      -e 's/@''GNULIB_MDA_STRDUP''@/$(GNULIB_MDA_STRDUP)/g' \
-+	      -e 's/@''GNULIB_EXPLICIT_BZERO''@/$(GL_GNULIB_EXPLICIT_BZERO)/g' \
-+	      -e 's/@''GNULIB_FFSL''@/$(GL_GNULIB_FFSL)/g' \
-+	      -e 's/@''GNULIB_FFSLL''@/$(GL_GNULIB_FFSLL)/g' \
-+	      -e 's/@''GNULIB_MBSLEN''@/$(GL_GNULIB_MBSLEN)/g' \
-+	      -e 's/@''GNULIB_MBSNLEN''@/$(GL_GNULIB_MBSNLEN)/g' \
-+	      -e 's/@''GNULIB_MBSCHR''@/$(GL_GNULIB_MBSCHR)/g' \
-+	      -e 's/@''GNULIB_MBSRCHR''@/$(GL_GNULIB_MBSRCHR)/g' \
-+	      -e 's/@''GNULIB_MBSSTR''@/$(GL_GNULIB_MBSSTR)/g' \
-+	      -e 's/@''GNULIB_MBSCASECMP''@/$(GL_GNULIB_MBSCASECMP)/g' \
-+	      -e 's/@''GNULIB_MBSNCASECMP''@/$(GL_GNULIB_MBSNCASECMP)/g' \
-+	      -e 's/@''GNULIB_MBSPCASECMP''@/$(GL_GNULIB_MBSPCASECMP)/g' \
-+	      -e 's/@''GNULIB_MBSCASESTR''@/$(GL_GNULIB_MBSCASESTR)/g' \
-+	      -e 's/@''GNULIB_MBSCSPN''@/$(GL_GNULIB_MBSCSPN)/g' \
-+	      -e 's/@''GNULIB_MBSPBRK''@/$(GL_GNULIB_MBSPBRK)/g' \
-+	      -e 's/@''GNULIB_MBSSPN''@/$(GL_GNULIB_MBSSPN)/g' \
-+	      -e 's/@''GNULIB_MBSSEP''@/$(GL_GNULIB_MBSSEP)/g' \
-+	      -e 's/@''GNULIB_MBSTOK_R''@/$(GL_GNULIB_MBSTOK_R)/g' \
-+	      -e 's/@''GNULIB_MEMCHR''@/$(GL_GNULIB_MEMCHR)/g' \
-+	      -e 's/@''GNULIB_MEMMEM''@/$(GL_GNULIB_MEMMEM)/g' \
-+	      -e 's/@''GNULIB_MEMPCPY''@/$(GL_GNULIB_MEMPCPY)/g' \
-+	      -e 's/@''GNULIB_MEMRCHR''@/$(GL_GNULIB_MEMRCHR)/g' \
-+	      -e 's/@''GNULIB_RAWMEMCHR''@/$(GL_GNULIB_RAWMEMCHR)/g' \
-+	      -e 's/@''GNULIB_STPCPY''@/$(GL_GNULIB_STPCPY)/g' \
-+	      -e 's/@''GNULIB_STPNCPY''@/$(GL_GNULIB_STPNCPY)/g' \
-+	      -e 's/@''GNULIB_STRCHRNUL''@/$(GL_GNULIB_STRCHRNUL)/g' \
-+	      -e 's/@''GNULIB_STRDUP''@/$(GL_GNULIB_STRDUP)/g' \
-+	      -e 's/@''GNULIB_STRNCAT''@/$(GL_GNULIB_STRNCAT)/g' \
-+	      -e 's/@''GNULIB_STRNDUP''@/$(GL_GNULIB_STRNDUP)/g' \
-+	      -e 's/@''GNULIB_STRNLEN''@/$(GL_GNULIB_STRNLEN)/g' \
-+	      -e 's/@''GNULIB_STRPBRK''@/$(GL_GNULIB_STRPBRK)/g' \
-+	      -e 's/@''GNULIB_STRSEP''@/$(GL_GNULIB_STRSEP)/g' \
-+	      -e 's/@''GNULIB_STRSTR''@/$(GL_GNULIB_STRSTR)/g' \
-+	      -e 's/@''GNULIB_STRCASESTR''@/$(GL_GNULIB_STRCASESTR)/g' \
-+	      -e 's/@''GNULIB_STRTOK_R''@/$(GL_GNULIB_STRTOK_R)/g' \
-+	      -e 's/@''GNULIB_STRERROR''@/$(GL_GNULIB_STRERROR)/g' \
-+	      -e 's/@''GNULIB_STRERROR_R''@/$(GL_GNULIB_STRERROR_R)/g' \
-+	      -e 's/@''GNULIB_STRERRORNAME_NP''@/$(GL_GNULIB_STRERRORNAME_NP)/g' \
-+	      -e 's/@''GNULIB_SIGABBREV_NP''@/$(GL_GNULIB_SIGABBREV_NP)/g' \
-+	      -e 's/@''GNULIB_SIGDESCR_NP''@/$(GL_GNULIB_SIGDESCR_NP)/g' \
-+	      -e 's/@''GNULIB_STRSIGNAL''@/$(GL_GNULIB_STRSIGNAL)/g' \
-+	      -e 's/@''GNULIB_STRVERSCMP''@/$(GL_GNULIB_STRVERSCMP)/g' \
-+	      -e 's/@''GNULIB_MDA_MEMCCPY''@/$(GL_GNULIB_MDA_MEMCCPY)/g' \
-+	      -e 's/@''GNULIB_MDA_STRDUP''@/$(GL_GNULIB_MDA_STRDUP)/g' \
- 	      < $(srcdir)/string.in.h | \
- 	  sed -e 's|@''HAVE_EXPLICIT_BZERO''@|$(HAVE_EXPLICIT_BZERO)|g' \
- 	      -e 's|@''HAVE_FFSL''@|$(HAVE_FFSL)|g' \
-@@ -1556,7 +1672,7 @@ strings.h: strings.in.h $(top_builddir)/
- 	      -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
- 	      -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
- 	      -e 's|@''NEXT_STRINGS_H''@|$(NEXT_STRINGS_H)|g' \
--	      -e 's/@''GNULIB_FFS''@/$(GNULIB_FFS)/g' \
-+	      -e 's/@''GNULIB_FFS''@/$(GL_GNULIB_FFS)/g' \
- 	      -e 's|@''HAVE_FFS''@|$(HAVE_FFS)|g' \
- 	      -e 's|@''HAVE_STRCASECMP''@|$(HAVE_STRCASECMP)|g' \
- 	      -e 's|@''HAVE_DECL_STRNCASECMP''@|$(HAVE_DECL_STRNCASECMP)|g' \
-@@ -1638,25 +1754,25 @@ sys/stat.h: sys_stat.in.h $(top_builddir
- 	      -e 's|@''NEXT_SYS_STAT_H''@|$(NEXT_SYS_STAT_H)|g' \
- 	      -e 's|@''WINDOWS_64_BIT_ST_SIZE''@|$(WINDOWS_64_BIT_ST_SIZE)|g' \
- 	      -e 's|@''WINDOWS_STAT_TIMESPEC''@|$(WINDOWS_STAT_TIMESPEC)|g' \
--	      -e 's/@''GNULIB_FCHMODAT''@/$(GNULIB_FCHMODAT)/g' \
--	      -e 's/@''GNULIB_FSTAT''@/$(GNULIB_FSTAT)/g' \
--	      -e 's/@''GNULIB_FSTATAT''@/$(GNULIB_FSTATAT)/g' \
--	      -e 's/@''GNULIB_FUTIMENS''@/$(GNULIB_FUTIMENS)/g' \
--	      -e 's/@''GNULIB_GETUMASK''@/$(GNULIB_GETUMASK)/g' \
--	      -e 's/@''GNULIB_LCHMOD''@/$(GNULIB_LCHMOD)/g' \
--	      -e 's/@''GNULIB_LSTAT''@/$(GNULIB_LSTAT)/g' \
--	      -e 's/@''GNULIB_MKDIR''@/$(GNULIB_MKDIR)/g' \
--	      -e 's/@''GNULIB_MKDIRAT''@/$(GNULIB_MKDIRAT)/g' \
--	      -e 's/@''GNULIB_MKFIFO''@/$(GNULIB_MKFIFO)/g' \
--	      -e 's/@''GNULIB_MKFIFOAT''@/$(GNULIB_MKFIFOAT)/g' \
--	      -e 's/@''GNULIB_MKNOD''@/$(GNULIB_MKNOD)/g' \
--	      -e 's/@''GNULIB_MKNODAT''@/$(GNULIB_MKNODAT)/g' \
--	      -e 's/@''GNULIB_STAT''@/$(GNULIB_STAT)/g' \
--	      -e 's/@''GNULIB_UTIMENSAT''@/$(GNULIB_UTIMENSAT)/g' \
--	      -e 's/@''GNULIB_OVERRIDES_STRUCT_STAT''@/$(GNULIB_OVERRIDES_STRUCT_STAT)/g' \
--	      -e 's/@''GNULIB_MDA_CHMOD''@/$(GNULIB_MDA_CHMOD)/g' \
--	      -e 's/@''GNULIB_MDA_MKDIR''@/$(GNULIB_MDA_MKDIR)/g' \
--	      -e 's/@''GNULIB_MDA_UMASK''@/$(GNULIB_MDA_UMASK)/g' \
-+	      -e 's/@''GNULIB_FCHMODAT''@/$(GL_GNULIB_FCHMODAT)/g' \
-+	      -e 's/@''GNULIB_FSTAT''@/$(GL_GNULIB_FSTAT)/g' \
-+	      -e 's/@''GNULIB_FSTATAT''@/$(GL_GNULIB_FSTATAT)/g' \
-+	      -e 's/@''GNULIB_FUTIMENS''@/$(GL_GNULIB_FUTIMENS)/g' \
-+	      -e 's/@''GNULIB_GETUMASK''@/$(GL_GNULIB_GETUMASK)/g' \
-+	      -e 's/@''GNULIB_LCHMOD''@/$(GL_GNULIB_LCHMOD)/g' \
-+	      -e 's/@''GNULIB_LSTAT''@/$(GL_GNULIB_LSTAT)/g' \
-+	      -e 's/@''GNULIB_MKDIR''@/$(GL_GNULIB_MKDIR)/g' \
-+	      -e 's/@''GNULIB_MKDIRAT''@/$(GL_GNULIB_MKDIRAT)/g' \
-+	      -e 's/@''GNULIB_MKFIFO''@/$(GL_GNULIB_MKFIFO)/g' \
-+	      -e 's/@''GNULIB_MKFIFOAT''@/$(GL_GNULIB_MKFIFOAT)/g' \
-+	      -e 's/@''GNULIB_MKNOD''@/$(GL_GNULIB_MKNOD)/g' \
-+	      -e 's/@''GNULIB_MKNODAT''@/$(GL_GNULIB_MKNODAT)/g' \
-+	      -e 's/@''GNULIB_STAT''@/$(GL_GNULIB_STAT)/g' \
-+	      -e 's/@''GNULIB_UTIMENSAT''@/$(GL_GNULIB_UTIMENSAT)/g' \
-+	      -e 's/@''GNULIB_OVERRIDES_STRUCT_STAT''@/$(GL_GNULIB_OVERRIDES_STRUCT_STAT)/g' \
-+	      -e 's/@''GNULIB_MDA_CHMOD''@/$(GL_GNULIB_MDA_CHMOD)/g' \
-+	      -e 's/@''GNULIB_MDA_MKDIR''@/$(GL_GNULIB_MDA_MKDIR)/g' \
-+	      -e 's/@''GNULIB_MDA_UMASK''@/$(GL_GNULIB_MDA_UMASK)/g' \
- 	      -e 's|@''HAVE_FCHMODAT''@|$(HAVE_FCHMODAT)|g' \
- 	      -e 's|@''HAVE_FSTATAT''@|$(HAVE_FSTATAT)|g' \
- 	      -e 's|@''HAVE_FUTIMENS''@|$(HAVE_FUTIMENS)|g' \
-@@ -1744,18 +1860,18 @@ time.h: time.in.h $(top_builddir)/config
- 	      -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
- 	      -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
- 	      -e 's|@''NEXT_TIME_H''@|$(NEXT_TIME_H)|g' \
--	      -e 's/@''GNULIB_CTIME''@/$(GNULIB_CTIME)/g' \
--	      -e 's/@''GNULIB_LOCALTIME''@/$(GNULIB_LOCALTIME)/g' \
--	      -e 's/@''GNULIB_MKTIME''@/$(GNULIB_MKTIME)/g' \
--	      -e 's/@''GNULIB_NANOSLEEP''@/$(GNULIB_NANOSLEEP)/g' \
--	      -e 's/@''GNULIB_STRFTIME''@/$(GNULIB_STRFTIME)/g' \
--	      -e 's/@''GNULIB_STRPTIME''@/$(GNULIB_STRPTIME)/g' \
--	      -e 's/@''GNULIB_TIMEGM''@/$(GNULIB_TIMEGM)/g' \
--	      -e 's/@''GNULIB_TIMESPEC_GET''@/$(GNULIB_TIMESPEC_GET)/g' \
--	      -e 's/@''GNULIB_TIME_R''@/$(GNULIB_TIME_R)/g' \
--	      -e 's/@''GNULIB_TIME_RZ''@/$(GNULIB_TIME_RZ)/g' \
--	      -e 's/@''GNULIB_TZSET''@/$(GNULIB_TZSET)/g' \
--	      -e 's/@''GNULIB_MDA_TZSET''@/$(GNULIB_MDA_TZSET)/g' \
-+	      -e 's/@''GNULIB_CTIME''@/$(GL_GNULIB_CTIME)/g' \
-+	      -e 's/@''GNULIB_LOCALTIME''@/$(GL_GNULIB_LOCALTIME)/g' \
-+	      -e 's/@''GNULIB_MKTIME''@/$(GL_GNULIB_MKTIME)/g' \
-+	      -e 's/@''GNULIB_NANOSLEEP''@/$(GL_GNULIB_NANOSLEEP)/g' \
-+	      -e 's/@''GNULIB_STRFTIME''@/$(GL_GNULIB_STRFTIME)/g' \
-+	      -e 's/@''GNULIB_STRPTIME''@/$(GL_GNULIB_STRPTIME)/g' \
-+	      -e 's/@''GNULIB_TIMEGM''@/$(GL_GNULIB_TIMEGM)/g' \
-+	      -e 's/@''GNULIB_TIMESPEC_GET''@/$(GL_GNULIB_TIMESPEC_GET)/g' \
-+	      -e 's/@''GNULIB_TIME_R''@/$(GL_GNULIB_TIME_R)/g' \
-+	      -e 's/@''GNULIB_TIME_RZ''@/$(GL_GNULIB_TIME_RZ)/g' \
-+	      -e 's/@''GNULIB_TZSET''@/$(GL_GNULIB_TZSET)/g' \
-+	      -e 's/@''GNULIB_MDA_TZSET''@/$(GL_GNULIB_MDA_TZSET)/g' \
- 	      -e 's|@''HAVE_DECL_LOCALTIME_R''@|$(HAVE_DECL_LOCALTIME_R)|g' \
- 	      -e 's|@''HAVE_NANOSLEEP''@|$(HAVE_NANOSLEEP)|g' \
- 	      -e 's|@''HAVE_STRPTIME''@|$(HAVE_STRPTIME)|g' \
-@@ -1806,89 +1922,89 @@ unistd.h: unistd.in.h $(top_builddir)/co
- 	      -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
- 	      -e 's|@''NEXT_UNISTD_H''@|$(NEXT_UNISTD_H)|g' \
- 	      -e 's|@''WINDOWS_64_BIT_OFF_T''@|$(WINDOWS_64_BIT_OFF_T)|g' \
--	      -e 's/@''GNULIB_ACCESS''@/$(GNULIB_ACCESS)/g' \
--	      -e 's/@''GNULIB_CHDIR''@/$(GNULIB_CHDIR)/g' \
--	      -e 's/@''GNULIB_CHOWN''@/$(GNULIB_CHOWN)/g' \
--	      -e 's/@''GNULIB_CLOSE''@/$(GNULIB_CLOSE)/g' \
--	      -e 's/@''GNULIB_COPY_FILE_RANGE''@/$(GNULIB_COPY_FILE_RANGE)/g' \
--	      -e 's/@''GNULIB_DUP''@/$(GNULIB_DUP)/g' \
--	      -e 's/@''GNULIB_DUP2''@/$(GNULIB_DUP2)/g' \
--	      -e 's/@''GNULIB_DUP3''@/$(GNULIB_DUP3)/g' \
--	      -e 's/@''GNULIB_ENVIRON''@/$(GNULIB_ENVIRON)/g' \
--	      -e 's/@''GNULIB_EUIDACCESS''@/$(GNULIB_EUIDACCESS)/g' \
--	      -e 's/@''GNULIB_EXECL''@/$(GNULIB_EXECL)/g' \
--	      -e 's/@''GNULIB_EXECLE''@/$(GNULIB_EXECLE)/g' \
--	      -e 's/@''GNULIB_EXECLP''@/$(GNULIB_EXECLP)/g' \
--	      -e 's/@''GNULIB_EXECV''@/$(GNULIB_EXECV)/g' \
--	      -e 's/@''GNULIB_EXECVE''@/$(GNULIB_EXECVE)/g' \
--	      -e 's/@''GNULIB_EXECVP''@/$(GNULIB_EXECVP)/g' \
--	      -e 's/@''GNULIB_EXECVPE''@/$(GNULIB_EXECVPE)/g' \
--	      -e 's/@''GNULIB_FACCESSAT''@/$(GNULIB_FACCESSAT)/g' \
--	      -e 's/@''GNULIB_FCHDIR''@/$(GNULIB_FCHDIR)/g' \
--	      -e 's/@''GNULIB_FCHOWNAT''@/$(GNULIB_FCHOWNAT)/g' \
--	      -e 's/@''GNULIB_FDATASYNC''@/$(GNULIB_FDATASYNC)/g' \
--	      -e 's/@''GNULIB_FSYNC''@/$(GNULIB_FSYNC)/g' \
--	      -e 's/@''GNULIB_FTRUNCATE''@/$(GNULIB_FTRUNCATE)/g' \
--	      -e 's/@''GNULIB_GETCWD''@/$(GNULIB_GETCWD)/g' \
--	      -e 's/@''GNULIB_GETDOMAINNAME''@/$(GNULIB_GETDOMAINNAME)/g' \
--	      -e 's/@''GNULIB_GETDTABLESIZE''@/$(GNULIB_GETDTABLESIZE)/g' \
--	      -e 's/@''GNULIB_GETENTROPY''@/$(GNULIB_GETENTROPY)/g' \
--	      -e 's/@''GNULIB_GETGROUPS''@/$(GNULIB_GETGROUPS)/g' \
--	      -e 's/@''GNULIB_GETHOSTNAME''@/$(GNULIB_GETHOSTNAME)/g' \
--	      -e 's/@''GNULIB_GETLOGIN''@/$(GNULIB_GETLOGIN)/g' \
--	      -e 's/@''GNULIB_GETLOGIN_R''@/$(GNULIB_GETLOGIN_R)/g' \
--	      -e 's/@''GNULIB_GETOPT_POSIX''@/$(GNULIB_GETOPT_POSIX)/g' \
--	      -e 's/@''GNULIB_GETPAGESIZE''@/$(GNULIB_GETPAGESIZE)/g' \
--	      -e 's/@''GNULIB_GETPASS''@/$(GNULIB_GETPASS)/g' \
--	      -e 's/@''GNULIB_GETUSERSHELL''@/$(GNULIB_GETUSERSHELL)/g' \
--	      -e 's/@''GNULIB_GROUP_MEMBER''@/$(GNULIB_GROUP_MEMBER)/g' \
--	      -e 's/@''GNULIB_ISATTY''@/$(GNULIB_ISATTY)/g' \
--	      -e 's/@''GNULIB_LCHOWN''@/$(GNULIB_LCHOWN)/g' \
--	      -e 's/@''GNULIB_LINK''@/$(GNULIB_LINK)/g' \
--	      -e 's/@''GNULIB_LINKAT''@/$(GNULIB_LINKAT)/g' \
--	      -e 's/@''GNULIB_LSEEK''@/$(GNULIB_LSEEK)/g' \
--	      -e 's/@''GNULIB_PIPE''@/$(GNULIB_PIPE)/g' \
--	      -e 's/@''GNULIB_PIPE2''@/$(GNULIB_PIPE2)/g' \
--	      -e 's/@''GNULIB_PREAD''@/$(GNULIB_PREAD)/g' \
--	      -e 's/@''GNULIB_PWRITE''@/$(GNULIB_PWRITE)/g' \
--	      -e 's/@''GNULIB_READ''@/$(GNULIB_READ)/g' \
--	      -e 's/@''GNULIB_READLINK''@/$(GNULIB_READLINK)/g' \
--	      -e 's/@''GNULIB_READLINKAT''@/$(GNULIB_READLINKAT)/g' \
--	      -e 's/@''GNULIB_RMDIR''@/$(GNULIB_RMDIR)/g' \
--	      -e 's/@''GNULIB_SETHOSTNAME''@/$(GNULIB_SETHOSTNAME)/g' \
--	      -e 's/@''GNULIB_SLEEP''@/$(GNULIB_SLEEP)/g' \
--	      -e 's/@''GNULIB_SYMLINK''@/$(GNULIB_SYMLINK)/g' \
--	      -e 's/@''GNULIB_SYMLINKAT''@/$(GNULIB_SYMLINKAT)/g' \
--	      -e 's/@''GNULIB_TRUNCATE''@/$(GNULIB_TRUNCATE)/g' \
--	      -e 's/@''GNULIB_TTYNAME_R''@/$(GNULIB_TTYNAME_R)/g' \
--	      -e 's/@''GNULIB_UNISTD_H_GETOPT''@/0$(GNULIB_GL_UNISTD_H_GETOPT)/g' \
--	      -e 's/@''GNULIB_UNISTD_H_NONBLOCKING''@/$(GNULIB_UNISTD_H_NONBLOCKING)/g' \
--	      -e 's/@''GNULIB_UNISTD_H_SIGPIPE''@/$(GNULIB_UNISTD_H_SIGPIPE)/g' \
--	      -e 's/@''GNULIB_UNLINK''@/$(GNULIB_UNLINK)/g' \
--	      -e 's/@''GNULIB_UNLINKAT''@/$(GNULIB_UNLINKAT)/g' \
--	      -e 's/@''GNULIB_USLEEP''@/$(GNULIB_USLEEP)/g' \
--	      -e 's/@''GNULIB_WRITE''@/$(GNULIB_WRITE)/g' \
--	      -e 's/@''GNULIB_MDA_ACCESS''@/$(GNULIB_MDA_ACCESS)/g' \
--	      -e 's/@''GNULIB_MDA_CHDIR''@/$(GNULIB_MDA_CHDIR)/g' \
--	      -e 's/@''GNULIB_MDA_CLOSE''@/$(GNULIB_MDA_CLOSE)/g' \
--	      -e 's/@''GNULIB_MDA_DUP''@/$(GNULIB_MDA_DUP)/g' \
--	      -e 's/@''GNULIB_MDA_DUP2''@/$(GNULIB_MDA_DUP2)/g' \
--	      -e 's/@''GNULIB_MDA_EXECL''@/$(GNULIB_MDA_EXECL)/g' \
--	      -e 's/@''GNULIB_MDA_EXECLE''@/$(GNULIB_MDA_EXECLE)/g' \
--	      -e 's/@''GNULIB_MDA_EXECLP''@/$(GNULIB_MDA_EXECLP)/g' \
--	      -e 's/@''GNULIB_MDA_EXECV''@/$(GNULIB_MDA_EXECV)/g' \
--	      -e 's/@''GNULIB_MDA_EXECVE''@/$(GNULIB_MDA_EXECVE)/g' \
--	      -e 's/@''GNULIB_MDA_EXECVP''@/$(GNULIB_MDA_EXECVP)/g' \
--	      -e 's/@''GNULIB_MDA_EXECVPE''@/$(GNULIB_MDA_EXECVPE)/g' \
--	      -e 's/@''GNULIB_MDA_GETCWD''@/$(GNULIB_MDA_GETCWD)/g' \
--	      -e 's/@''GNULIB_MDA_GETPID''@/$(GNULIB_MDA_GETPID)/g' \
--	      -e 's/@''GNULIB_MDA_ISATTY''@/$(GNULIB_MDA_ISATTY)/g' \
--	      -e 's/@''GNULIB_MDA_LSEEK''@/$(GNULIB_MDA_LSEEK)/g' \
--	      -e 's/@''GNULIB_MDA_READ''@/$(GNULIB_MDA_READ)/g' \
--	      -e 's/@''GNULIB_MDA_RMDIR''@/$(GNULIB_MDA_RMDIR)/g' \
--	      -e 's/@''GNULIB_MDA_SWAB''@/$(GNULIB_MDA_SWAB)/g' \
--	      -e 's/@''GNULIB_MDA_UNLINK''@/$(GNULIB_MDA_UNLINK)/g' \
--	      -e 's/@''GNULIB_MDA_WRITE''@/$(GNULIB_MDA_WRITE)/g' \
-+	      -e 's/@''GNULIB_ACCESS''@/$(GL_GNULIB_ACCESS)/g' \
-+	      -e 's/@''GNULIB_CHDIR''@/$(GL_GNULIB_CHDIR)/g' \
-+	      -e 's/@''GNULIB_CHOWN''@/$(GL_GNULIB_CHOWN)/g' \
-+	      -e 's/@''GNULIB_CLOSE''@/$(GL_GNULIB_CLOSE)/g' \
-+	      -e 's/@''GNULIB_COPY_FILE_RANGE''@/$(GL_GNULIB_COPY_FILE_RANGE)/g' \
-+	      -e 's/@''GNULIB_DUP''@/$(GL_GNULIB_DUP)/g' \
-+	      -e 's/@''GNULIB_DUP2''@/$(GL_GNULIB_DUP2)/g' \
-+	      -e 's/@''GNULIB_DUP3''@/$(GL_GNULIB_DUP3)/g' \
-+	      -e 's/@''GNULIB_ENVIRON''@/$(GL_GNULIB_ENVIRON)/g' \
-+	      -e 's/@''GNULIB_EUIDACCESS''@/$(GL_GNULIB_EUIDACCESS)/g' \
-+	      -e 's/@''GNULIB_EXECL''@/$(GL_GNULIB_EXECL)/g' \
-+	      -e 's/@''GNULIB_EXECLE''@/$(GL_GNULIB_EXECLE)/g' \
-+	      -e 's/@''GNULIB_EXECLP''@/$(GL_GNULIB_EXECLP)/g' \
-+	      -e 's/@''GNULIB_EXECV''@/$(GL_GNULIB_EXECV)/g' \
-+	      -e 's/@''GNULIB_EXECVE''@/$(GL_GNULIB_EXECVE)/g' \
-+	      -e 's/@''GNULIB_EXECVP''@/$(GL_GNULIB_EXECVP)/g' \
-+	      -e 's/@''GNULIB_EXECVPE''@/$(GL_GNULIB_EXECVPE)/g' \
-+	      -e 's/@''GNULIB_FACCESSAT''@/$(GL_GNULIB_FACCESSAT)/g' \
-+	      -e 's/@''GNULIB_FCHDIR''@/$(GL_GNULIB_FCHDIR)/g' \
-+	      -e 's/@''GNULIB_FCHOWNAT''@/$(GL_GNULIB_FCHOWNAT)/g' \
-+	      -e 's/@''GNULIB_FDATASYNC''@/$(GL_GNULIB_FDATASYNC)/g' \
-+	      -e 's/@''GNULIB_FSYNC''@/$(GL_GNULIB_FSYNC)/g' \
-+	      -e 's/@''GNULIB_FTRUNCATE''@/$(GL_GNULIB_FTRUNCATE)/g' \
-+	      -e 's/@''GNULIB_GETCWD''@/$(GL_GNULIB_GETCWD)/g' \
-+	      -e 's/@''GNULIB_GETDOMAINNAME''@/$(GL_GNULIB_GETDOMAINNAME)/g' \
-+	      -e 's/@''GNULIB_GETDTABLESIZE''@/$(GL_GNULIB_GETDTABLESIZE)/g' \
-+	      -e 's/@''GNULIB_GETENTROPY''@/$(GL_GNULIB_GETENTROPY)/g' \
-+	      -e 's/@''GNULIB_GETGROUPS''@/$(GL_GNULIB_GETGROUPS)/g' \
-+	      -e 's/@''GNULIB_GETHOSTNAME''@/$(GL_GNULIB_GETHOSTNAME)/g' \
-+	      -e 's/@''GNULIB_GETLOGIN''@/$(GL_GNULIB_GETLOGIN)/g' \
-+	      -e 's/@''GNULIB_GETLOGIN_R''@/$(GL_GNULIB_GETLOGIN_R)/g' \
-+	      -e 's/@''GNULIB_GETOPT_POSIX''@/$(GL_GNULIB_GETOPT_POSIX)/g' \
-+	      -e 's/@''GNULIB_GETPAGESIZE''@/$(GL_GNULIB_GETPAGESIZE)/g' \
-+	      -e 's/@''GNULIB_GETPASS''@/$(GL_GNULIB_GETPASS)/g' \
-+	      -e 's/@''GNULIB_GETUSERSHELL''@/$(GL_GNULIB_GETUSERSHELL)/g' \
-+	      -e 's/@''GNULIB_GROUP_MEMBER''@/$(GL_GNULIB_GROUP_MEMBER)/g' \
-+	      -e 's/@''GNULIB_ISATTY''@/$(GL_GNULIB_ISATTY)/g' \
-+	      -e 's/@''GNULIB_LCHOWN''@/$(GL_GNULIB_LCHOWN)/g' \
-+	      -e 's/@''GNULIB_LINK''@/$(GL_GNULIB_LINK)/g' \
-+	      -e 's/@''GNULIB_LINKAT''@/$(GL_GNULIB_LINKAT)/g' \
-+	      -e 's/@''GNULIB_LSEEK''@/$(GL_GNULIB_LSEEK)/g' \
-+	      -e 's/@''GNULIB_PIPE''@/$(GL_GNULIB_PIPE)/g' \
-+	      -e 's/@''GNULIB_PIPE2''@/$(GL_GNULIB_PIPE2)/g' \
-+	      -e 's/@''GNULIB_PREAD''@/$(GL_GNULIB_PREAD)/g' \
-+	      -e 's/@''GNULIB_PWRITE''@/$(GL_GNULIB_PWRITE)/g' \
-+	      -e 's/@''GNULIB_READ''@/$(GL_GNULIB_READ)/g' \
-+	      -e 's/@''GNULIB_READLINK''@/$(GL_GNULIB_READLINK)/g' \
-+	      -e 's/@''GNULIB_READLINKAT''@/$(GL_GNULIB_READLINKAT)/g' \
-+	      -e 's/@''GNULIB_RMDIR''@/$(GL_GNULIB_RMDIR)/g' \
-+	      -e 's/@''GNULIB_SETHOSTNAME''@/$(GL_GNULIB_SETHOSTNAME)/g' \
-+	      -e 's/@''GNULIB_SLEEP''@/$(GL_GNULIB_SLEEP)/g' \
-+	      -e 's/@''GNULIB_SYMLINK''@/$(GL_GNULIB_SYMLINK)/g' \
-+	      -e 's/@''GNULIB_SYMLINKAT''@/$(GL_GNULIB_SYMLINKAT)/g' \
-+	      -e 's/@''GNULIB_TRUNCATE''@/$(GL_GNULIB_TRUNCATE)/g' \
-+	      -e 's/@''GNULIB_TTYNAME_R''@/$(GL_GNULIB_TTYNAME_R)/g' \
-+	      -e 's/@''GNULIB_UNISTD_H_GETOPT''@/0$(GL_GNULIB_UNISTD_H_GETOPT)/g' \
-+	      -e 's/@''GNULIB_UNISTD_H_NONBLOCKING''@/$(GL_GNULIB_UNISTD_H_NONBLOCKING)/g' \
-+	      -e 's/@''GNULIB_UNISTD_H_SIGPIPE''@/$(GL_GNULIB_UNISTD_H_SIGPIPE)/g' \
-+	      -e 's/@''GNULIB_UNLINK''@/$(GL_GNULIB_UNLINK)/g' \
-+	      -e 's/@''GNULIB_UNLINKAT''@/$(GL_GNULIB_UNLINKAT)/g' \
-+	      -e 's/@''GNULIB_USLEEP''@/$(GL_GNULIB_USLEEP)/g' \
-+	      -e 's/@''GNULIB_WRITE''@/$(GL_GNULIB_WRITE)/g' \
-+	      -e 's/@''GNULIB_MDA_ACCESS''@/$(GL_GNULIB_MDA_ACCESS)/g' \
-+	      -e 's/@''GNULIB_MDA_CHDIR''@/$(GL_GNULIB_MDA_CHDIR)/g' \
-+	      -e 's/@''GNULIB_MDA_CLOSE''@/$(GL_GNULIB_MDA_CLOSE)/g' \
-+	      -e 's/@''GNULIB_MDA_DUP''@/$(GL_GNULIB_MDA_DUP)/g' \
-+	      -e 's/@''GNULIB_MDA_DUP2''@/$(GL_GNULIB_MDA_DUP2)/g' \
-+	      -e 's/@''GNULIB_MDA_EXECL''@/$(GL_GNULIB_MDA_EXECL)/g' \
-+	      -e 's/@''GNULIB_MDA_EXECLE''@/$(GL_GNULIB_MDA_EXECLE)/g' \
-+	      -e 's/@''GNULIB_MDA_EXECLP''@/$(GL_GNULIB_MDA_EXECLP)/g' \
-+	      -e 's/@''GNULIB_MDA_EXECV''@/$(GL_GNULIB_MDA_EXECV)/g' \
-+	      -e 's/@''GNULIB_MDA_EXECVE''@/$(GL_GNULIB_MDA_EXECVE)/g' \
-+	      -e 's/@''GNULIB_MDA_EXECVP''@/$(GL_GNULIB_MDA_EXECVP)/g' \
-+	      -e 's/@''GNULIB_MDA_EXECVPE''@/$(GL_GNULIB_MDA_EXECVPE)/g' \
-+	      -e 's/@''GNULIB_MDA_GETCWD''@/$(GL_GNULIB_MDA_GETCWD)/g' \
-+	      -e 's/@''GNULIB_MDA_GETPID''@/$(GL_GNULIB_MDA_GETPID)/g' \
-+	      -e 's/@''GNULIB_MDA_ISATTY''@/$(GL_GNULIB_MDA_ISATTY)/g' \
-+	      -e 's/@''GNULIB_MDA_LSEEK''@/$(GL_GNULIB_MDA_LSEEK)/g' \
-+	      -e 's/@''GNULIB_MDA_READ''@/$(GL_GNULIB_MDA_READ)/g' \
-+	      -e 's/@''GNULIB_MDA_RMDIR''@/$(GL_GNULIB_MDA_RMDIR)/g' \
-+	      -e 's/@''GNULIB_MDA_SWAB''@/$(GL_GNULIB_MDA_SWAB)/g' \
-+	      -e 's/@''GNULIB_MDA_UNLINK''@/$(GL_GNULIB_MDA_UNLINK)/g' \
-+	      -e 's/@''GNULIB_MDA_WRITE''@/$(GL_GNULIB_MDA_WRITE)/g' \
- 	      < $(srcdir)/unistd.in.h | \
- 	  sed -e 's|@''HAVE_CHOWN''@|$(HAVE_CHOWN)|g' \
- 	      -e 's|@''HAVE_COPY_FILE_RANGE''@|$(HAVE_COPY_FILE_RANGE)|g' \
-@@ -2080,49 +2196,49 @@ wchar.h: wchar.in.h $(top_builddir)/conf
- 	      -e 's|@''NEXT_WCHAR_H''@|$(NEXT_WCHAR_H)|g' \
- 	      -e 's|@''HAVE_WCHAR_H''@|$(HAVE_WCHAR_H)|g' \
- 	      -e 's/@''HAVE_CRTDEFS_H''@/$(HAVE_CRTDEFS_H)/g' \
--	      -e 's/@''GNULIB_OVERRIDES_WINT_T''@/$(GNULIB_OVERRIDES_WINT_T)/g' \
--	      -e 's/@''GNULIB_BTOWC''@/$(GNULIB_BTOWC)/g' \
--	      -e 's/@''GNULIB_WCTOB''@/$(GNULIB_WCTOB)/g' \
--	      -e 's/@''GNULIB_MBSINIT''@/$(GNULIB_MBSINIT)/g' \
--	      -e 's/@''GNULIB_MBRTOWC''@/$(GNULIB_MBRTOWC)/g' \
--	      -e 's/@''GNULIB_MBRLEN''@/$(GNULIB_MBRLEN)/g' \
--	      -e 's/@''GNULIB_MBSRTOWCS''@/$(GNULIB_MBSRTOWCS)/g' \
--	      -e 's/@''GNULIB_MBSNRTOWCS''@/$(GNULIB_MBSNRTOWCS)/g' \
--	      -e 's/@''GNULIB_WCRTOMB''@/$(GNULIB_WCRTOMB)/g' \
--	      -e 's/@''GNULIB_WCSRTOMBS''@/$(GNULIB_WCSRTOMBS)/g' \
--	      -e 's/@''GNULIB_WCSNRTOMBS''@/$(GNULIB_WCSNRTOMBS)/g' \
--	      -e 's/@''GNULIB_WCWIDTH''@/$(GNULIB_WCWIDTH)/g' \
--	      -e 's/@''GNULIB_WMEMCHR''@/$(GNULIB_WMEMCHR)/g' \
--	      -e 's/@''GNULIB_WMEMCMP''@/$(GNULIB_WMEMCMP)/g' \
--	      -e 's/@''GNULIB_WMEMCPY''@/$(GNULIB_WMEMCPY)/g' \
--	      -e 's/@''GNULIB_WMEMMOVE''@/$(GNULIB_WMEMMOVE)/g' \
--	      -e 's/@''GNULIB_WMEMPCPY''@/$(GNULIB_WMEMPCPY)/g' \
--	      -e 's/@''GNULIB_WMEMSET''@/$(GNULIB_WMEMSET)/g' \
--	      -e 's/@''GNULIB_WCSLEN''@/$(GNULIB_WCSLEN)/g' \
--	      -e 's/@''GNULIB_WCSNLEN''@/$(GNULIB_WCSNLEN)/g' \
--	      -e 's/@''GNULIB_WCSCPY''@/$(GNULIB_WCSCPY)/g' \
--	      -e 's/@''GNULIB_WCPCPY''@/$(GNULIB_WCPCPY)/g' \
--	      -e 's/@''GNULIB_WCSNCPY''@/$(GNULIB_WCSNCPY)/g' \
--	      -e 's/@''GNULIB_WCPNCPY''@/$(GNULIB_WCPNCPY)/g' \
--	      -e 's/@''GNULIB_WCSCAT''@/$(GNULIB_WCSCAT)/g' \
--	      -e 's/@''GNULIB_WCSNCAT''@/$(GNULIB_WCSNCAT)/g' \
--	      -e 's/@''GNULIB_WCSCMP''@/$(GNULIB_WCSCMP)/g' \
--	      -e 's/@''GNULIB_WCSNCMP''@/$(GNULIB_WCSNCMP)/g' \
--	      -e 's/@''GNULIB_WCSCASECMP''@/$(GNULIB_WCSCASECMP)/g' \
--	      -e 's/@''GNULIB_WCSNCASECMP''@/$(GNULIB_WCSNCASECMP)/g' \
--	      -e 's/@''GNULIB_WCSCOLL''@/$(GNULIB_WCSCOLL)/g' \
--	      -e 's/@''GNULIB_WCSXFRM''@/$(GNULIB_WCSXFRM)/g' \
--	      -e 's/@''GNULIB_WCSDUP''@/$(GNULIB_WCSDUP)/g' \
--	      -e 's/@''GNULIB_WCSCHR''@/$(GNULIB_WCSCHR)/g' \
--	      -e 's/@''GNULIB_WCSRCHR''@/$(GNULIB_WCSRCHR)/g' \
--	      -e 's/@''GNULIB_WCSCSPN''@/$(GNULIB_WCSCSPN)/g' \
--	      -e 's/@''GNULIB_WCSSPN''@/$(GNULIB_WCSSPN)/g' \
--	      -e 's/@''GNULIB_WCSPBRK''@/$(GNULIB_WCSPBRK)/g' \
--	      -e 's/@''GNULIB_WCSSTR''@/$(GNULIB_WCSSTR)/g' \
--	      -e 's/@''GNULIB_WCSTOK''@/$(GNULIB_WCSTOK)/g' \
--	      -e 's/@''GNULIB_WCSWIDTH''@/$(GNULIB_WCSWIDTH)/g' \
--	      -e 's/@''GNULIB_WCSFTIME''@/$(GNULIB_WCSFTIME)/g' \
--	      -e 's/@''GNULIB_MDA_WCSDUP''@/$(GNULIB_MDA_WCSDUP)/g' \
-+	      -e 's/@''GNULIBHEADERS_OVERRIDE_WINT_T''@/$(GNULIBHEADERS_OVERRIDE_WINT_T)/g' \
-+	      -e 's/@''GNULIB_BTOWC''@/$(GL_GNULIB_BTOWC)/g' \
-+	      -e 's/@''GNULIB_WCTOB''@/$(GL_GNULIB_WCTOB)/g' \
-+	      -e 's/@''GNULIB_MBSINIT''@/$(GL_GNULIB_MBSINIT)/g' \
-+	      -e 's/@''GNULIB_MBRTOWC''@/$(GL_GNULIB_MBRTOWC)/g' \
-+	      -e 's/@''GNULIB_MBRLEN''@/$(GL_GNULIB_MBRLEN)/g' \
-+	      -e 's/@''GNULIB_MBSRTOWCS''@/$(GL_GNULIB_MBSRTOWCS)/g' \
-+	      -e 's/@''GNULIB_MBSNRTOWCS''@/$(GL_GNULIB_MBSNRTOWCS)/g' \
-+	      -e 's/@''GNULIB_WCRTOMB''@/$(GL_GNULIB_WCRTOMB)/g' \
-+	      -e 's/@''GNULIB_WCSRTOMBS''@/$(GL_GNULIB_WCSRTOMBS)/g' \
-+	      -e 's/@''GNULIB_WCSNRTOMBS''@/$(GL_GNULIB_WCSNRTOMBS)/g' \
-+	      -e 's/@''GNULIB_WCWIDTH''@/$(GL_GNULIB_WCWIDTH)/g' \
-+	      -e 's/@''GNULIB_WMEMCHR''@/$(GL_GNULIB_WMEMCHR)/g' \
-+	      -e 's/@''GNULIB_WMEMCMP''@/$(GL_GNULIB_WMEMCMP)/g' \
-+	      -e 's/@''GNULIB_WMEMCPY''@/$(GL_GNULIB_WMEMCPY)/g' \
-+	      -e 's/@''GNULIB_WMEMMOVE''@/$(GL_GNULIB_WMEMMOVE)/g' \
-+	      -e 's/@''GNULIB_WMEMPCPY''@/$(GL_GNULIB_WMEMPCPY)/g' \
-+	      -e 's/@''GNULIB_WMEMSET''@/$(GL_GNULIB_WMEMSET)/g' \
-+	      -e 's/@''GNULIB_WCSLEN''@/$(GL_GNULIB_WCSLEN)/g' \
-+	      -e 's/@''GNULIB_WCSNLEN''@/$(GL_GNULIB_WCSNLEN)/g' \
-+	      -e 's/@''GNULIB_WCSCPY''@/$(GL_GNULIB_WCSCPY)/g' \
-+	      -e 's/@''GNULIB_WCPCPY''@/$(GL_GNULIB_WCPCPY)/g' \
-+	      -e 's/@''GNULIB_WCSNCPY''@/$(GL_GNULIB_WCSNCPY)/g' \
-+	      -e 's/@''GNULIB_WCPNCPY''@/$(GL_GNULIB_WCPNCPY)/g' \
-+	      -e 's/@''GNULIB_WCSCAT''@/$(GL_GNULIB_WCSCAT)/g' \
-+	      -e 's/@''GNULIB_WCSNCAT''@/$(GL_GNULIB_WCSNCAT)/g' \
-+	      -e 's/@''GNULIB_WCSCMP''@/$(GL_GNULIB_WCSCMP)/g' \
-+	      -e 's/@''GNULIB_WCSNCMP''@/$(GL_GNULIB_WCSNCMP)/g' \
-+	      -e 's/@''GNULIB_WCSCASECMP''@/$(GL_GNULIB_WCSCASECMP)/g' \
-+	      -e 's/@''GNULIB_WCSNCASECMP''@/$(GL_GNULIB_WCSNCASECMP)/g' \
-+	      -e 's/@''GNULIB_WCSCOLL''@/$(GL_GNULIB_WCSCOLL)/g' \
-+	      -e 's/@''GNULIB_WCSXFRM''@/$(GL_GNULIB_WCSXFRM)/g' \
-+	      -e 's/@''GNULIB_WCSDUP''@/$(GL_GNULIB_WCSDUP)/g' \
-+	      -e 's/@''GNULIB_WCSCHR''@/$(GL_GNULIB_WCSCHR)/g' \
-+	      -e 's/@''GNULIB_WCSRCHR''@/$(GL_GNULIB_WCSRCHR)/g' \
-+	      -e 's/@''GNULIB_WCSCSPN''@/$(GL_GNULIB_WCSCSPN)/g' \
-+	      -e 's/@''GNULIB_WCSSPN''@/$(GL_GNULIB_WCSSPN)/g' \
-+	      -e 's/@''GNULIB_WCSPBRK''@/$(GL_GNULIB_WCSPBRK)/g' \
-+	      -e 's/@''GNULIB_WCSSTR''@/$(GL_GNULIB_WCSSTR)/g' \
-+	      -e 's/@''GNULIB_WCSTOK''@/$(GL_GNULIB_WCSTOK)/g' \
-+	      -e 's/@''GNULIB_WCSWIDTH''@/$(GL_GNULIB_WCSWIDTH)/g' \
-+	      -e 's/@''GNULIB_WCSFTIME''@/$(GL_GNULIB_WCSFTIME)/g' \
-+	      -e 's/@''GNULIB_MDA_WCSDUP''@/$(GL_GNULIB_MDA_WCSDUP)/g' \
- 	      < $(srcdir)/wchar.in.h | \
- 	  sed -e 's|@''HAVE_WINT_T''@|$(HAVE_WINT_T)|g' \
- 	      -e 's|@''HAVE_BTOWC''@|$(HAVE_BTOWC)|g' \
-@@ -2222,14 +2338,14 @@ wctype.h: wctype.in.h $(top_builddir)/co
- 	      -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
- 	      -e 's|@''NEXT_WCTYPE_H''@|$(NEXT_WCTYPE_H)|g' \
- 	      -e 's/@''HAVE_CRTDEFS_H''@/$(HAVE_CRTDEFS_H)/g' \
--	      -e 's/@''GNULIB_OVERRIDES_WINT_T''@/$(GNULIB_OVERRIDES_WINT_T)/g' \
--	      -e 's/@''GNULIB_ISWBLANK''@/$(GNULIB_ISWBLANK)/g' \
--	      -e 's/@''GNULIB_ISWDIGIT''@/$(GNULIB_ISWDIGIT)/g' \
--	      -e 's/@''GNULIB_ISWXDIGIT''@/$(GNULIB_ISWXDIGIT)/g' \
--	      -e 's/@''GNULIB_WCTYPE''@/$(GNULIB_WCTYPE)/g' \
--	      -e 's/@''GNULIB_ISWCTYPE''@/$(GNULIB_ISWCTYPE)/g' \
--	      -e 's/@''GNULIB_WCTRANS''@/$(GNULIB_WCTRANS)/g' \
--	      -e 's/@''GNULIB_TOWCTRANS''@/$(GNULIB_TOWCTRANS)/g' \
-+	      -e 's/@''GNULIBHEADERS_OVERRIDE_WINT_T''@/$(GNULIBHEADERS_OVERRIDE_WINT_T)/g' \
-+	      -e 's/@''GNULIB_ISWBLANK''@/$(GL_GNULIB_ISWBLANK)/g' \
-+	      -e 's/@''GNULIB_ISWDIGIT''@/$(GL_GNULIB_ISWDIGIT)/g' \
-+	      -e 's/@''GNULIB_ISWXDIGIT''@/$(GL_GNULIB_ISWXDIGIT)/g' \
-+	      -e 's/@''GNULIB_WCTYPE''@/$(GL_GNULIB_WCTYPE)/g' \
-+	      -e 's/@''GNULIB_ISWCTYPE''@/$(GL_GNULIB_ISWCTYPE)/g' \
-+	      -e 's/@''GNULIB_WCTRANS''@/$(GL_GNULIB_WCTRANS)/g' \
-+	      -e 's/@''GNULIB_TOWCTRANS''@/$(GL_GNULIB_TOWCTRANS)/g' \
- 	      -e 's/@''HAVE_ISWBLANK''@/$(HAVE_ISWBLANK)/g' \
- 	      -e 's/@''HAVE_ISWCNTRL''@/$(HAVE_ISWCNTRL)/g' \
- 	      -e 's/@''HAVE_WCTYPE_T''@/$(HAVE_WCTYPE_T)/g' \
---- a/gnulib/lib/_Noreturn.h
-+++ b/gnulib/lib/_Noreturn.h
-@@ -2,16 +2,16 @@
-    Copyright (C) 2011-2021 Free Software Foundation, Inc.
- 
-    This program is free software: you can redistribute it and/or modify it
--   under the terms of the GNU General Public License as published
--   by the Free Software Foundation; either version 3 of the License, or
-+   under the terms of the GNU Lesser General Public License as published
-+   by the Free Software Foundation; either version 2 of the License, or
-    (at your option) any later version.
- 
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
--   General Public License for more details.
-+   Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
-+   You should have received a copy of the GNU Lesser General Public License
-    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #ifndef _Noreturn
---- a/gnulib/lib/alloca.in.h
-+++ b/gnulib/lib/alloca.in.h
-@@ -3,20 +3,18 @@
-    Copyright (C) 1995, 1999, 2001-2004, 2006-2021 Free Software Foundation,
-    Inc.
- 
--   This program is free software; you can redistribute it and/or modify it
--   under the terms of the GNU General Public License as published
--   by the Free Software Foundation; either version 3, or (at your option)
--   any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
--   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
--   General Public License for more details.
-+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public
--   License along with this program; if not, see
--   <https://www.gnu.org/licenses/>.
--  */
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- /* Avoid using the symbol _ALLOCA_H here, as Bison assumes _ALLOCA_H
-    means there is a real alloca function.  */
---- a/gnulib/lib/arg-nonnull.h
-+++ b/gnulib/lib/arg-nonnull.h
-@@ -2,16 +2,16 @@
-    Copyright (C) 2009-2021 Free Software Foundation, Inc.
- 
-    This program is free software: you can redistribute it and/or modify it
--   under the terms of the GNU General Public License as published
--   by the Free Software Foundation; either version 3 of the License, or
-+   under the terms of the GNU Lesser General Public License as published
-+   by the Free Software Foundation; either version 2 of the License, or
-    (at your option) any later version.
- 
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
--   General Public License for more details.
-+   Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
-+   You should have received a copy of the GNU Lesser General Public License
-    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- /* _GL_ARG_NONNULL((n,...,m)) tells the compiler and static analyzer tools
---- a/gnulib/lib/argz.c
-+++ b/gnulib/lib/argz.c
-@@ -3,18 +3,18 @@
-    Foundation, Inc.
-    This file is part of the GNU C Library.
- 
--   This program is free software; you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3, or (at your option)
--   any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License along
--   with this program; if not, see <https://www.gnu.org/licenses/>.  */
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #include <config.h>
- 
---- a/gnulib/lib/argz.in.h
-+++ b/gnulib/lib/argz.in.h
-@@ -3,17 +3,17 @@
-    Inc.
-    This file is part of the GNU C Library.
- 
--   This program is free software: you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3 of the License, or
--   (at your option) any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
-+   You should have received a copy of the GNU Lesser General Public License
-    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #ifndef _ARGZ_H
---- a/gnulib/lib/asnprintf.c
-+++ b/gnulib/lib/asnprintf.c
-@@ -1,18 +1,18 @@
- /* Formatted output to strings.
-    Copyright (C) 1999, 2002, 2006, 2009-2021 Free Software Foundation, Inc.
- 
--   This program is free software; you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3, or (at your option)
--   any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License along
--   with this program; if not, see <https://www.gnu.org/licenses/>.  */
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #include <config.h>
- 
---- a/gnulib/lib/asprintf.c
-+++ b/gnulib/lib/asprintf.c
-@@ -2,18 +2,18 @@
-    Copyright (C) 1999, 2002, 2006-2007, 2009-2021 Free Software Foundation,
-    Inc.
- 
--   This program is free software; you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3, or (at your option)
--   any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License along
--   with this program; if not, see <https://www.gnu.org/licenses/>.  */
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #include <config.h>
- 
---- a/gnulib/lib/attribute.h
-+++ b/gnulib/lib/attribute.h
-@@ -2,17 +2,17 @@
- 
-    Copyright 2020-2021 Free Software Foundation, Inc.
- 
--   This program is free software: you can redistribute it and/or modify it
--   under the terms of the GNU General Public License as published
--   by the Free Software Foundation; either version 3 of the License, or
--   (at your option) any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
--   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
--   General Public License for more details.
-+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
-+   You should have received a copy of the GNU Lesser General Public License
-    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- /* Written by Paul Eggert.  */
---- a/gnulib/lib/basename-lgpl.c
-+++ b/gnulib/lib/basename-lgpl.c
-@@ -3,17 +3,17 @@
-    Copyright (C) 1990, 1998-2001, 2003-2006, 2009-2021 Free Software
-    Foundation, Inc.
- 
--   This program is free software: you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3 of the License, or
--   (at your option) any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
-+   You should have received a copy of the GNU Lesser General Public License
-    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #include <config.h>
---- a/gnulib/lib/basename-lgpl.h
-+++ b/gnulib/lib/basename-lgpl.h
-@@ -1,20 +1,20 @@
--/*  Extract the last component (base name) of a file name.
-+/* Extract the last component (base name) of a file name.
- 
--    Copyright (C) 1998, 2001, 2003-2006, 2009-2021 Free Software Foundation,
--    Inc.
-+   Copyright (C) 1998, 2001, 2003-2006, 2009-2021 Free Software Foundation,
-+   Inc.
- 
--    This program is free software: you can redistribute it and/or modify
--    it under the terms of the GNU General Public License as published by
--    the Free Software Foundation; either version 3 of the License, or
--    (at your option) any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--    This program is distributed in the hope that it will be useful,
--    but WITHOUT ANY WARRANTY; without even the implied warranty of
--    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--    GNU General Public License for more details.
-+   This file is distributed in the hope that it will be useful,
-+   but WITHOUT ANY WARRANTY; without even the implied warranty of
-+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+   GNU Lesser General Public License for more details.
- 
--    You should have received a copy of the GNU General Public License
--    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #ifndef _BASENAME_LGPL_H
- #define _BASENAME_LGPL_H
---- a/gnulib/lib/btowc.c
-+++ b/gnulib/lib/btowc.c
-@@ -2,17 +2,17 @@
-    Copyright (C) 2008, 2010-2021 Free Software Foundation, Inc.
-    Written by Bruno Haible <bruno@clisp.org>, 2008.
- 
--   This program is free software: you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3 of the License, or
--   (at your option) any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
-+   You should have received a copy of the GNU Lesser General Public License
-    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #include <config.h>
---- a/gnulib/lib/c++defs.h
-+++ b/gnulib/lib/c++defs.h
-@@ -2,16 +2,16 @@
-    Copyright (C) 2010-2021 Free Software Foundation, Inc.
- 
-    This program is free software: you can redistribute it and/or modify it
--   under the terms of the GNU General Public License as published
--   by the Free Software Foundation; either version 3 of the License, or
-+   under the terms of the GNU Lesser General Public License as published
-+   by the Free Software Foundation; either version 2 of the License, or
-    (at your option) any later version.
- 
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
--   General Public License for more details.
-+   Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
-+   You should have received a copy of the GNU Lesser General Public License
-    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #ifndef _GL_CXXDEFS_H
---- /dev/null
-+++ b/gnulib/lib/calloc.c
-@@ -0,0 +1,55 @@
-+/* calloc() function that is glibc compatible.
-+   This wrapper function is required at least on Tru64 UNIX 5.1 and mingw.
-+   Copyright (C) 2004-2007, 2009-2021 Free Software Foundation, Inc.
-+
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
-+
-+   This file is distributed in the hope that it will be useful,
-+   but WITHOUT ANY WARRANTY; without even the implied warranty of
-+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+   GNU Lesser General Public License for more details.
-+
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
-+
-+/* written by Jim Meyering and Bruno Haible */
-+
-+#include <config.h>
-+
-+/* Specification.  */
-+#include <stdlib.h>
-+
-+#include <errno.h>
-+
-+#include "xalloc-oversized.h"
-+
-+/* Call the system's calloc below.  */
-+#undef calloc
-+
-+/* Allocate and zero-fill an NxS-byte block of memory from the heap,
-+   even if N or S is zero.  */
-+
-+void *
-+rpl_calloc (size_t n, size_t s)
-+{
-+  if (n == 0 || s == 0)
-+    n = s = 1;
-+
-+  if (xalloc_oversized (n, s))
-+    {
-+      errno = ENOMEM;
-+      return NULL;
-+    }
-+
-+  void *result = calloc (n, s);
-+
-+#if !HAVE_MALLOC_POSIX
-+  if (result == NULL)
-+    errno = ENOMEM;
-+#endif
-+
-+  return result;
-+}
---- a/gnulib/lib/cdefs.h
-+++ b/gnulib/lib/cdefs.h
-@@ -2,16 +2,16 @@
-    This file is part of the GNU C Library.
- 
-    The GNU C Library is free software; you can redistribute it and/or
--   modify it under the terms of the GNU General Public
-+   modify it under the terms of the GNU Lesser General Public
-    License as published by the Free Software Foundation; either
--   version 3 of the License, or (at your option) any later version.
-+   version 2.1 of the License, or (at your option) any later version.
- 
-    The GNU C Library is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
--   General Public License for more details.
-+   Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public
-+   You should have received a copy of the GNU Lesser General Public
-    License along with the GNU C Library; if not, see
-    <https://www.gnu.org/licenses/>.  */
- 
-@@ -259,10 +259,12 @@
- # define __attribute_const__ /* Ignore */
- #endif
- 
--#if defined __STDC_VERSION__ && 201710L < __STDC_VERSION__
--# define __attribute_maybe_unused__ [[__maybe_unused__]]
--#elif __GNUC_PREREQ (2,7) || __glibc_has_attribute (__unused__)
-+#if __GNUC_PREREQ (2,7) || __glibc_has_attribute (__unused__)
- # define __attribute_maybe_unused__ __attribute__ ((__unused__))
-+/* Once the next version of the C standard comes out, we can
-+   do something like the following here:
-+   #elif defined __STDC_VERSION__ && 202???L <= __STDC_VERSION__
-+   # define __attribute_maybe_unused__ [[__maybe_unused__]]   */
- #else
- # define __attribute_maybe_unused__ /* Ignore */
- #endif
-@@ -320,7 +322,9 @@
- #endif
- 
- /* The nonnull function attribute marks pointer parameters that
--   must not be NULL.  */
-+   must not be NULL.  This has the name __nonnull in glibc,
-+   and __attribute_nonnull__ in files shared with Gnulib to avoid
-+   collision with a different __nonnull in DragonFlyBSD 5.9.  */
- #ifndef __attribute_nonnull__
- # if __GNUC_PREREQ (3,3) || __glibc_has_attribute (__nonnull__)
- #  define __attribute_nonnull__(params) __attribute__ ((__nonnull__ params))
-@@ -485,9 +489,9 @@
-       [!!sizeof (struct { int __error_if_negative: (expr) ? 2 : -1; })]
- #endif
- 
--/* The #ifndef lets Gnulib avoid including these on non-glibc
--   platforms, where the includes typically do not exist.  */
--#ifndef __WORDSIZE
-+/* Gnulib avoids including these, as they don't work on non-glibc or
-+   older glibc platforms.  */
-+#ifndef __GNULIB_CDEFS
- # include <bits/wordsize.h>
- # include <bits/long-double.h>
- #endif
---- a/gnulib/lib/cloexec.c
-+++ b/gnulib/lib/cloexec.c
-@@ -2,20 +2,20 @@
- 
-    Copyright (C) 1991, 2004-2006, 2009-2021 Free Software Foundation, Inc.
- 
--   This program is free software: you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3 of the License, or
--   (at your option) any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
--   along with this program.  If not, see <https://www.gnu.org/licenses/>.
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
--   The code is taken from glibc/manual/llio.texi  */
-+/* The code is taken from glibc/manual/llio.texi  */
- 
- #include <config.h>
- 
---- a/gnulib/lib/cloexec.h
-+++ b/gnulib/lib/cloexec.h
-@@ -2,20 +2,18 @@
- 
-    Copyright (C) 2004, 2009-2021 Free Software Foundation, Inc.
- 
--   This program is free software: you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3 of the License, or
--   (at your option) any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
--   along with this program.  If not, see <https://www.gnu.org/licenses/>.
--
--*/
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #include <stdbool.h>
- 
---- a/gnulib/lib/close.c
-+++ b/gnulib/lib/close.c
-@@ -1,17 +1,17 @@
- /* close replacement.
-    Copyright (C) 2008-2021 Free Software Foundation, Inc.
- 
--   This program is free software: you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3 of the License, or
--   (at your option) any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
-+   You should have received a copy of the GNU Lesser General Public License
-    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #include <config.h>
---- a/gnulib/lib/dup2.c
-+++ b/gnulib/lib/dup2.c
-@@ -2,17 +2,17 @@
- 
-    Copyright (C) 1999, 2004-2007, 2009-2021 Free Software Foundation, Inc.
- 
--   This program is free software: you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3 of the License, or
--   (at your option) any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
-+   You should have received a copy of the GNU Lesser General Public License
-    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- /* written by Paul Eggert */
---- a/gnulib/lib/dynarray.h
-+++ b/gnulib/lib/dynarray.h
-@@ -1,17 +1,17 @@
- /* Type-safe arrays which grow dynamically.
-    Copyright 2021 Free Software Foundation, Inc.
- 
--   This program is free software: you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3 of the License, or
--   (at your option) any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
-+   You should have received a copy of the GNU Lesser General Public License
-    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- /* Written by Paul Eggert and Bruno Haible, 2021.  */
-@@ -257,18 +257,22 @@ static DYNARRAY_ELEMENT *
- 
- #if defined DYNARRAY_STRUCT || defined DYNARRAY_ELEMENT || defined DYNARRAY_PREFIX
- 
--# include <libc-config.h>
-+# ifndef _GL_LIKELY
-+/* Rely on __builtin_expect, as provided by the module 'builtin-expect'.  */
-+#  define _GL_LIKELY(cond) __builtin_expect ((cond), 1)
-+#  define _GL_UNLIKELY(cond) __builtin_expect ((cond), 0)
-+# endif
- 
- /* Define auxiliary structs and declare auxiliary functions, common to all
-    instantiations of dynarray.  */
--# include <malloc/dynarray.h>
-+# include <malloc/dynarray.gl.h>
- 
- /* Define the instantiation, specified through
-      DYNARRAY_STRUCT
-      DYNARRAY_ELEMENT
-      DYNARRAY_PREFIX
-    etc.  */
--# include <malloc/dynarray-skeleton.c>
-+# include <malloc/dynarray-skeleton.gl.h>
- 
- #else
- 
---- a/gnulib/lib/errno.in.h
-+++ b/gnulib/lib/errno.in.h
-@@ -2,18 +2,18 @@
- 
-    Copyright (C) 2008-2021 Free Software Foundation, Inc.
- 
--   This program is free software; you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3, or (at your option)
--   any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
--   along with this program; if not, see <https://www.gnu.org/licenses/>.  */
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #ifndef _@GUARD_PREFIX@_ERRNO_H
- 
---- a/gnulib/lib/error.c
-+++ b/gnulib/lib/error.c
-@@ -2,17 +2,17 @@
-    Copyright (C) 1990-1998, 2000-2007, 2009-2021 Free Software Foundation, Inc.
-    This file is part of the GNU C Library.
- 
--   This program is free software: you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3 of the License, or
--   (at your option) any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
-+   You should have received a copy of the GNU Lesser General Public License
-    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- /* Written by David MacKenzie <djm@gnu.ai.mit.edu>.  */
---- a/gnulib/lib/error.h
-+++ b/gnulib/lib/error.h
-@@ -3,17 +3,17 @@
-    Inc.
-    This file is part of the GNU C Library.
- 
--   This program is free software: you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3 of the License, or
--   (at your option) any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
-+   You should have received a copy of the GNU Lesser General Public License
-    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #ifndef _ERROR_H
---- a/gnulib/lib/exitfail.c
-+++ b/gnulib/lib/exitfail.c
-@@ -2,17 +2,17 @@
- 
-    Copyright (C) 2002-2003, 2005-2007, 2009-2021 Free Software Foundation, Inc.
- 
--   This program is free software: you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3 of the License, or
--   (at your option) any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
-+   You should have received a copy of the GNU Lesser General Public License
-    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #include <config.h>
---- a/gnulib/lib/exitfail.h
-+++ b/gnulib/lib/exitfail.h
-@@ -2,17 +2,17 @@
- 
-    Copyright (C) 2002, 2009-2021 Free Software Foundation, Inc.
- 
--   This program is free software: you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3 of the License, or
--   (at your option) any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
-+   You should have received a copy of the GNU Lesser General Public License
-    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- extern int volatile exit_failure;
---- a/gnulib/lib/fcntl.c
-+++ b/gnulib/lib/fcntl.c
-@@ -2,17 +2,17 @@
- 
-    Copyright (C) 2009-2021 Free Software Foundation, Inc.
- 
--   This program is free software: you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3 of the License, or
--   (at your option) any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
-+   You should have received a copy of the GNU Lesser General Public License
-    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- /* Written by Eric Blake <ebb9@byu.net>.  */
---- a/gnulib/lib/fcntl.in.h
-+++ b/gnulib/lib/fcntl.in.h
-@@ -2,17 +2,17 @@
- 
-    Copyright (C) 2006-2021 Free Software Foundation, Inc.
- 
--   This program is free software: you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3 of the License, or
--   (at your option) any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
-+   You should have received a copy of the GNU Lesser General Public License
-    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- /* written by Paul Eggert */
---- a/gnulib/lib/fd-hook.c
-+++ b/gnulib/lib/fd-hook.c
-@@ -2,17 +2,17 @@
-    Copyright (C) 2009-2021 Free Software Foundation, Inc.
-    Written by Bruno Haible <bruno@clisp.org>, 2009.
- 
--   This program is free software: you can redistribute it and/or modify it
--   under the terms of the GNU General Public License as published
--   by the Free Software Foundation; either version 3 of the License, or
--   (at your option) any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
--   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
--   General Public License for more details.
-+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
-+   You should have received a copy of the GNU Lesser General Public License
-    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #include <config.h>
---- a/gnulib/lib/fd-hook.h
-+++ b/gnulib/lib/fd-hook.h
-@@ -1,17 +1,17 @@
- /* Hook for making file descriptor functions close(), ioctl() extensible.
-    Copyright (C) 2009-2021 Free Software Foundation, Inc.
- 
--   This program is free software: you can redistribute it and/or modify it
--   under the terms of the GNU General Public License as published
--   by the Free Software Foundation; either version 3 of the License, or
--   (at your option) any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
--   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
--   General Public License for more details.
-+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
-+   You should have received a copy of the GNU Lesser General Public License
-    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- 
---- a/gnulib/lib/filename.h
-+++ b/gnulib/lib/filename.h
-@@ -3,16 +3,16 @@
-    This file is part of the GNU C Library.
- 
-    The GNU C Library is free software; you can redistribute it and/or
--   modify it under the terms of the GNU General Public
-+   modify it under the terms of the GNU Lesser General Public
-    License as published by the Free Software Foundation; either
--   version 3 of the License, or (at your option) any later version.
-+   version 2.1 of the License, or (at your option) any later version.
- 
-    The GNU C Library is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
--   General Public License for more details.
-+   Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public
-+   You should have received a copy of the GNU Lesser General Public
-    License along with the GNU C Library; if not, see
-    <https://www.gnu.org/licenses/>.  */
- 
---- a/gnulib/lib/float+.h
-+++ b/gnulib/lib/float+.h
-@@ -2,18 +2,18 @@
-    Copyright (C) 2007, 2009-2021 Free Software Foundation, Inc.
-    Written by Bruno Haible <bruno@clisp.org>, 2007.
- 
--   This program is free software; you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3, or (at your option)
--   any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
--   along with this program; if not, see <https://www.gnu.org/licenses/>.  */
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #ifndef _FLOATPLUS_H
- #define _FLOATPLUS_H
---- a/gnulib/lib/float.c
-+++ b/gnulib/lib/float.c
-@@ -2,17 +2,17 @@
-    Copyright (C) 2011-2021 Free Software Foundation, Inc.
-    Written by Bruno Haible <bruno@clisp.org>, 2011.
- 
--   This program is free software: you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3 of the License, or
--   (at your option) any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
-+   You should have received a copy of the GNU Lesser General Public License
-    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #include <config.h>
---- a/gnulib/lib/float.in.h
-+++ b/gnulib/lib/float.in.h
-@@ -2,17 +2,17 @@
- 
-    Copyright (C) 2007-2021 Free Software Foundation, Inc.
- 
--   This program is free software: you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3 of the License, or
--   (at your option) any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
-+   You should have received a copy of the GNU Lesser General Public License
-    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #ifndef _@GUARD_PREFIX@_FLOAT_H
---- /dev/null
-+++ b/gnulib/lib/free.c
-@@ -0,0 +1,53 @@
-+/* Make free() preserve errno.
-+
-+   Copyright (C) 2003, 2006, 2009-2021 Free Software Foundation, Inc.
-+
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
-+
-+   This file is distributed in the hope that it will be useful,
-+   but WITHOUT ANY WARRANTY; without even the implied warranty of
-+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+   GNU Lesser General Public License for more details.
-+
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
-+
-+/* written by Paul Eggert */
-+
-+#include <config.h>
-+
-+/* Specification.  */
-+#include <stdlib.h>
-+
-+/* A function definition is only needed if HAVE_FREE_POSIX is not defined.  */
-+#if !HAVE_FREE_POSIX
-+
-+# include <errno.h>
-+
-+void
-+rpl_free (void *p)
-+# undef free
-+{
-+# if defined __GNUC__ && !defined __clang__
-+  /* An invalid GCC optimization
-+     <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98396>
-+     would optimize away the assignments in the code below, when link-time
-+     optimization (LTO) is enabled.  Make the code more complicated, so that
-+     GCC does not grok how to optimize it.  */
-+  int err[2];
-+  err[0] = errno;
-+  err[1] = errno;
-+  errno = 0;
-+  free (p);
-+  errno = err[errno == 0];
-+# else
-+  int err = errno;
-+  free (p);
-+  errno = err;
-+# endif
-+}
-+
-+#endif
---- a/gnulib/lib/fstat.c
-+++ b/gnulib/lib/fstat.c
-@@ -1,17 +1,17 @@
- /* fstat() replacement.
-    Copyright (C) 2011-2021 Free Software Foundation, Inc.
- 
--   This program is free software: you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3 of the License, or
--   (at your option) any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
-+   You should have received a copy of the GNU Lesser General Public License
-    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- /* If the user's config.h happens to include <sys/stat.h>, let it include only
---- a/gnulib/lib/getdtablesize.c
-+++ b/gnulib/lib/getdtablesize.c
-@@ -2,17 +2,17 @@
-    Copyright (C) 2008-2021 Free Software Foundation, Inc.
-    Written by Bruno Haible <bruno@clisp.org>, 2008.
- 
--   This program is free software: you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3 of the License, or
--   (at your option) any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
-+   You should have received a copy of the GNU Lesser General Public License
-    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #include <config.h>
---- a/gnulib/lib/getopt-cdefs.in.h
-+++ b/gnulib/lib/getopt-cdefs.in.h
-@@ -4,19 +4,18 @@
-    Unlike most of the getopt implementation, it is NOT shared
-    with the GNU C Library.
- 
--   This file is free software; you can redistribute it and/or modify it
--   under the terms of the GNU General Public License as
--   published by the Free Software Foundation; either version 3 of
--   the License, or (at your option) any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This file is distributed in the hope that it will be useful, but
--   WITHOUT ANY WARRANTY; without even the implied warranty of
--   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
--   General Public License for more details.
-+   This file is distributed in the hope that it will be useful,
-+   but WITHOUT ANY WARRANTY; without even the implied warranty of
-+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public
--   License along with gnulib; if not, see
--   <https://www.gnu.org/licenses/>.  */
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #ifndef _GETOPT_CDEFS_H
- #define _GETOPT_CDEFS_H 1
---- a/gnulib/lib/getopt-core.h
-+++ b/gnulib/lib/getopt-core.h
-@@ -4,16 +4,16 @@
-    Patches to this file should be submitted to both projects.
- 
-    The GNU C Library is free software; you can redistribute it and/or
--   modify it under the terms of the GNU General Public
-+   modify it under the terms of the GNU Lesser General Public
-    License as published by the Free Software Foundation; either
--   version 3 of the License, or (at your option) any later version.
-+   version 2.1 of the License, or (at your option) any later version.
- 
-    The GNU C Library is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
--   General Public License for more details.
-+   Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public
-+   You should have received a copy of the GNU Lesser General Public
-    License along with the GNU C Library; if not, see
-    <https://www.gnu.org/licenses/>.  */
- 
---- a/gnulib/lib/getopt-ext.h
-+++ b/gnulib/lib/getopt-ext.h
-@@ -4,16 +4,16 @@
-    Patches to this file should be submitted to both projects.
- 
-    The GNU C Library is free software; you can redistribute it and/or
--   modify it under the terms of the GNU General Public
-+   modify it under the terms of the GNU Lesser General Public
-    License as published by the Free Software Foundation; either
--   version 3 of the License, or (at your option) any later version.
-+   version 2.1 of the License, or (at your option) any later version.
- 
-    The GNU C Library is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
--   General Public License for more details.
-+   Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public
-+   You should have received a copy of the GNU Lesser General Public
-    License along with the GNU C Library; if not, see
-    <https://www.gnu.org/licenses/>.  */
- 
---- a/gnulib/lib/getopt-pfx-core.h
-+++ b/gnulib/lib/getopt-pfx-core.h
-@@ -4,19 +4,18 @@
-    Unlike most of the getopt implementation, it is NOT shared
-    with the GNU C Library.
- 
--   This file is free software; you can redistribute it and/or modify it
--   under the terms of the GNU General Public License as
--   published by the Free Software Foundation; either version 3 of
--   the License, or (at your option) any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This file is distributed in the hope that it will be useful, but
--   WITHOUT ANY WARRANTY; without even the implied warranty of
--   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
--   General Public License for more details.
-+   This file is distributed in the hope that it will be useful,
-+   but WITHOUT ANY WARRANTY; without even the implied warranty of
-+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public
--   License along with gnulib; if not, see
--   <https://www.gnu.org/licenses/>.  */
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #ifndef _GETOPT_PFX_CORE_H
- #define _GETOPT_PFX_CORE_H 1
---- a/gnulib/lib/getopt-pfx-ext.h
-+++ b/gnulib/lib/getopt-pfx-ext.h
-@@ -4,19 +4,18 @@
-    Unlike most of the getopt implementation, it is NOT shared
-    with the GNU C Library.
- 
--   This file is free software; you can redistribute it and/or modify it
--   under the terms of the GNU General Public License as
--   published by the Free Software Foundation; either version 3 of
--   the License, or (at your option) any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This file is distributed in the hope that it will be useful, but
--   WITHOUT ANY WARRANTY; without even the implied warranty of
--   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
--   General Public License for more details.
-+   This file is distributed in the hope that it will be useful,
-+   but WITHOUT ANY WARRANTY; without even the implied warranty of
-+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public
--   License along with gnulib; if not, see
--   <https://www.gnu.org/licenses/>.  */
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #ifndef _GETOPT_PFX_EXT_H
- #define _GETOPT_PFX_EXT_H 1
---- a/gnulib/lib/getopt.c
-+++ b/gnulib/lib/getopt.c
-@@ -4,16 +4,16 @@
-    Patches to this file should be submitted to both projects.
- 
-    The GNU C Library is free software; you can redistribute it and/or
--   modify it under the terms of the GNU General Public
-+   modify it under the terms of the GNU Lesser General Public
-    License as published by the Free Software Foundation; either
--   version 3 of the License, or (at your option) any later version.
-+   version 2.1 of the License, or (at your option) any later version.
- 
-    The GNU C Library is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
--   General Public License for more details.
-+   Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public
-+   You should have received a copy of the GNU Lesser General Public
-    License along with the GNU C Library; if not, see
-    <https://www.gnu.org/licenses/>.  */
- 
---- a/gnulib/lib/getopt.in.h
-+++ b/gnulib/lib/getopt.in.h
-@@ -5,18 +5,18 @@
-    with the GNU C Library, which supplies a different version of
-    this file.
- 
--   This file is free software; you can redistribute it and/or modify it
--   under the terms of the GNU General Public License as
--   published by the Free Software Foundation; either version 3 of
--   the License, or (at your option) any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This file is distributed in the hope that it will be useful, but
--   WITHOUT ANY WARRANTY; without even the implied warranty of
--   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
--   General Public License for more details.
-+   This file is distributed in the hope that it will be useful,
-+   but WITHOUT ANY WARRANTY; without even the implied warranty of
-+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public
--   License along with gnulib; if not, see <https://www.gnu.org/licenses/>.  */
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #ifndef _@GUARD_PREFIX@_GETOPT_H
- 
---- a/gnulib/lib/getopt1.c
-+++ b/gnulib/lib/getopt1.c
-@@ -4,16 +4,16 @@
-    Patches to this file should be submitted to both projects.
- 
-    The GNU C Library is free software; you can redistribute it and/or
--   modify it under the terms of the GNU General Public
-+   modify it under the terms of the GNU Lesser General Public
-    License as published by the Free Software Foundation; either
--   version 3 of the License, or (at your option) any later version.
-+   version 2.1 of the License, or (at your option) any later version.
- 
-    The GNU C Library is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
--   General Public License for more details.
-+   Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public
-+   You should have received a copy of the GNU Lesser General Public
-    License along with the GNU C Library; if not, see
-    <https://www.gnu.org/licenses/>.  */
- 
---- a/gnulib/lib/getopt_int.h
-+++ b/gnulib/lib/getopt_int.h
-@@ -4,16 +4,16 @@
-    Patches to this file should be submitted to both projects.
- 
-    The GNU C Library is free software; you can redistribute it and/or
--   modify it under the terms of the GNU General Public
-+   modify it under the terms of the GNU Lesser General Public
-    License as published by the Free Software Foundation; either
--   version 3 of the License, or (at your option) any later version.
-+   version 2.1 of the License, or (at your option) any later version.
- 
-    The GNU C Library is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
--   General Public License for more details.
-+   Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public
-+   You should have received a copy of the GNU Lesser General Public
-    License along with the GNU C Library; if not, see
-    <https://www.gnu.org/licenses/>.  */
- 
---- a/gnulib/lib/getprogname.c
-+++ b/gnulib/lib/getprogname.c
-@@ -2,16 +2,16 @@
-    Copyright (C) 2016-2021 Free Software Foundation, Inc.
- 
-    This program is free software: you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3 of the License, or
-+   it under the terms of the GNU Lesser General Public License as published by
-+   the Free Software Foundation; either version 2.1 of the License, or
-    (at your option) any later version.
- 
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
-+   You should have received a copy of the GNU Lesser General Public License
-    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #include <config.h>
-@@ -43,7 +43,7 @@
- # include <string.h>
- #endif
- 
--#ifdef __sgi
-+#if defined __sgi || defined __osf__
- # include <string.h>
- # include <unistd.h>
- # include <stdio.h>
-@@ -224,11 +224,15 @@ getprogname (void)
-       free (buf.ps_pathptr);
-     }
-   return p;
--# elif defined __sgi                                        /* IRIX */
-+# elif defined __sgi || defined __osf__                     /* IRIX or Tru64 */
-   char filename[50];
-   int fd;
- 
--  sprintf (filename, "/proc/pinfo/%d", (int) getpid ());
-+  # if defined __sgi
-+    sprintf (filename, "/proc/pinfo/%d", (int) getpid ());
-+  # else
-+    sprintf (filename, "/proc/%d", (int) getpid ());
-+  # endif
-   fd = open (filename, O_RDONLY | O_CLOEXEC);
-   if (0 <= fd)
-     {
---- a/gnulib/lib/getprogname.h
-+++ b/gnulib/lib/getprogname.h
-@@ -2,16 +2,16 @@
-    Copyright (C) 2016-2021 Free Software Foundation, Inc.
- 
-    This program is free software: you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3 of the License, or
-+   it under the terms of the GNU Lesser General Public License as published by
-+   the Free Software Foundation; either version 2.1 of the License, or
-    (at your option) any later version.
- 
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
-+   You should have received a copy of the GNU Lesser General Public License
-    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #ifndef _GL_GETPROGNAME_H
---- a/gnulib/lib/gettext.h
-+++ b/gnulib/lib/gettext.h
-@@ -2,18 +2,18 @@
-    Copyright (C) 1995-1998, 2000-2002, 2004-2006, 2009-2021 Free Software
-    Foundation, Inc.
- 
--   This program is free software; you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3, or (at your option)
--   any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License along
--   with this program; if not, see <https://www.gnu.org/licenses/>.  */
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #ifndef _LIBGETTEXT_H
- #define _LIBGETTEXT_H 1
---- a/gnulib/lib/glthread/lock.c
-+++ b/gnulib/lib/glthread/lock.c
-@@ -1,18 +1,18 @@
- /* Locking in multithreaded situations.
-    Copyright (C) 2005-2021 Free Software Foundation, Inc.
- 
--   This program is free software; you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3, or (at your option)
--   any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
--   along with this program; if not, see <https://www.gnu.org/licenses/>.  */
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- /* Written by Bruno Haible <bruno@clisp.org>, 2005.
-    Based on GCC's gthr-posix.h, gthr-posix95.h.  */
---- a/gnulib/lib/glthread/lock.h
-+++ b/gnulib/lib/glthread/lock.h
-@@ -1,18 +1,18 @@
- /* Locking in multithreaded situations.
-    Copyright (C) 2005-2021 Free Software Foundation, Inc.
- 
--   This program is free software; you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3, or (at your option)
--   any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
--   along with this program; if not, see <https://www.gnu.org/licenses/>.  */
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- /* Written by Bruno Haible <bruno@clisp.org>, 2005.
-    Based on GCC's gthr-posix.h, gthr-posix95.h, gthr-win32.h.  */
---- a/gnulib/lib/glthread/threadlib.c
-+++ b/gnulib/lib/glthread/threadlib.c
-@@ -1,18 +1,18 @@
- /* Multithreading primitives.
-    Copyright (C) 2005-2021 Free Software Foundation, Inc.
- 
--   This program is free software; you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3, or (at your option)
--   any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
--   along with this program; if not, see <https://www.gnu.org/licenses/>.  */
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- /* Written by Bruno Haible <bruno@clisp.org>, 2005.  */
- 
---- a/gnulib/lib/hard-locale.c
-+++ b/gnulib/lib/hard-locale.c
-@@ -3,17 +3,17 @@
-    Copyright (C) 1997-1999, 2002-2004, 2006-2007, 2009-2021 Free Software
-    Foundation, Inc.
- 
--   This program is free software: you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3 of the License, or
--   (at your option) any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
-+   You should have received a copy of the GNU Lesser General Public License
-    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #include <config.h>
---- a/gnulib/lib/hard-locale.h
-+++ b/gnulib/lib/hard-locale.h
-@@ -2,17 +2,17 @@
- 
-    Copyright (C) 1999, 2003-2004, 2009-2021 Free Software Foundation, Inc.
- 
--   This program is free software: you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3 of the License, or
--   (at your option) any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
-+   You should have received a copy of the GNU Lesser General Public License
-    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #ifndef HARD_LOCALE_H_
---- /dev/null
-+++ b/gnulib/lib/ialloc.c
-@@ -0,0 +1,21 @@
-+/* malloc with idx_t rather than size_t
-+
-+   Copyright 2021 Free Software Foundation, Inc.
-+
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 3 of the
-+   License, or (at your option) any later version.
-+
-+   This file is distributed in the hope that it will be useful,
-+   but WITHOUT ANY WARRANTY; without even the implied warranty of
-+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+   GNU Lesser General Public License for more details.
-+
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
-+
-+#include <config.h>
-+
-+#define IALLOC_INLINE _GL_EXTERN_INLINE
-+#include "ialloc.h"
---- /dev/null
-+++ b/gnulib/lib/ialloc.h
-@@ -0,0 +1,94 @@
-+/* ialloc.h -- malloc with idx_t rather than size_t
-+
-+   Copyright 2021 Free Software Foundation, Inc.
-+
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 3 of the
-+   License, or (at your option) any later version.
-+
-+   This file is distributed in the hope that it will be useful,
-+   but WITHOUT ANY WARRANTY; without even the implied warranty of
-+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+   GNU Lesser General Public License for more details.
-+
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
-+
-+#ifndef IALLOC_H_
-+#define IALLOC_H_
-+
-+#include "idx.h"
-+
-+#include <errno.h>
-+#include <stdint.h>
-+#include <stdlib.h>
-+
-+#ifndef _GL_INLINE_HEADER_BEGIN
-+ #error "Please include config.h first."
-+#endif
-+_GL_INLINE_HEADER_BEGIN
-+#ifndef IALLOC_INLINE
-+# define IALLOC_INLINE _GL_INLINE
-+#endif
-+
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
-+
-+IALLOC_INLINE void * _GL_ATTRIBUTE_COLD
-+_gl_alloc_nomem (void)
-+{
-+  errno = ENOMEM;
-+  return NULL;
-+}
-+
-+IALLOC_INLINE void *
-+imalloc (idx_t s)
-+{
-+  return s <= SIZE_MAX ? malloc (s) : _gl_alloc_nomem ();
-+}
-+
-+IALLOC_INLINE void *
-+irealloc (void *p, idx_t s)
-+{
-+  /* Work around GNU realloc glitch by treating a zero size as if it
-+     were 1, so that returning NULL is equivalent to failing.  */
-+  return s <= SIZE_MAX ? realloc (p, s | !s) : _gl_alloc_nomem ();
-+}
-+
-+IALLOC_INLINE void *
-+icalloc (idx_t n, idx_t s)
-+{
-+  if (SIZE_MAX < n)
-+    {
-+      if (s != 0)
-+        return _gl_alloc_nomem ();
-+      n = 0;
-+    }
-+  if (SIZE_MAX < s)
-+    {
-+      if (n != 0)
-+        return _gl_alloc_nomem ();
-+      s = 0;
-+    }
-+  return calloc (n, s);
-+}
-+
-+IALLOC_INLINE void *
-+ireallocarray (void *p, idx_t n, idx_t s)
-+{
-+  /* Work around GNU reallocarray glitch by treating a zero size as if
-+     it were 1, so that returning NULL is equivalent to failing.  */
-+  if (n == 0 || s == 0)
-+    n = s = 1;
-+  return (n <= SIZE_MAX && s <= SIZE_MAX
-+          ? reallocarray (p, n, s)
-+          : _gl_alloc_nomem ());
-+}
-+
-+#ifdef __cplusplus
-+}
-+#endif
-+
-+#endif
---- /dev/null
-+++ b/gnulib/lib/idx.h
-@@ -0,0 +1,114 @@
-+/* A type for indices and sizes.
-+   Copyright (C) 2020-2021 Free Software Foundation, Inc.
-+   This file is part of the GNU C Library.
-+
-+   The GNU C Library is free software; you can redistribute it and/or
-+   modify it under the terms of the GNU Lesser General Public
-+   License as published by the Free Software Foundation; either
-+   version 2.1 of the License, or (at your option) any later version.
-+
-+   The GNU C Library is distributed in the hope that it will be useful,
-+   but WITHOUT ANY WARRANTY; without even the implied warranty of
-+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-+   Lesser General Public License for more details.
-+
-+   You should have received a copy of the GNU Lesser General Public
-+   License along with the GNU C Library; if not, see
-+   <https://www.gnu.org/licenses/>.  */
-+
-+#ifndef _IDX_H
-+#define _IDX_H
-+
-+/* Get ptrdiff_t.  */
-+#include <stddef.h>
-+
-+/* Get PTRDIFF_MAX.  */
-+#include <stdint.h>
-+
-+/* The type 'idx_t' holds an (array) index or an (object) size.
-+   Its implementation promotes to a signed integer type,
-+   which can hold the values
-+     0..2^63-1 (on 64-bit platforms) or
-+     0..2^31-1 (on 32-bit platforms).
-+
-+   Why a signed integer type?
-+
-+     * Security: Signed types can be checked for overflow via
-+       '-fsanitize=undefined', but unsigned types cannot.
-+
-+     * Comparisons without surprises: ISO C99 § 6.3.1.8 specifies a few
-+       surprising results for comparisons, such as
-+
-+           (int) -3 < (unsigned long) 7  =>  false
-+           (int) -3 < (unsigned int) 7   =>  false
-+       and on 32-bit machines:
-+           (long) -3 < (unsigned int) 7  =>  false
-+
-+       This is surprising because the natural comparison order is by
-+       value in the realm of infinite-precision signed integers (ℤ).
-+
-+       The best way to get rid of such surprises is to use signed types
-+       for numerical integer values, and use unsigned types only for
-+       bit masks and enums.
-+
-+   Why not use 'size_t' directly?
-+
-+     * Because 'size_t' is an unsigned type, and a signed type is better.
-+       See above.
-+
-+   Why not use 'ptrdiff_t' directly?
-+
-+     * Maintainability: When reading and modifying code, it helps to know that
-+       a certain variable cannot have negative values.  For example, when you
-+       have a loop
-+
-+         int n = ...;
-+         for (int i = 0; i < n; i++) ...
-+
-+       or
-+
-+         ptrdiff_t n = ...;
-+         for (ptrdiff_t i = 0; i < n; i++) ...
-+
-+       you have to ask yourself "what if n < 0?".  Whereas in
-+
-+         idx_t n = ...;
-+         for (idx_t i = 0; i < n; i++) ...
-+
-+       you know that this case cannot happen.
-+
-+       Similarly, when a programmer writes
-+
-+         idx_t = ptr2 - ptr1;
-+
-+       there is an implied assertion that ptr1 and ptr2 point into the same
-+       object and that ptr1 <= ptr2.
-+
-+     * Being future-proof: In the future, range types (integers which are
-+       constrained to a certain range of values) may be added to C compilers
-+       or to the C standard.  Several programming languages (Ada, Haskell,
-+       Common Lisp, Pascal) already have range types.  Such range types may
-+       help producing good code and good warnings.  The type 'idx_t' could
-+       then be typedef'ed to a range type that is signed after promotion.  */
-+
-+/* In the future, idx_t could be typedef'ed to a signed range type.
-+   The clang "extended integer types", supported in Clang 11 or newer
-+   <https://clang.llvm.org/docs/LanguageExtensions.html#extended-integer-types>,
-+   are a special case of range types.  However, these types don't support binary
-+   operators with plain integer types (e.g. expressions such as x > 1).
-+   Therefore, they don't behave like signed types (and not like unsigned types
-+   either).  So, we cannot use them here.  */
-+
-+/* Use the signed type 'ptrdiff_t'.  */
-+/* Note: ISO C does not mandate that 'size_t' and 'ptrdiff_t' have the same
-+   size, but it is so on all platforms we have seen since 1990.  */
-+typedef ptrdiff_t idx_t;
-+
-+/* IDX_MAX is the maximum value of an idx_t.  */
-+#define IDX_MAX PTRDIFF_MAX
-+
-+/* So far no need has been found for an IDX_WIDTH macro.
-+   Perhaps there should be another macro IDX_VALUE_BITS that does not
-+   count the sign bit and is therefore one less than PTRDIFF_WIDTH.  */
-+
-+#endif /* _IDX_H */
---- a/gnulib/lib/intprops.h
-+++ b/gnulib/lib/intprops.h
-@@ -3,16 +3,16 @@
-    Copyright (C) 2001-2021 Free Software Foundation, Inc.
- 
-    This program is free software: you can redistribute it and/or modify it
--   under the terms of the GNU General Public License as published
--   by the Free Software Foundation; either version 3 of the License, or
-+   under the terms of the GNU Lesser General Public License as published
-+   by the Free Software Foundation; either version 2.1 of the License, or
-    (at your option) any later version.
- 
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
-+   You should have received a copy of the GNU Lesser General Public License
-    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- /* Written by Paul Eggert.  */
-@@ -133,7 +133,8 @@
-    operators might not yield numerically correct answers due to
-    arithmetic overflow.  They do not rely on undefined or
-    implementation-defined behavior.  Their implementations are simple
--   and straightforward, but they are a bit harder to use than the
-+   and straightforward, but they are harder to use and may be less
-+   efficient than the INT_<op>_WRAPV, INT_<op>_OK, and
-    INT_<op>_OVERFLOW macros described below.
- 
-    Example usage:
-@@ -158,6 +159,9 @@
-    must have minimum value MIN and maximum MAX.  Unsigned types should
-    use a zero MIN of the proper type.
- 
-+   Because all arguments are subject to integer promotions, these
-+   macros typically do not work on types narrower than 'int'.
-+
-    These macros are tuned for constant MIN and MAX.  For commutative
-    operations such as A + B, they are also tuned for constant B.  */
- 
-@@ -339,9 +343,15 @@
-    arguments should not have side effects.
- 
-    The WRAPV macros are not constant expressions.  They support only
--   +, binary -, and *.  Because the WRAPV macros convert the result,
--   they report overflow in different circumstances than the OVERFLOW
--   macros do.
-+   +, binary -, and *.
-+
-+   Because the WRAPV macros convert the result, they report overflow
-+   in different circumstances than the OVERFLOW macros do.  For
-+   example, in the typical case with 16-bit 'short' and 32-bit 'int',
-+   if A, B and R are all of type 'short' then INT_ADD_OVERFLOW (A, B)
-+   returns false because the addition cannot overflow after A and B
-+   are converted to 'int', whereas INT_ADD_WRAPV (A, B, &R) returns
-+   true or false depending on whether the sum fits into 'short'.
- 
-    These macros are tuned for their last input argument being a constant.
- 
---- a/gnulib/lib/inttypes.in.h
-+++ b/gnulib/lib/inttypes.in.h
-@@ -2,17 +2,17 @@
-    Written by Paul Eggert, Bruno Haible, Derek Price.
-    This file is part of gnulib.
- 
--   This program is free software: you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3 of the License, or
--   (at your option) any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
-+   You should have received a copy of the GNU Lesser General Public License
-    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- /*
---- a/gnulib/lib/iswblank.c
-+++ b/gnulib/lib/iswblank.c
-@@ -1,18 +1,18 @@
- /* Test wide character for being blank.
-    Copyright (C) 2008-2021 Free Software Foundation, Inc.
- 
--   This program is free software; you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3, or (at your option)
--   any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License along
--   with this program; if not, see <https://www.gnu.org/licenses/>.  */
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #include <config.h>
- 
---- a/gnulib/lib/iswdigit.c
-+++ b/gnulib/lib/iswdigit.c
-@@ -1,18 +1,18 @@
- /* Test wide character for being a digit.
-    Copyright (C) 2020-2021 Free Software Foundation, Inc.
- 
--   This program is free software; you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3, or (at your option)
--   any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License along
--   with this program; if not, see <https://www.gnu.org/licenses/>.  */
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #include <config.h>
- 
---- a/gnulib/lib/iswxdigit.c
-+++ b/gnulib/lib/iswxdigit.c
-@@ -1,18 +1,18 @@
- /* Test wide character for being a hexadecimal digit.
-    Copyright (C) 2020-2021 Free Software Foundation, Inc.
- 
--   This program is free software; you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3, or (at your option)
--   any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License along
--   with this program; if not, see <https://www.gnu.org/licenses/>.  */
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #include <config.h>
- 
---- a/gnulib/lib/itold.c
-+++ b/gnulib/lib/itold.c
-@@ -2,17 +2,17 @@
-    Copyright (C) 2011-2021 Free Software Foundation, Inc.
-    Written by Bruno Haible <bruno@clisp.org>, 2011.
- 
--   This program is free software: you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3 of the License, or
--   (at your option) any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
-+   You should have received a copy of the GNU Lesser General Public License
-    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #include <config.h>
---- a/gnulib/lib/langinfo.in.h
-+++ b/gnulib/lib/langinfo.in.h
-@@ -1,18 +1,18 @@
- /* Substitute for and wrapper around <langinfo.h>.
-    Copyright (C) 2009-2021 Free Software Foundation, Inc.
- 
--   This program is free software; you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3, or (at your option)
--   any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
--   along with this program; if not, see <https://www.gnu.org/licenses/>.  */
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- /*
-  * POSIX <langinfo.h> for platforms that lack it or have an incomplete one.
---- a/gnulib/lib/lc-charset-dispatch.c
-+++ b/gnulib/lib/lc-charset-dispatch.c
-@@ -1,17 +1,17 @@
- /* Dispatching based on the current locale's character encoding.
-    Copyright (C) 2018-2021 Free Software Foundation, Inc.
- 
--   This program is free software: you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3 of the License, or
--   (at your option) any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
-+   You should have received a copy of the GNU Lesser General Public License
-    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- /* Written by Bruno Haible <bruno@clisp.org>, 2018.  */
---- a/gnulib/lib/lc-charset-dispatch.h
-+++ b/gnulib/lib/lc-charset-dispatch.h
-@@ -1,17 +1,17 @@
- /* Dispatching based on the current locale's character encoding.
-    Copyright (C) 2018-2021 Free Software Foundation, Inc.
- 
--   This program is free software: you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3 of the License, or
--   (at your option) any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
-+   You should have received a copy of the GNU Lesser General Public License
-    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- /* Written by Bruno Haible <bruno@clisp.org>, 2018.  */
---- a/gnulib/lib/libc-config.h
-+++ b/gnulib/lib/libc-config.h
-@@ -3,16 +3,16 @@
-    Copyright 2017-2021 Free Software Foundation, Inc.
- 
-    This program is free software; you can redistribute it and/or
--   modify it under the terms of the GNU General Public
-+   modify it under the terms of the GNU Lesser General Public
-    License as published by the Free Software Foundation; either
--   version 3 of the License, or (at your option) any later version.
-+   version 2.1 of the License, or (at your option) any later version.
- 
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
--   General Public License for more details.
-+   Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public
-+   You should have received a copy of the GNU Lesser General Public
-    License along with this program; if not, see
-    <https://www.gnu.org/licenses/>.  */
- 
-@@ -28,7 +28,10 @@
- 
-    When compiled as part of glibc this is a no-op; when compiled as
-    part of Gnulib this includes Gnulib's <config.h> and defines macros
--   that glibc library code would normally assume.  */
-+   that glibc library code would normally assume.
-+
-+   Note: This header file MUST NOT be included by public header files
-+   of Gnulib.  */
- 
- #include <config.h>
- 
-@@ -71,7 +74,7 @@
- # endif
- #endif
- 
--#ifndef __attribute_maybe_unused__
-+#ifndef __attribute_nonnull__
- /* <sys/cdefs.h> either does not exist, or is too old for Gnulib.
-    Prepare to include <cdefs.h>, which is Gnulib's version of a
-    more-recent glibc <sys/cdefs.h>.  */
-@@ -80,13 +83,9 @@
- # ifndef _FEATURES_H
- #  define _FEATURES_H 1
- # endif
--/* Define __WORDSIZE so that <cdefs.h> does not attempt to include
--   nonexistent files.  Make it a syntax error, since Gnulib does not
--   use __WORDSIZE now, and if Gnulib uses it later the syntax error
--   will let us know that __WORDSIZE needs configuring.  */
--# ifndef __WORDSIZE
--#  define __WORDSIZE %%%
--# endif
-+/* Define __GNULIB_CDEFS so that <cdefs.h> does not attempt to include
-+   nonexistent files.  */
-+# define __GNULIB_CDEFS
- /* Undef the macros unconditionally defined by our copy of glibc
-    <sys/cdefs.h>, so that they do not clash with any system-defined
-    versions.  */
---- a/gnulib/lib/limits.in.h
-+++ b/gnulib/lib/limits.in.h
-@@ -2,18 +2,18 @@
- 
-    Copyright 2016-2021 Free Software Foundation, Inc.
- 
--   This program is free software; you can redistribute it and/or
--   modify it under the terms of the GNU General Public License
--   as published by the Free Software Foundation; either version 3, or
--   (at your option) any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
--   along with this program; if not, see <https://www.gnu.org/licenses/>.  */
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #if __GNUC__ >= 3
- @PRAGMA_SYSTEM_HEADER@
---- a/gnulib/lib/localcharset.c
-+++ b/gnulib/lib/localcharset.c
-@@ -2,18 +2,18 @@
- 
-    Copyright (C) 2000-2006, 2008-2021 Free Software Foundation, Inc.
- 
--   This program is free software; you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3, or (at your option)
--   any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License along
--   with this program; if not, see <https://www.gnu.org/licenses/>.  */
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- /* Written by Bruno Haible <bruno@clisp.org>.  */
- 
---- a/gnulib/lib/localcharset.h
-+++ b/gnulib/lib/localcharset.h
-@@ -2,18 +2,18 @@
-    Copyright (C) 2000-2003, 2009-2021 Free Software Foundation, Inc.
-    This file is part of the GNU CHARSET Library.
- 
--   This program is free software; you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3, or (at your option)
--   any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License along
--   with this program; if not, see <https://www.gnu.org/licenses/>.  */
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #ifndef _LOCALCHARSET_H
- #define _LOCALCHARSET_H
---- a/gnulib/lib/locale.in.h
-+++ b/gnulib/lib/locale.in.h
-@@ -1,17 +1,17 @@
- /* A POSIX <locale.h>.
-    Copyright (C) 2007-2021 Free Software Foundation, Inc.
- 
--   This program is free software: you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3 of the License, or
--   (at your option) any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
-+   You should have received a copy of the GNU Lesser General Public License
-    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #if __GNUC__ >= 3
---- a/gnulib/lib/localeconv.c
-+++ b/gnulib/lib/localeconv.c
-@@ -1,17 +1,17 @@
- /* Query locale dependent information for formatting numbers.
-    Copyright (C) 2012-2021 Free Software Foundation, Inc.
- 
--   This program is free software: you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3 of the License, or
--   (at your option) any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
-+   You should have received a copy of the GNU Lesser General Public License
-    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #include <config.h>
---- a/gnulib/lib/malloc.c
-+++ b/gnulib/lib/malloc.c
-@@ -2,61 +2,50 @@
- 
-    Copyright (C) 1997-1998, 2006-2007, 2009-2021 Free Software Foundation, Inc.
- 
--   This program is free software; you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3, or (at your option)
--   any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
--   along with this program; if not, see <https://www.gnu.org/licenses/>.  */
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- /* written by Jim Meyering and Bruno Haible */
- 
- #define _GL_USE_STDLIB_ALLOC 1
- #include <config.h>
--/* Only the AC_FUNC_MALLOC macro defines 'malloc' already in config.h.  */
--#ifdef malloc
--# define NEED_MALLOC_GNU 1
--# undef malloc
--/* Whereas the gnulib module 'malloc-gnu' defines HAVE_MALLOC_GNU.  */
--#elif GNULIB_MALLOC_GNU && !HAVE_MALLOC_GNU
--# define NEED_MALLOC_GNU 1
--#endif
- 
- #include <stdlib.h>
- 
--/* A function definition is only needed if NEED_MALLOC_GNU is defined above
--   or if the module 'malloc-posix' requests it.  */
--#if NEED_MALLOC_GNU || (GNULIB_MALLOC_POSIX && !HAVE_MALLOC_POSIX)
-+#include <errno.h>
- 
--# include <errno.h>
-+#include "xalloc-oversized.h"
- 
--/* Allocate an N-byte block of memory from the heap.
--   If N is zero, allocate a 1-byte block.  */
-+/* Allocate an N-byte block of memory from the heap, even if N is 0.  */
- 
- void *
- rpl_malloc (size_t n)
- {
--  void *result;
--
--# if NEED_MALLOC_GNU
-   if (n == 0)
-     n = 1;
--# endif
- 
--  result = malloc (n);
-+  if (xalloc_oversized (n, 1))
-+    {
-+      errno = ENOMEM;
-+      return NULL;
-+    }
-+
-+  void *result = malloc (n);
- 
--# if !HAVE_MALLOC_POSIX
-+#if !HAVE_MALLOC_POSIX
-   if (result == NULL)
-     errno = ENOMEM;
--# endif
-+#endif
- 
-   return result;
- }
--
--#endif
---- a/gnulib/lib/malloc/dynarray-skeleton.c
-+++ b/gnulib/lib/malloc/dynarray-skeleton.c
-@@ -3,16 +3,16 @@
-    This file is part of the GNU C Library.
- 
-    The GNU C Library is free software; you can redistribute it and/or
--   modify it under the terms of the GNU General Public
-+   modify it under the terms of the GNU Lesser General Public
-    License as published by the Free Software Foundation; either
--   version 3 of the License, or (at your option) any later version.
-+   version 2.1 of the License, or (at your option) any later version.
- 
-    The GNU C Library is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
--   General Public License for more details.
-+   Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public
-+   You should have received a copy of the GNU Lesser General Public
-    License along with the GNU C Library; if not, see
-    <https://www.gnu.org/licenses/>.  */
- 
---- a/gnulib/lib/malloc/dynarray.h
-+++ b/gnulib/lib/malloc/dynarray.h
-@@ -3,16 +3,16 @@
-    This file is part of the GNU C Library.
- 
-    The GNU C Library is free software; you can redistribute it and/or
--   modify it under the terms of the GNU General Public
-+   modify it under the terms of the GNU Lesser General Public
-    License as published by the Free Software Foundation; either
--   version 3 of the License, or (at your option) any later version.
-+   version 2.1 of the License, or (at your option) any later version.
- 
-    The GNU C Library is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
--   General Public License for more details.
-+   Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public
-+   You should have received a copy of the GNU Lesser General Public
-    License along with the GNU C Library; if not, see
-    <https://www.gnu.org/licenses/>.  */
- 
---- a/gnulib/lib/malloc/dynarray_at_failure.c
-+++ b/gnulib/lib/malloc/dynarray_at_failure.c
-@@ -3,16 +3,16 @@
-    This file is part of the GNU C Library.
- 
-    The GNU C Library is free software; you can redistribute it and/or
--   modify it under the terms of the GNU General Public
-+   modify it under the terms of the GNU Lesser General Public
-    License as published by the Free Software Foundation; either
--   version 3 of the License, or (at your option) any later version.
-+   version 2.1 of the License, or (at your option) any later version.
- 
-    The GNU C Library is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
--   General Public License for more details.
-+   Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public
-+   You should have received a copy of the GNU Lesser General Public
-    License along with the GNU C Library; if not, see
-    <https://www.gnu.org/licenses/>.  */
- 
---- a/gnulib/lib/malloc/dynarray_emplace_enlarge.c
-+++ b/gnulib/lib/malloc/dynarray_emplace_enlarge.c
-@@ -3,16 +3,16 @@
-    This file is part of the GNU C Library.
- 
-    The GNU C Library is free software; you can redistribute it and/or
--   modify it under the terms of the GNU General Public
-+   modify it under the terms of the GNU Lesser General Public
-    License as published by the Free Software Foundation; either
--   version 3 of the License, or (at your option) any later version.
-+   version 2.1 of the License, or (at your option) any later version.
- 
-    The GNU C Library is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
--   General Public License for more details.
-+   Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public
-+   You should have received a copy of the GNU Lesser General Public
-    License along with the GNU C Library; if not, see
-    <https://www.gnu.org/licenses/>.  */
- 
---- a/gnulib/lib/malloc/dynarray_finalize.c
-+++ b/gnulib/lib/malloc/dynarray_finalize.c
-@@ -3,16 +3,16 @@
-    This file is part of the GNU C Library.
- 
-    The GNU C Library is free software; you can redistribute it and/or
--   modify it under the terms of the GNU General Public
-+   modify it under the terms of the GNU Lesser General Public
-    License as published by the Free Software Foundation; either
--   version 3 of the License, or (at your option) any later version.
-+   version 2.1 of the License, or (at your option) any later version.
- 
-    The GNU C Library is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
--   General Public License for more details.
-+   Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public
-+   You should have received a copy of the GNU Lesser General Public
-    License along with the GNU C Library; if not, see
-    <https://www.gnu.org/licenses/>.  */
- 
---- a/gnulib/lib/malloc/dynarray_resize.c
-+++ b/gnulib/lib/malloc/dynarray_resize.c
-@@ -3,16 +3,16 @@
-    This file is part of the GNU C Library.
- 
-    The GNU C Library is free software; you can redistribute it and/or
--   modify it under the terms of the GNU General Public
-+   modify it under the terms of the GNU Lesser General Public
-    License as published by the Free Software Foundation; either
--   version 3 of the License, or (at your option) any later version.
-+   version 2.1 of the License, or (at your option) any later version.
- 
-    The GNU C Library is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
--   General Public License for more details.
-+   Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public
-+   You should have received a copy of the GNU Lesser General Public
-    License along with the GNU C Library; if not, see
-    <https://www.gnu.org/licenses/>.  */
- 
---- a/gnulib/lib/malloc/dynarray_resize_clear.c
-+++ b/gnulib/lib/malloc/dynarray_resize_clear.c
-@@ -3,16 +3,16 @@
-    This file is part of the GNU C Library.
- 
-    The GNU C Library is free software; you can redistribute it and/or
--   modify it under the terms of the GNU General Public
-+   modify it under the terms of the GNU Lesser General Public
-    License as published by the Free Software Foundation; either
--   version 3 of the License, or (at your option) any later version.
-+   version 2.1 of the License, or (at your option) any later version.
- 
-    The GNU C Library is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
--   General Public License for more details.
-+   Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public
-+   You should have received a copy of the GNU Lesser General Public
-    License along with the GNU C Library; if not, see
-    <https://www.gnu.org/licenses/>.  */
- 
---- a/gnulib/lib/malloca.c
-+++ b/gnulib/lib/malloca.c
-@@ -2,18 +2,18 @@
-    Copyright (C) 2003, 2006-2007, 2009-2021 Free Software Foundation, Inc.
-    Written by Bruno Haible <bruno@clisp.org>, 2003, 2018.
- 
--   This program is free software; you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3, or (at your option)
--   any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
--   along with this program; if not, see <https://www.gnu.org/licenses/>.  */
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #define _GL_USE_STDLIB_ALLOC 1
- #include <config.h>
-@@ -21,6 +21,8 @@
- /* Specification.  */
- #include "malloca.h"
- 
-+#include "idx.h"
-+#include "intprops.h"
- #include "verify.h"
- 
- /* The speed critical point in this file is freea() applied to an alloca()
-@@ -45,9 +47,9 @@ mmalloca (size_t n)
- #if HAVE_ALLOCA
-   /* Allocate one more word, used to determine the address to pass to freea(),
-      and room for the alignment ≡ sa_alignment_max mod 2*sa_alignment_max.  */
--  size_t nplus = n + sizeof (small_t) + 2 * sa_alignment_max - 1;
--
--  if (nplus >= n)
-+  int plus = sizeof (small_t) + 2 * sa_alignment_max - 1;
-+  idx_t nplus;
-+  if (!INT_ADD_WRAPV (n, plus, &nplus) && !xalloc_oversized (nplus, 1))
-     {
-       char *mem = (char *) malloc (nplus);
- 
---- a/gnulib/lib/malloca.h
-+++ b/gnulib/lib/malloca.h
-@@ -2,18 +2,18 @@
-    Copyright (C) 2003-2007, 2009-2021 Free Software Foundation, Inc.
-    Written by Bruno Haible <bruno@clisp.org>, 2003.
- 
--   This program is free software; you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3, or (at your option)
--   any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
--   along with this program; if not, see <https://www.gnu.org/licenses/>.  */
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #ifndef _MALLOCA_H
- #define _MALLOCA_H
-@@ -76,9 +76,10 @@ extern void freea (void *p);
- 
- /* nmalloca(N,S) is an overflow-safe variant of malloca (N * S).
-    It allocates an array of N objects, each with S bytes of memory,
--   on the stack.  S must be positive and N must be nonnegative.
-+   on the stack.  N and S should be nonnegative and free of side effects.
-    The array must be freed using freea() before the function returns.  */
--#define nmalloca(n, s) (xalloc_oversized (n, s) ? NULL : malloca ((n) * (s)))
-+#define nmalloca(n, s) \
-+  (xalloc_oversized (n, s) ? NULL : malloca ((n) * (size_t) (s)))
- 
- 
- #ifdef __cplusplus
---- a/gnulib/lib/mbchar.c
-+++ b/gnulib/lib/mbchar.c
-@@ -1,16 +1,16 @@
- /* Copyright (C) 2001, 2006, 2009-2021 Free Software Foundation, Inc.
- 
--   This program is free software: you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3 of the License, or
--   (at your option) any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
-+   You should have received a copy of the GNU Lesser General Public License
-    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- 
---- a/gnulib/lib/mbchar.h
-+++ b/gnulib/lib/mbchar.h
-@@ -1,17 +1,17 @@
- /* Multibyte character data type.
-    Copyright (C) 2001, 2005-2007, 2009-2021 Free Software Foundation, Inc.
- 
--   This program is free software: you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3 of the License, or
--   (at your option) any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
-+   You should have received a copy of the GNU Lesser General Public License
-    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- /* Written by Bruno Haible <bruno@clisp.org>.  */
---- a/gnulib/lib/mbiter.c
-+++ b/gnulib/lib/mbiter.c
-@@ -1,3 +1,21 @@
-+/* Iterating through multibyte strings: macros for multi-byte encodings.
-+
-+   Copyright (C) 2012-2021 Free Software Foundation, Inc.
-+
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
-+
-+   This file is distributed in the hope that it will be useful,
-+   but WITHOUT ANY WARRANTY; without even the implied warranty of
-+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+   GNU Lesser General Public License for more details.
-+
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
-+
- #include <config.h>
-+
- #define MBITER_INLINE _GL_EXTERN_INLINE
- #include "mbiter.h"
---- a/gnulib/lib/mbiter.h
-+++ b/gnulib/lib/mbiter.h
-@@ -1,17 +1,17 @@
- /* Iterating through multibyte strings: macros for multi-byte encodings.
-    Copyright (C) 2001, 2005, 2007, 2009-2021 Free Software Foundation, Inc.
- 
--   This program is free software: you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3 of the License, or
--   (at your option) any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
-+   You should have received a copy of the GNU Lesser General Public License
-    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- /* Written by Bruno Haible <bruno@clisp.org>.  */
---- a/gnulib/lib/mbrtowc-impl-utf8.h
-+++ b/gnulib/lib/mbrtowc-impl-utf8.h
-@@ -1,17 +1,17 @@
- /* Convert multibyte character to wide character.
-    Copyright (C) 1999-2002, 2005-2021 Free Software Foundation, Inc.
- 
--   This program is free software: you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3 of the License, or
--   (at your option) any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
-+   You should have received a copy of the GNU Lesser General Public License
-    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- /* Written by Bruno Haible <bruno@clisp.org>, 2008.  */
-@@ -96,7 +96,7 @@
- 
-                     if ((c2 ^ 0x80) < 0x40
-                         && (c >= 0xf1 || c2 >= 0x90)
--                        && (c < 0xf4 || (c == 0xf4 && c2 < 0x90)))
-+                        && (c < 0xf4 || (/* c == 0xf4 && */ c2 < 0x90)))
-                       {
-                         if (m == 2)
-                           goto incomplete;
---- a/gnulib/lib/mbrtowc-impl.h
-+++ b/gnulib/lib/mbrtowc-impl.h
-@@ -1,17 +1,17 @@
- /* Convert multibyte character to wide character.
-    Copyright (C) 1999-2002, 2005-2021 Free Software Foundation, Inc.
- 
--   This program is free software: you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3 of the License, or
--   (at your option) any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
-+   You should have received a copy of the GNU Lesser General Public License
-    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- /* Written by Bruno Haible <bruno@clisp.org>, 2008.  */
---- a/gnulib/lib/mbrtowc.c
-+++ b/gnulib/lib/mbrtowc.c
-@@ -2,17 +2,17 @@
-    Copyright (C) 1999-2002, 2005-2021 Free Software Foundation, Inc.
-    Written by Bruno Haible <bruno@clisp.org>, 2008.
- 
--   This program is free software: you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3 of the License, or
--   (at your option) any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
-+   You should have received a copy of the GNU Lesser General Public License
-    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #include <config.h>
---- a/gnulib/lib/mbscasecmp.c
-+++ b/gnulib/lib/mbscasecmp.c
-@@ -3,17 +3,17 @@
-    Written by Bruno Haible <bruno@clisp.org>, 2005,
-    based on earlier glibc code.
- 
--   This program is free software: you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3 of the License, or
--   (at your option) any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 3 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
-+   You should have received a copy of the GNU Lesser General Public License
-    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #include <config.h>
---- a/gnulib/lib/mbschr.c
-+++ b/gnulib/lib/mbschr.c
-@@ -2,17 +2,17 @@
-    Copyright (C) 2007-2021 Free Software Foundation, Inc.
-    Written by Bruno Haible <bruno@clisp.org>, 2007.
- 
--   This program is free software: you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3 of the License, or
--   (at your option) any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 3 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
-+   You should have received a copy of the GNU Lesser General Public License
-    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #include <config.h>
---- a/gnulib/lib/mbsinit.c
-+++ b/gnulib/lib/mbsinit.c
-@@ -2,17 +2,17 @@
-    Copyright (C) 2008-2021 Free Software Foundation, Inc.
-    Written by Bruno Haible <bruno@clisp.org>, 2008.
- 
--   This program is free software: you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3 of the License, or
--   (at your option) any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
-+   You should have received a copy of the GNU Lesser General Public License
-    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #include <config.h>
---- a/gnulib/lib/mbslen.c
-+++ b/gnulib/lib/mbslen.c
-@@ -2,17 +2,17 @@
-    Copyright (C) 2007-2021 Free Software Foundation, Inc.
-    Written by Bruno Haible <bruno@clisp.org>, 2007.
- 
--   This program is free software: you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3 of the License, or
--   (at your option) any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 3 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
-+   You should have received a copy of the GNU Lesser General Public License
-    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #include <config.h>
---- a/gnulib/lib/mbsncasecmp.c
-+++ b/gnulib/lib/mbsncasecmp.c
-@@ -3,17 +3,17 @@
-    Written by Bruno Haible <bruno@clisp.org>, 2005,
-    based on earlier glibc code.
- 
--   This program is free software: you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3 of the License, or
--   (at your option) any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 3 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
-+   You should have received a copy of the GNU Lesser General Public License
-    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #include <config.h>
---- a/gnulib/lib/mbsstr.c
-+++ b/gnulib/lib/mbsstr.c
-@@ -2,17 +2,17 @@
-    Copyright (C) 2005-2021 Free Software Foundation, Inc.
-    Written by Bruno Haible <bruno@clisp.org>, 2005.
- 
--   This program is free software: you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3 of the License, or
--   (at your option) any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 3 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
-+   You should have received a copy of the GNU Lesser General Public License
-    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #include <config.h>
---- a/gnulib/lib/mbtowc-impl.h
-+++ b/gnulib/lib/mbtowc-impl.h
-@@ -2,17 +2,17 @@
-    Copyright (C) 2011-2021 Free Software Foundation, Inc.
-    Written by Bruno Haible <bruno@clisp.org>, 2011.
- 
--   This program is free software: you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3 of the License, or
--   (at your option) any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
-+   You should have received a copy of the GNU Lesser General Public License
-    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- /* We don't need a static internal state, because the encoding is not state
---- a/gnulib/lib/mbtowc-lock.c
-+++ b/gnulib/lib/mbtowc-lock.c
-@@ -1,17 +1,17 @@
- /* Return the internal lock used by mbrtowc and mbrtoc32.
-    Copyright (C) 2019-2021 Free Software Foundation, Inc.
- 
--   This program is free software: you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3 of the License, or
--   (at your option) any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
-+   You should have received a copy of the GNU Lesser General Public License
-    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- /* Written by Bruno Haible <bruno@clisp.org>, 2019-2020.  */
---- a/gnulib/lib/mbtowc-lock.h
-+++ b/gnulib/lib/mbtowc-lock.h
-@@ -1,17 +1,17 @@
- /* Use the internal lock used by mbrtowc and mbrtoc32.
-    Copyright (C) 2019-2021 Free Software Foundation, Inc.
- 
--   This program is free software: you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3 of the License, or
--   (at your option) any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
-+   You should have received a copy of the GNU Lesser General Public License
-    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- /* Written by Bruno Haible <bruno@clisp.org>, 2019-2020.  */
---- a/gnulib/lib/mbtowc.c
-+++ b/gnulib/lib/mbtowc.c
-@@ -2,17 +2,17 @@
-    Copyright (C) 2011-2021 Free Software Foundation, Inc.
-    Written by Bruno Haible <bruno@clisp.org>, 2011.
- 
--   This program is free software: you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3 of the License, or
--   (at your option) any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
-+   You should have received a copy of the GNU Lesser General Public License
-    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #include <config.h>
---- a/gnulib/lib/mbuiter.c
-+++ b/gnulib/lib/mbuiter.c
-@@ -1,3 +1,20 @@
-+/* Iterating through multibyte strings: macros for multi-byte encodings.
-+   Copyright (C) 2012-2021 Free Software Foundation, Inc.
-+
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 3 of the
-+   License, or (at your option) any later version.
-+
-+   This file is distributed in the hope that it will be useful,
-+   but WITHOUT ANY WARRANTY; without even the implied warranty of
-+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+   GNU Lesser General Public License for more details.
-+
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
-+
- #include <config.h>
-+
- #define MBUITER_INLINE _GL_EXTERN_INLINE
- #include "mbuiter.h"
---- a/gnulib/lib/mbuiter.h
-+++ b/gnulib/lib/mbuiter.h
-@@ -1,17 +1,17 @@
- /* Iterating through multibyte strings: macros for multi-byte encodings.
-    Copyright (C) 2001, 2005, 2007, 2009-2021 Free Software Foundation, Inc.
- 
--   This program is free software: you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3 of the License, or
--   (at your option) any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 3 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
-+   You should have received a copy of the GNU Lesser General Public License
-    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- /* Written by Bruno Haible <bruno@clisp.org>.  */
---- a/gnulib/lib/memchr.c
-+++ b/gnulib/lib/memchr.c
-@@ -7,21 +7,21 @@
-    adaptation to memchr suggested by Dick Karpinski (dick@cca.ucsf.edu),
-    and implemented by Roland McGrath (roland@ai.mit.edu).
- 
--NOTE: The canonical source of this file is maintained with the GNU C Library.
--Bugs can be reported to bug-glibc@prep.ai.mit.edu.
-+   NOTE: The canonical source of this file is maintained with the GNU C Library.
-+   Bugs can be reported to bug-glibc@prep.ai.mit.edu.
- 
--This program is free software: you can redistribute it and/or modify it
--under the terms of the GNU General Public License as published by the
--Free Software Foundation; either version 3 of the License, or any
--later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--This program is distributed in the hope that it will be useful,
--but WITHOUT ANY WARRANTY; without even the implied warranty of
--MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--GNU General Public License for more details.
-+   This file is distributed in the hope that it will be useful,
-+   but WITHOUT ANY WARRANTY; without even the implied warranty of
-+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+   GNU Lesser General Public License for more details.
- 
--You should have received a copy of the GNU General Public License
--along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #ifndef _LIBC
- # include <config.h>
---- a/gnulib/lib/memchr.valgrind
-+++ b/gnulib/lib/memchr.valgrind
-@@ -2,17 +2,17 @@
- 
- # Copyright (C) 2009-2021 Free Software Foundation, Inc.
- #
--# This program is free software: you can redistribute it and/or modify
--# it under the terms of the GNU General Public License as published by
--# the Free Software Foundation; either version 3 of the License, or
--# (at your option) any later version.
-+# This file is free software: you can redistribute it and/or modify
-+# it under the terms of the GNU Lesser General Public License as
-+# published by the Free Software Foundation; either version 2.1 of the
-+# License, or (at your option) any later version.
- #
--# This program is distributed in the hope that it will be useful,
-+# This file is distributed in the hope that it will be useful,
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--# GNU General Public License for more details.
-+# GNU Lesser General Public License for more details.
- #
--# You should have received a copy of the GNU General Public License
-+# You should have received a copy of the GNU Lesser General Public License
- # along with this program.  If not, see <https://www.gnu.org/licenses/>.
- 
- # POSIX states that when the character is found, memchr must not read extra
---- a/gnulib/lib/mempcpy.c
-+++ b/gnulib/lib/mempcpy.c
-@@ -1,18 +1,18 @@
- /* Copy memory area and return pointer after last written byte.
-    Copyright (C) 2003, 2007, 2009-2021 Free Software Foundation, Inc.
- 
--   This program is free software; you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3, or (at your option)
--   any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
--   along with this program; if not, see <https://www.gnu.org/licenses/>.  */
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #include <config.h>
- 
---- a/gnulib/lib/memrchr.c
-+++ b/gnulib/lib/memrchr.c
-@@ -9,17 +9,17 @@
-    adaptation to memchr suggested by Dick Karpinski (dick@cca.ucsf.edu),
-    and implemented by Roland McGrath (roland@ai.mit.edu).
- 
--   This program is free software: you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3 of the License, or
--   (at your option) any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 3 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
-+   You should have received a copy of the GNU Lesser General Public License
-    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #if defined _LIBC
---- /dev/null
-+++ b/gnulib/lib/minmax.h
-@@ -0,0 +1,60 @@
-+/* MIN, MAX macros.
-+   Copyright (C) 1995, 1998, 2001, 2003, 2005, 2009-2021 Free Software
-+   Foundation, Inc.
-+
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
-+
-+   This file is distributed in the hope that it will be useful,
-+   but WITHOUT ANY WARRANTY; without even the implied warranty of
-+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+   GNU Lesser General Public License for more details.
-+
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
-+
-+#ifndef _MINMAX_H
-+#define _MINMAX_H
-+
-+/* Note: MIN, MAX are also defined in <sys/param.h> on some systems
-+   (glibc, IRIX, HP-UX, OSF/1).  Therefore you might get warnings about
-+   MIN, MAX macro redefinitions on some systems; the workaround is to
-+   #include this file as the last one among the #include list.  */
-+
-+/* Before we define the following symbols we get the <limits.h> file
-+   since otherwise we get redefinitions on some systems if <limits.h> is
-+   included after this file.  Likewise for <sys/param.h>.
-+   If more than one of these system headers define MIN and MAX, pick just
-+   one of the headers (because the definitions most likely are the same).  */
-+#if HAVE_MINMAX_IN_LIMITS_H
-+# include <limits.h>
-+#elif HAVE_MINMAX_IN_SYS_PARAM_H
-+# include <sys/param.h>
-+#endif
-+
-+/* Note: MIN and MAX should be used with two arguments of the
-+   same type.  They might not return the minimum and maximum of their two
-+   arguments, if the arguments have different types or have unusual
-+   floating-point values.  For example, on a typical host with 32-bit 'int',
-+   64-bit 'long long', and 64-bit IEEE 754 'double' types:
-+
-+     MAX (-1, 2147483648) returns 4294967295.
-+     MAX (9007199254740992.0, 9007199254740993) returns 9007199254740992.0.
-+     MAX (NaN, 0.0) returns 0.0.
-+     MAX (+0.0, -0.0) returns -0.0.
-+
-+   and in each case the answer is in some sense bogus.  */
-+
-+/* MAX(a,b) returns the maximum of A and B.  */
-+#ifndef MAX
-+# define MAX(a,b) ((a) > (b) ? (a) : (b))
-+#endif
-+
-+/* MIN(a,b) returns the minimum of A and B.  */
-+#ifndef MIN
-+# define MIN(a,b) ((a) < (b) ? (a) : (b))
-+#endif
-+
-+#endif /* _MINMAX_H */
---- a/gnulib/lib/msvc-inval.c
-+++ b/gnulib/lib/msvc-inval.c
-@@ -1,18 +1,18 @@
- /* Invalid parameter handler for MSVC runtime libraries.
-    Copyright (C) 2011-2021 Free Software Foundation, Inc.
- 
--   This program is free software; you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3, or (at your option)
--   any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License along
--   with this program; if not, see <https://www.gnu.org/licenses/>.  */
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #include <config.h>
- 
---- a/gnulib/lib/msvc-inval.h
-+++ b/gnulib/lib/msvc-inval.h
-@@ -1,18 +1,18 @@
- /* Invalid parameter handler for MSVC runtime libraries.
-    Copyright (C) 2011-2021 Free Software Foundation, Inc.
- 
--   This program is free software; you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3, or (at your option)
--   any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License along
--   with this program; if not, see <https://www.gnu.org/licenses/>.  */
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #ifndef _MSVC_INVAL_H
- #define _MSVC_INVAL_H
---- a/gnulib/lib/msvc-nothrow.c
-+++ b/gnulib/lib/msvc-nothrow.c
-@@ -2,18 +2,18 @@
-    with MSVC runtime libraries.
-    Copyright (C) 2011-2021 Free Software Foundation, Inc.
- 
--   This program is free software; you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3, or (at your option)
--   any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License along
--   with this program; if not, see <https://www.gnu.org/licenses/>.  */
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #include <config.h>
- 
---- a/gnulib/lib/msvc-nothrow.h
-+++ b/gnulib/lib/msvc-nothrow.h
-@@ -2,18 +2,18 @@
-    with MSVC runtime libraries.
-    Copyright (C) 2011-2021 Free Software Foundation, Inc.
- 
--   This program is free software; you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3, or (at your option)
--   any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License along
--   with this program; if not, see <https://www.gnu.org/licenses/>.  */
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #ifndef _MSVC_NOTHROW_H
- #define _MSVC_NOTHROW_H
---- a/gnulib/lib/nl_langinfo-lock.c
-+++ b/gnulib/lib/nl_langinfo-lock.c
-@@ -1,17 +1,17 @@
- /* Return the internal lock used by nl_langinfo.
-    Copyright (C) 2019-2021 Free Software Foundation, Inc.
- 
--   This program is free software: you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3 of the License, or
--   (at your option) any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
-+   You should have received a copy of the GNU Lesser General Public License
-    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- /* Written by Bruno Haible <bruno@clisp.org>, 2019-2020.  */
---- a/gnulib/lib/nl_langinfo.c
-+++ b/gnulib/lib/nl_langinfo.c
-@@ -2,17 +2,17 @@
- 
-    Copyright (C) 2007-2021 Free Software Foundation, Inc.
- 
--   This program is free software: you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3 of the License, or
--   (at your option) any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
-+   You should have received a copy of the GNU Lesser General Public License
-    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #include <config.h>
---- a/gnulib/lib/open.c
-+++ b/gnulib/lib/open.c
-@@ -1,17 +1,17 @@
- /* Open a descriptor to a file.
-    Copyright (C) 2007-2021 Free Software Foundation, Inc.
- 
--   This program is free software: you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3 of the License, or
--   (at your option) any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
-+   You should have received a copy of the GNU Lesser General Public License
-    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- /* Written by Bruno Haible <bruno@clisp.org>, 2007.  */
---- a/gnulib/lib/pathmax.h
-+++ b/gnulib/lib/pathmax.h
-@@ -2,18 +2,18 @@
-    Copyright (C) 1992, 1999, 2001, 2003, 2005, 2009-2021 Free Software
-    Foundation, Inc.
- 
--   This program is free software; you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3, or (at your option)
--   any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
--   along with this program; if not, see <https://www.gnu.org/licenses/>.  */
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #ifndef _PATHMAX_H
- # define _PATHMAX_H
---- a/gnulib/lib/printf-args.c
-+++ b/gnulib/lib/printf-args.c
-@@ -2,18 +2,18 @@
-    Copyright (C) 1999, 2002-2003, 2005-2007, 2009-2021 Free Software
-    Foundation, Inc.
- 
--   This program is free software; you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3, or (at your option)
--   any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License along
--   with this program; if not, see <https://www.gnu.org/licenses/>.  */
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- /* This file can be parametrized with the following macros:
-      ENABLE_UNISTDIO    Set to 1 to enable the unistdio extensions.
---- a/gnulib/lib/printf-args.h
-+++ b/gnulib/lib/printf-args.h
-@@ -2,18 +2,18 @@
-    Copyright (C) 1999, 2002-2003, 2006-2007, 2011-2021 Free Software
-    Foundation, Inc.
- 
--   This program is free software; you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3, or (at your option)
--   any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License along
--   with this program; if not, see <https://www.gnu.org/licenses/>.  */
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #ifndef _PRINTF_ARGS_H
- #define _PRINTF_ARGS_H
---- a/gnulib/lib/printf-parse.c
-+++ b/gnulib/lib/printf-parse.c
-@@ -1,18 +1,18 @@
- /* Formatted output to strings.
-    Copyright (C) 1999-2000, 2002-2003, 2006-2021 Free Software Foundation, Inc.
- 
--   This program is free software; you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3, or (at your option)
--   any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License along
--   with this program; if not, see <https://www.gnu.org/licenses/>.  */
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- /* This file can be parametrized with the following macros:
-      CHAR_T             The element type of the format string.
-@@ -48,16 +48,7 @@
- #include <stddef.h>
- 
- /* Get intmax_t.  */
--#if defined IN_LIBINTL || defined IN_LIBASPRINTF
--# if HAVE_STDINT_H_WITH_UINTMAX
--#  include <stdint.h>
--# endif
--# if HAVE_INTTYPES_H_WITH_UINTMAX
--#  include <inttypes.h>
--# endif
--#else
--# include <stdint.h>
--#endif
-+#include <stdint.h>
- 
- /* malloc(), realloc(), free().  */
- #include <stdlib.h>
---- a/gnulib/lib/printf-parse.h
-+++ b/gnulib/lib/printf-parse.h
-@@ -2,18 +2,18 @@
-    Copyright (C) 1999, 2002-2003, 2005, 2007, 2010-2021 Free Software
-    Foundation, Inc.
- 
--   This program is free software; you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3, or (at your option)
--   any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License along
--   with this program; if not, see <https://www.gnu.org/licenses/>.  */
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #ifndef _PRINTF_PARSE_H
- #define _PRINTF_PARSE_H
---- /dev/null
-+++ b/gnulib/lib/realloc.c
-@@ -0,0 +1,63 @@
-+/* realloc() function that is glibc compatible.
-+
-+   Copyright (C) 1997, 2003-2004, 2006-2007, 2009-2021 Free Software
-+   Foundation, Inc.
-+
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
-+
-+   This file is distributed in the hope that it will be useful,
-+   but WITHOUT ANY WARRANTY; without even the implied warranty of
-+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+   GNU Lesser General Public License for more details.
-+
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
-+
-+/* written by Jim Meyering and Bruno Haible */
-+
-+#include <config.h>
-+
-+#include <stdlib.h>
-+
-+#include <errno.h>
-+
-+#include "xalloc-oversized.h"
-+
-+/* Call the system's realloc below.  This file does not define
-+   _GL_USE_STDLIB_ALLOC because it needs Gnulib's malloc if present.  */
-+#undef realloc
-+
-+/* Change the size of an allocated block of memory P to N bytes,
-+   with error checking.  If P is NULL, use malloc.  Otherwise if N is zero,
-+   free P and return NULL.  */
-+
-+void *
-+rpl_realloc (void *p, size_t n)
-+{
-+  if (p == NULL)
-+    return malloc (n);
-+
-+  if (n == 0)
-+    {
-+      free (p);
-+      return NULL;
-+    }
-+
-+  if (xalloc_oversized (n, 1))
-+    {
-+      errno = ENOMEM;
-+      return NULL;
-+    }
-+
-+  void *result = realloc (p, n);
-+
-+#if !HAVE_MALLOC_POSIX
-+  if (result == NULL)
-+    errno = ENOMEM;
-+#endif
-+
-+  return result;
-+}
---- /dev/null
-+++ b/gnulib/lib/reallocarray.c
-@@ -0,0 +1,39 @@
-+/* reallocarray function that is glibc compatible.
-+
-+   Copyright (C) 2017-2021 Free Software Foundation, Inc.
-+
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
-+
-+   This file is distributed in the hope that it will be useful,
-+   but WITHOUT ANY WARRANTY; without even the implied warranty of
-+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+   GNU Lesser General Public License for more details.
-+
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
-+
-+/* written by Darshit Shah */
-+
-+#include <config.h>
-+
-+#include <stdlib.h>
-+#include <errno.h>
-+
-+#include "intprops.h"
-+
-+void *
-+reallocarray (void *ptr, size_t nmemb, size_t size)
-+{
-+  size_t nbytes;
-+  if (INT_MULTIPLY_WRAPV (nmemb, size, &nbytes))
-+    {
-+      errno = ENOMEM;
-+      return NULL;
-+    }
-+
-+  /* Rely on the semantics of GNU realloc.  */
-+  return realloc (ptr, nbytes);
-+}
---- a/gnulib/lib/regcomp.c
-+++ b/gnulib/lib/regcomp.c
-@@ -4,16 +4,16 @@
-    Contributed by Isamu Hasegawa <isamu@yamato.ibm.com>.
- 
-    The GNU C Library is free software; you can redistribute it and/or
--   modify it under the terms of the GNU General Public
-+   modify it under the terms of the GNU Lesser General Public
-    License as published by the Free Software Foundation; either
--   version 3 of the License, or (at your option) any later version.
-+   version 2.1 of the License, or (at your option) any later version.
- 
-    The GNU C Library is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
--   General Public License for more details.
-+   Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public
-+   You should have received a copy of the GNU Lesser General Public
-    License along with the GNU C Library; if not, see
-    <https://www.gnu.org/licenses/>.  */
- 
---- a/gnulib/lib/regex.c
-+++ b/gnulib/lib/regex.c
-@@ -4,16 +4,16 @@
-    Contributed by Isamu Hasegawa <isamu@yamato.ibm.com>.
- 
-    The GNU C Library is free software; you can redistribute it and/or
--   modify it under the terms of the GNU General Public
-+   modify it under the terms of the GNU Lesser General Public
-    License as published by the Free Software Foundation; either
--   version 3 of the License, or (at your option) any later version.
-+   version 2.1 of the License, or (at your option) any later version.
- 
-    The GNU C Library is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
--   General Public License for more details.
-+   Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public
-+   You should have received a copy of the GNU Lesser General Public
-    License along with the GNU C Library; if not, see
-    <https://www.gnu.org/licenses/>.  */
- 
---- a/gnulib/lib/regex.h
-+++ b/gnulib/lib/regex.h
-@@ -4,16 +4,16 @@
-    This file is part of the GNU C Library.
- 
-    The GNU C Library is free software; you can redistribute it and/or
--   modify it under the terms of the GNU General Public
-+   modify it under the terms of the GNU Lesser General Public
-    License as published by the Free Software Foundation; either
--   version 3 of the License, or (at your option) any later version.
-+   version 2.1 of the License, or (at your option) any later version.
- 
-    The GNU C Library is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
--   General Public License for more details.
-+   Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public
-+   You should have received a copy of the GNU Lesser General Public
-    License along with the GNU C Library; if not, see
-    <https://www.gnu.org/licenses/>.  */
- 
---- a/gnulib/lib/regex_internal.c
-+++ b/gnulib/lib/regex_internal.c
-@@ -4,16 +4,16 @@
-    Contributed by Isamu Hasegawa <isamu@yamato.ibm.com>.
- 
-    The GNU C Library is free software; you can redistribute it and/or
--   modify it under the terms of the GNU General Public
-+   modify it under the terms of the GNU Lesser General Public
-    License as published by the Free Software Foundation; either
--   version 3 of the License, or (at your option) any later version.
-+   version 2.1 of the License, or (at your option) any later version.
- 
-    The GNU C Library is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
--   General Public License for more details.
-+   Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public
-+   You should have received a copy of the GNU Lesser General Public
-    License along with the GNU C Library; if not, see
-    <https://www.gnu.org/licenses/>.  */
- 
---- a/gnulib/lib/regex_internal.h
-+++ b/gnulib/lib/regex_internal.h
-@@ -4,16 +4,16 @@
-    Contributed by Isamu Hasegawa <isamu@yamato.ibm.com>.
- 
-    The GNU C Library is free software; you can redistribute it and/or
--   modify it under the terms of the GNU General Public
-+   modify it under the terms of the GNU Lesser General Public
-    License as published by the Free Software Foundation; either
--   version 3 of the License, or (at your option) any later version.
-+   version 2.1 of the License, or (at your option) any later version.
- 
-    The GNU C Library is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
--   General Public License for more details.
-+   Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public
-+   You should have received a copy of the GNU Lesser General Public
-    License along with the GNU C Library; if not, see
-    <https://www.gnu.org/licenses/>.  */
- 
---- a/gnulib/lib/regexec.c
-+++ b/gnulib/lib/regexec.c
-@@ -4,16 +4,16 @@
-    Contributed by Isamu Hasegawa <isamu@yamato.ibm.com>.
- 
-    The GNU C Library is free software; you can redistribute it and/or
--   modify it under the terms of the GNU General Public
-+   modify it under the terms of the GNU Lesser General Public
-    License as published by the Free Software Foundation; either
--   version 3 of the License, or (at your option) any later version.
-+   version 2.1 of the License, or (at your option) any later version.
- 
-    The GNU C Library is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
--   General Public License for more details.
-+   Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public
-+   You should have received a copy of the GNU Lesser General Public
-    License along with the GNU C Library; if not, see
-    <https://www.gnu.org/licenses/>.  */
- 
-@@ -1220,9 +1220,13 @@ proceed_next_node (const re_match_contex
-     {
-       re_node_set *cur_nodes = &mctx->state_log[*pidx]->nodes;
-       re_node_set *edests = &dfa->edests[node];
--      bool ok = re_node_set_insert (eps_via_nodes, node);
--      if (__glibc_unlikely (! ok))
--	return -2;
-+
-+      if (! re_node_set_contains (eps_via_nodes, node))
-+        {
-+          bool ok = re_node_set_insert (eps_via_nodes, node);
-+          if (__glibc_unlikely (! ok))
-+            return -2;
-+        }
- 
-       /* Pick a valid destination, or return -1 if none is found.  */
-       Idx dest_node = -1;
-@@ -1414,7 +1418,7 @@ set_regs (const regex_t *preg, const re_
-       update_regs (dfa, pmatch, prev_idx_match, cur_node, idx, nmatch);
- 
-       if ((idx == pmatch[0].rm_eo && cur_node == mctx->last_node)
--	  || re_node_set_contains (&eps_via_nodes, cur_node))
-+	  || (fs && re_node_set_contains (&eps_via_nodes, cur_node)))
- 	{
- 	  Idx reg_idx;
- 	  cur_node = -1;
---- a/gnulib/lib/setlocale-lock.c
-+++ b/gnulib/lib/setlocale-lock.c
-@@ -1,17 +1,17 @@
- /* Return the internal lock used by setlocale_null_r.
-    Copyright (C) 2019-2021 Free Software Foundation, Inc.
- 
--   This program is free software: you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3 of the License, or
--   (at your option) any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
-+   You should have received a copy of the GNU Lesser General Public License
-    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- /* Written by Bruno Haible <bruno@clisp.org>, 2019.  */
---- a/gnulib/lib/setlocale_null.c
-+++ b/gnulib/lib/setlocale_null.c
-@@ -1,17 +1,17 @@
- /* Query the name of the current global locale.
-    Copyright (C) 2019-2021 Free Software Foundation, Inc.
- 
--   This program is free software: you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3 of the License, or
--   (at your option) any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
-+   You should have received a copy of the GNU Lesser General Public License
-    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- /* Written by Bruno Haible <bruno@clisp.org>, 2019.  */
---- a/gnulib/lib/setlocale_null.h
-+++ b/gnulib/lib/setlocale_null.h
-@@ -1,17 +1,17 @@
- /* Query the name of the current global locale.
-    Copyright (C) 2019-2021 Free Software Foundation, Inc.
- 
--   This program is free software: you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3 of the License, or
--   (at your option) any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
-+   You should have received a copy of the GNU Lesser General Public License
-    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- /* Written by Bruno Haible <bruno@clisp.org>, 2019.  */
---- a/gnulib/lib/size_max.h
-+++ b/gnulib/lib/size_max.h
-@@ -2,18 +2,18 @@
-    Copyright (C) 2005-2006, 2009-2021 Free Software Foundation, Inc.
-    Written by Simon Josefsson.
- 
--   This program is free software; you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3, or (at your option)
--   any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
--   along with this program; if not, see <https://www.gnu.org/licenses/>.  */
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #ifndef GNULIB_SIZE_MAX_H
- #define GNULIB_SIZE_MAX_H
---- a/gnulib/lib/stat-time.c
-+++ b/gnulib/lib/stat-time.c
-@@ -1,3 +1,21 @@
-+/* stat-related time functions.
-+
-+   Copyright (C) 2012-2021 Free Software Foundation, Inc.
-+
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
-+
-+   This file is distributed in the hope that it will be useful,
-+   but WITHOUT ANY WARRANTY; without even the implied warranty of
-+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+   GNU Lesser General Public License for more details.
-+
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
-+
- #include <config.h>
-+
- #define _GL_STAT_TIME_INLINE _GL_EXTERN_INLINE
- #include "stat-time.h"
---- a/gnulib/lib/stat-time.h
-+++ b/gnulib/lib/stat-time.h
-@@ -2,17 +2,17 @@
- 
-    Copyright (C) 2005, 2007, 2009-2021 Free Software Foundation, Inc.
- 
--   This program is free software: you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3 of the License, or
--   (at your option) any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
-+   You should have received a copy of the GNU Lesser General Public License
-    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- /* Written by Paul Eggert.  */
---- a/gnulib/lib/stat-w32.c
-+++ b/gnulib/lib/stat-w32.c
-@@ -1,17 +1,17 @@
- /* Core of implementation of fstat and stat for native Windows.
-    Copyright (C) 2017-2021 Free Software Foundation, Inc.
- 
--   This program is free software: you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3 of the License, or
--   (at your option) any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
-+   You should have received a copy of the GNU Lesser General Public License
-    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- /* Written by Bruno Haible.  */
---- a/gnulib/lib/stat-w32.h
-+++ b/gnulib/lib/stat-w32.h
-@@ -1,17 +1,17 @@
- /* Core of implementation of fstat and stat for native Windows.
-    Copyright (C) 2017-2021 Free Software Foundation, Inc.
- 
--   This program is free software: you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3 of the License, or
--   (at your option) any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
-+   You should have received a copy of the GNU Lesser General Public License
-    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #ifndef _STAT_W32_H
---- a/gnulib/lib/stat.c
-+++ b/gnulib/lib/stat.c
-@@ -1,17 +1,17 @@
- /* Work around platform bugs in stat.
-    Copyright (C) 2009-2021 Free Software Foundation, Inc.
- 
--   This program is free software: you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3 of the License, or
--   (at your option) any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
-+   You should have received a copy of the GNU Lesser General Public License
-    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- /* Written by Eric Blake and Bruno Haible.  */
---- a/gnulib/lib/stdarg.in.h
-+++ b/gnulib/lib/stdarg.in.h
-@@ -1,18 +1,18 @@
- /* Substitute for and wrapper around <stdarg.h>.
-    Copyright (C) 2008-2021 Free Software Foundation, Inc.
- 
--   This program is free software; you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3, or (at your option)
--   any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
--   along with this program; if not, see <https://www.gnu.org/licenses/>.  */
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #ifndef _@GUARD_PREFIX@_STDARG_H
- 
---- a/gnulib/lib/stdbool.in.h
-+++ b/gnulib/lib/stdbool.in.h
-@@ -1,18 +1,18 @@
- /* Copyright (C) 2001-2003, 2006-2021 Free Software Foundation, Inc.
-    Written by Bruno Haible <haible@clisp.cons.org>, 2001.
- 
--   This program is free software; you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3, or (at your option)
--   any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
--   along with this program; if not, see <https://www.gnu.org/licenses/>.  */
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #ifndef _GL_STDBOOL_H
- #define _GL_STDBOOL_H
---- a/gnulib/lib/stddef.in.h
-+++ b/gnulib/lib/stddef.in.h
-@@ -2,18 +2,18 @@
- 
-    Copyright (C) 2009-2021 Free Software Foundation, Inc.
- 
--   This program is free software; you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3, or (at your option)
--   any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
--   along with this program; if not, see <https://www.gnu.org/licenses/>.  */
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- /* Written by Eric Blake.  */
- 
---- a/gnulib/lib/stdint.in.h
-+++ b/gnulib/lib/stdint.in.h
-@@ -2,18 +2,18 @@
-    Written by Paul Eggert, Bruno Haible, Sam Steingold, Peter Burwood.
-    This file is part of gnulib.
- 
--   This program is free software; you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3, or (at your option)
--   any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
--   along with this program; if not, see <https://www.gnu.org/licenses/>.  */
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- /*
-  * ISO C 99 <stdint.h> for platforms that lack it.
-@@ -85,7 +85,7 @@
- 
- /* Override WINT_MIN and WINT_MAX if gnulib's <wchar.h> or <wctype.h> overrides
-    wint_t.  */
--#if @GNULIB_OVERRIDES_WINT_T@
-+#if @GNULIBHEADERS_OVERRIDE_WINT_T@
- # undef WINT_MIN
- # undef WINT_MAX
- # define WINT_MIN 0x0U
-@@ -598,7 +598,7 @@ typedef int _verify_intmax_size[sizeof (
- /* wint_t limits */
- /* If gnulib's <wchar.h> or <wctype.h> overrides wint_t, @WINT_T_SUFFIX@ is not
-    accurate, therefore use the definitions from above.  */
--# if !@GNULIB_OVERRIDES_WINT_T@
-+# if !@GNULIBHEADERS_OVERRIDE_WINT_T@
- #  undef WINT_MIN
- #  undef WINT_MAX
- #  if @HAVE_SIGNED_WINT_T@
---- a/gnulib/lib/stdio.in.h
-+++ b/gnulib/lib/stdio.in.h
-@@ -2,18 +2,18 @@
- 
-    Copyright (C) 2004, 2007-2021 Free Software Foundation, Inc.
- 
--   This program is free software; you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3, or (at your option)
--   any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
--   along with this program; if not, see <https://www.gnu.org/licenses/>.  */
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #if __GNUC__ >= 3
- @PRAGMA_SYSTEM_HEADER@
-@@ -242,7 +242,7 @@ _GL_WARN_ON_USE (fclose, "fclose is not
- _GL_CXXALIAS_MDA (fcloseall, int, (void));
- # else
- #  if @HAVE_DECL_FCLOSEALL@
--#   if defined __FreeBSD__
-+#   if defined __FreeBSD__ || defined __DragonFly__
- _GL_CXXALIAS_SYS (fcloseall, void, (void));
- #   else
- _GL_CXXALIAS_SYS (fcloseall, int, (void));
-@@ -1257,6 +1257,7 @@ _GL_CXXALIASWARN (scanf);
- #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
- #   define snprintf rpl_snprintf
- #  endif
-+#  define GNULIB_overrides_snprintf 1
- _GL_FUNCDECL_RPL (snprintf, int,
-                   (char *restrict str, size_t size,
-                    const char *restrict format, ...)
-@@ -1302,6 +1303,7 @@ _GL_WARN_ON_USE (snprintf, "snprintf is
- #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
- #   define sprintf rpl_sprintf
- #  endif
-+#  define GNULIB_overrides_sprintf 1
- _GL_FUNCDECL_RPL (sprintf, int,
-                   (char *restrict str, const char *restrict format, ...)
-                   _GL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (2, 3)
-@@ -1369,6 +1371,7 @@ _GL_WARN_ON_USE (tmpfile, "tmpfile is no
- #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
- #   define asprintf rpl_asprintf
- #  endif
-+#  define GNULIB_overrides_asprintf
- _GL_FUNCDECL_RPL (asprintf, int,
-                   (char **result, const char *format, ...)
-                   _GL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (2, 3)
-@@ -1390,6 +1393,7 @@ _GL_CXXALIASWARN (asprintf);
- #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
- #   define vasprintf rpl_vasprintf
- #  endif
-+#  define GNULIB_overrides_vasprintf 1
- _GL_FUNCDECL_RPL (vasprintf, int,
-                   (char **result, const char *format, va_list args)
-                   _GL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (2, 0)
-@@ -1573,6 +1577,7 @@ _GL_CXXALIASWARN (vscanf);
- #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
- #   define vsnprintf rpl_vsnprintf
- #  endif
-+#  define GNULIB_overrides_vsnprintf 1
- _GL_FUNCDECL_RPL (vsnprintf, int,
-                   (char *restrict str, size_t size,
-                    const char *restrict format, va_list args)
-@@ -1609,6 +1614,7 @@ _GL_WARN_ON_USE (vsnprintf, "vsnprintf i
- #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
- #   define vsprintf rpl_vsprintf
- #  endif
-+#  define GNULIB_overrides_vsprintf 1
- _GL_FUNCDECL_RPL (vsprintf, int,
-                   (char *restrict str,
-                    const char *restrict format, va_list args)
---- a/gnulib/lib/stdlib.in.h
-+++ b/gnulib/lib/stdlib.in.h
-@@ -2,17 +2,17 @@
- 
-    Copyright (C) 1995, 2001-2004, 2006-2021 Free Software Foundation, Inc.
- 
--   This program is free software: you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3 of the License, or
--   (at your option) any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
-+   You should have received a copy of the GNU Lesser General Public License
-    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #if __GNUC__ >= 3
-@@ -1032,12 +1032,23 @@ _GL_WARN_ON_USE (realloc, "realloc is no
- 
- 
- #if @GNULIB_REALLOCARRAY@
--# if ! @HAVE_REALLOCARRAY@
-+# if @REPLACE_REALLOCARRAY@
-+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-+#   undef reallocarray
-+#   define reallocarray rpl_reallocarray
-+#  endif
-+_GL_FUNCDECL_RPL (reallocarray, void *,
-+                  (void *ptr, size_t nmemb, size_t size));
-+_GL_CXXALIAS_RPL (reallocarray, void *,
-+                  (void *ptr, size_t nmemb, size_t size));
-+# else
-+#  if ! @HAVE_REALLOCARRAY@
- _GL_FUNCDECL_SYS (reallocarray, void *,
-                   (void *ptr, size_t nmemb, size_t size));
--# endif
-+#  endif
- _GL_CXXALIAS_SYS (reallocarray, void *,
-                   (void *ptr, size_t nmemb, size_t size));
-+# endif
- _GL_CXXALIASWARN (reallocarray);
- #elif defined GNULIB_POSIXCHECK
- # undef reallocarray
-@@ -1202,6 +1213,47 @@ _GL_WARN_ON_USE (strtold, "strtold is un
- # endif
- #endif
- 
-+#if @GNULIB_STRTOL@
-+/* Parse a signed integer whose textual representation starts at STRING.
-+   The integer is expected to be in base BASE (2 <= BASE <= 36); if BASE == 0,
-+   it may be decimal or octal (with prefix "0") or hexadecimal (with prefix
-+   "0x").
-+   If ENDPTR is not NULL, the address of the first byte after the integer is
-+   stored in *ENDPTR.
-+   Upon overflow, the return value is LONG_MAX or LONG_MIN, and errno is set
-+   to ERANGE.  */
-+# if @REPLACE_STRTOL@
-+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-+#   define strtol rpl_strtol
-+#  endif
-+#  define GNULIB_defined_strtol_function 1
-+_GL_FUNCDECL_RPL (strtol, long,
-+                  (const char *restrict string, char **restrict endptr,
-+                   int base)
-+                  _GL_ARG_NONNULL ((1)));
-+_GL_CXXALIAS_RPL (strtol, long,
-+                  (const char *restrict string, char **restrict endptr,
-+                   int base));
-+# else
-+#  if !@HAVE_STRTOL@
-+_GL_FUNCDECL_SYS (strtol, long,
-+                  (const char *restrict string, char **restrict endptr,
-+                   int base)
-+                  _GL_ARG_NONNULL ((1)));
-+#  endif
-+_GL_CXXALIAS_SYS (strtol, long,
-+                  (const char *restrict string, char **restrict endptr,
-+                   int base));
-+# endif
-+_GL_CXXALIASWARN (strtol);
-+#elif defined GNULIB_POSIXCHECK
-+# undef strtol
-+# if HAVE_RAW_DECL_STRTOL
-+_GL_WARN_ON_USE (strtol, "strtol is unportable - "
-+                 "use gnulib module strtol for portability");
-+# endif
-+#endif
-+
- #if @GNULIB_STRTOLL@
- /* Parse a signed integer whose textual representation starts at STRING.
-    The integer is expected to be in base BASE (2 <= BASE <= 36); if BASE == 0,
-@@ -1211,15 +1263,29 @@ _GL_WARN_ON_USE (strtold, "strtold is un
-    stored in *ENDPTR.
-    Upon overflow, the return value is LLONG_MAX or LLONG_MIN, and errno is set
-    to ERANGE.  */
--# if !@HAVE_STRTOLL@
-+# if @REPLACE_STRTOLL@
-+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-+#   define strtoll rpl_strtoll
-+#  endif
-+#  define GNULIB_defined_strtoll_function 1
-+_GL_FUNCDECL_RPL (strtoll, long long,
-+                  (const char *restrict string, char **restrict endptr,
-+                   int base)
-+                  _GL_ARG_NONNULL ((1)));
-+_GL_CXXALIAS_RPL (strtoll, long long,
-+                  (const char *restrict string, char **restrict endptr,
-+                   int base));
-+# else
-+#  if !@HAVE_STRTOLL@
- _GL_FUNCDECL_SYS (strtoll, long long,
-                   (const char *restrict string, char **restrict endptr,
-                    int base)
-                   _GL_ARG_NONNULL ((1)));
--# endif
-+#  endif
- _GL_CXXALIAS_SYS (strtoll, long long,
-                   (const char *restrict string, char **restrict endptr,
-                    int base));
-+# endif
- _GL_CXXALIASWARN (strtoll);
- #elif defined GNULIB_POSIXCHECK
- # undef strtoll
-@@ -1229,6 +1295,46 @@ _GL_WARN_ON_USE (strtoll, "strtoll is un
- # endif
- #endif
- 
-+#if @GNULIB_STRTOUL@
-+/* Parse an unsigned integer whose textual representation starts at STRING.
-+   The integer is expected to be in base BASE (2 <= BASE <= 36); if BASE == 0,
-+   it may be decimal or octal (with prefix "0") or hexadecimal (with prefix
-+   "0x").
-+   If ENDPTR is not NULL, the address of the first byte after the integer is
-+   stored in *ENDPTR.
-+   Upon overflow, the return value is ULONG_MAX, and errno is set to ERANGE.  */
-+# if @REPLACE_STRTOUL@
-+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-+#   define strtoul rpl_strtoul
-+#  endif
-+#  define GNULIB_defined_strtoul_function 1
-+_GL_FUNCDECL_RPL (strtoul, unsigned long,
-+                  (const char *restrict string, char **restrict endptr,
-+                   int base)
-+                  _GL_ARG_NONNULL ((1)));
-+_GL_CXXALIAS_RPL (strtoul, unsigned long,
-+                  (const char *restrict string, char **restrict endptr,
-+                   int base));
-+# else
-+#  if !@HAVE_STRTOUL@
-+_GL_FUNCDECL_SYS (strtoul, unsigned long,
-+                  (const char *restrict string, char **restrict endptr,
-+                   int base)
-+                  _GL_ARG_NONNULL ((1)));
-+#  endif
-+_GL_CXXALIAS_SYS (strtoul, unsigned long,
-+                  (const char *restrict string, char **restrict endptr,
-+                   int base));
-+# endif
-+_GL_CXXALIASWARN (strtoul);
-+#elif defined GNULIB_POSIXCHECK
-+# undef strtoul
-+# if HAVE_RAW_DECL_STRTOUL
-+_GL_WARN_ON_USE (strtoul, "strtoul is unportable - "
-+                 "use gnulib module strtoul for portability");
-+# endif
-+#endif
-+
- #if @GNULIB_STRTOULL@
- /* Parse an unsigned integer whose textual representation starts at STRING.
-    The integer is expected to be in base BASE (2 <= BASE <= 36); if BASE == 0,
-@@ -1238,15 +1344,29 @@ _GL_WARN_ON_USE (strtoll, "strtoll is un
-    stored in *ENDPTR.
-    Upon overflow, the return value is ULLONG_MAX, and errno is set to
-    ERANGE.  */
--# if !@HAVE_STRTOULL@
-+# if @REPLACE_STRTOULL@
-+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-+#   define strtoull rpl_strtoull
-+#  endif
-+#  define GNULIB_defined_strtoull_function 1
-+_GL_FUNCDECL_RPL (strtoull, unsigned long long,
-+                  (const char *restrict string, char **restrict endptr,
-+                   int base)
-+                  _GL_ARG_NONNULL ((1)));
-+_GL_CXXALIAS_RPL (strtoull, unsigned long long,
-+                  (const char *restrict string, char **restrict endptr,
-+                   int base));
-+# else
-+#  if !@HAVE_STRTOULL@
- _GL_FUNCDECL_SYS (strtoull, unsigned long long,
-                   (const char *restrict string, char **restrict endptr,
-                    int base)
-                   _GL_ARG_NONNULL ((1)));
--# endif
-+#  endif
- _GL_CXXALIAS_SYS (strtoull, unsigned long long,
-                   (const char *restrict string, char **restrict endptr,
-                    int base));
-+# endif
- _GL_CXXALIASWARN (strtoull);
- #elif defined GNULIB_POSIXCHECK
- # undef strtoull
---- a/gnulib/lib/stpcpy.c
-+++ b/gnulib/lib/stpcpy.c
-@@ -5,17 +5,17 @@
-    NOTE: The canonical source of this file is maintained with the GNU C Library.
-    Bugs can be reported to bug-glibc@prep.ai.mit.edu.
- 
--   This program is free software: you can redistribute it and/or modify it
--   under the terms of the GNU General Public License as published by the
--   Free Software Foundation; either version 3 of the License, or any
--   later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
-+   You should have received a copy of the GNU Lesser General Public License
-    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #include <config.h>
---- a/gnulib/lib/str-kmp.h
-+++ b/gnulib/lib/str-kmp.h
-@@ -3,18 +3,26 @@
-    Copyright (C) 2005-2021 Free Software Foundation, Inc.
-    Written by Bruno Haible <bruno@clisp.org>, 2005.
- 
--   This program is free software; you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3, or (at your option)
--   any later version.
-+   This file is free software.
-+   It is dual-licensed under "the GNU LGPLv3+ or the GNU GPLv2+".
-+   You can redistribute it and/or modify it under either
-+     - the terms of the GNU Lesser General Public License as published
-+       by the Free Software Foundation; either version 3, or (at your
-+       option) any later version, or
-+     - the terms of the GNU General Public License as published by the
-+       Free Software Foundation; either version 2, or (at your option)
-+       any later version, or
-+     - the same dual license "the GNU LGPLv3+ or the GNU GPLv2+".
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
--   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-+   Lesser General Public License and the GNU General Public License
-+   for more details.
- 
--   You should have received a copy of the GNU General Public License
--   along with this program; if not, see <https://www.gnu.org/licenses/>.  */
-+   You should have received a copy of the GNU Lesser General Public
-+   License and of the GNU General Public License along with this
-+   program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- /* Before including this file, you need to define:
-      UNIT                    The element type of the needle and haystack.
---- a/gnulib/lib/str-two-way.h
-+++ b/gnulib/lib/str-two-way.h
-@@ -3,18 +3,18 @@
-    This file is part of the GNU C Library.
-    Written by Eric Blake <ebb9@byu.net>, 2008.
- 
--   This program is free software; you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3, or (at your option)
--   any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License along
--   with this program; if not, see <https://www.gnu.org/licenses/>.  */
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- /* Before including this file, you need to include <config.h> and
-    <string.h>, and define:
---- a/gnulib/lib/strcasecmp.c
-+++ b/gnulib/lib/strcasecmp.c
-@@ -1,18 +1,18 @@
- /* Case-insensitive string comparison function.
-    Copyright (C) 1998-1999, 2005-2007, 2009-2021 Free Software Foundation, Inc.
- 
--   This program is free software; you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3, or (at your option)
--   any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
--   along with this program; if not, see <https://www.gnu.org/licenses/>.  */
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #include <config.h>
- 
---- a/gnulib/lib/strcasestr.c
-+++ b/gnulib/lib/strcasestr.c
-@@ -2,18 +2,18 @@
-    Copyright (C) 2005-2021 Free Software Foundation, Inc.
-    Written by Bruno Haible <bruno@clisp.org>, 2005.
- 
--   This program is free software; you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3, or (at your option)
--   any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
--   along with this program; if not, see <https://www.gnu.org/licenses/>.  */
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #include <config.h>
- 
---- a/gnulib/lib/strdup.c
-+++ b/gnulib/lib/strdup.c
-@@ -3,18 +3,18 @@
- 
-    This file is part of the GNU C Library.
- 
--   This program is free software; you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3, or (at your option)
--   any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License along
--   with this program; if not, see <https://www.gnu.org/licenses/>.  */
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #ifndef _LIBC
- # include <config.h>
---- a/gnulib/lib/streq.h
-+++ b/gnulib/lib/streq.h
-@@ -1,17 +1,17 @@
- /* Optimized string comparison.
-    Copyright (C) 2001-2002, 2007, 2009-2021 Free Software Foundation, Inc.
- 
--   This program is free software: you can redistribute it and/or modify it
--   under the terms of the GNU General Public License as published
--   by the Free Software Foundation; either version 3 of the License, or
--   (at your option) any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
--   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
--   General Public License for more details.
-+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
-+   You should have received a copy of the GNU Lesser General Public License
-    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- /* Written by Bruno Haible <bruno@clisp.org>.  */
---- a/gnulib/lib/strerror-override.c
-+++ b/gnulib/lib/strerror-override.c
-@@ -2,17 +2,17 @@
- 
-    Copyright (C) 2010-2021 Free Software Foundation, Inc.
- 
--   This program is free software: you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3 of the License, or
--   (at your option) any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
-+   You should have received a copy of the GNU Lesser General Public License
-    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- /* Written by Bruno Haible <bruno@clisp.org>, 2010.  */
-@@ -29,6 +29,8 @@
- # endif
- #endif
- 
-+#if !GNULIB_defined_strerror_override_macro
-+
- /* If ERRNUM maps to an errno value defined by gnulib, return a string
-    describing the error.  Otherwise return NULL.  */
- const char *
-@@ -37,12 +39,12 @@ strerror_override (int errnum)
-   /* These error messages are taken from glibc/sysdeps/gnu/errlist.c.  */
-   switch (errnum)
-     {
--#if REPLACE_STRERROR_0
-+# if REPLACE_STRERROR_0
-     case 0:
-       return "Success";
--#endif
-+# endif
- 
--#if GNULIB_defined_ESOCK /* native Windows platforms with older <errno.h> */
-+# if GNULIB_defined_ESOCK /* native Windows platforms with older <errno.h> */
-     case EINPROGRESS:
-       return "Operation now in progress";
-     case EALREADY:
-@@ -89,8 +91,8 @@ strerror_override (int errnum)
-       return "No route to host";
-     case EWOULDBLOCK:
-       return "Operation would block";
--#endif
--#if GNULIB_defined_ESTREAMS /* native Windows platforms with older <errno.h> */
-+# endif
-+# if GNULIB_defined_ESTREAMS /* native Windows platforms with older <errno.h> */
-     case ETXTBSY:
-       return "Text file busy";
-     case ENODATA:
-@@ -103,8 +105,8 @@ strerror_override (int errnum)
-       return "Timer expired";
-     case EOTHER:
-       return "Other error";
--#endif
--#if GNULIB_defined_EWINSOCK /* native Windows platforms */
-+# endif
-+# if GNULIB_defined_EWINSOCK /* native Windows platforms */
-     case ESOCKTNOSUPPORT:
-       return "Socket type not supported";
-     case EPFNOSUPPORT:
-@@ -125,7 +127,7 @@ strerror_override (int errnum)
-       return "Stale NFS file handle";
-     case EREMOTE:
-       return "Object is remote";
--# if HAVE_WINSOCK2_H
-+#  if HAVE_WINSOCK2_H
-       /* WSA_INVALID_HANDLE maps to EBADF */
-       /* WSA_NOT_ENOUGH_MEMORY maps to ENOMEM */
-       /* WSA_INVALID_PARAMETER maps to EINVAL */
-@@ -213,90 +215,92 @@ strerror_override (int errnum)
-     case WSANO_DATA:
-       return "Valid name, no data record of requested type";
-       /* WSA_QOS_* omitted */
-+#  endif
- # endif
--#endif
- 
--#if GNULIB_defined_ENOMSG
-+# if GNULIB_defined_ENOMSG
-     case ENOMSG:
-       return "No message of desired type";
--#endif
-+# endif
- 
--#if GNULIB_defined_EIDRM
-+# if GNULIB_defined_EIDRM
-     case EIDRM:
-       return "Identifier removed";
--#endif
-+# endif
- 
--#if GNULIB_defined_ENOLINK
-+# if GNULIB_defined_ENOLINK
-     case ENOLINK:
-       return "Link has been severed";
--#endif
-+# endif
- 
--#if GNULIB_defined_EPROTO
-+# if GNULIB_defined_EPROTO
-     case EPROTO:
-       return "Protocol error";
--#endif
-+# endif
- 
--#if GNULIB_defined_EMULTIHOP
-+# if GNULIB_defined_EMULTIHOP
-     case EMULTIHOP:
-       return "Multihop attempted";
--#endif
-+# endif
- 
--#if GNULIB_defined_EBADMSG
-+# if GNULIB_defined_EBADMSG
-     case EBADMSG:
-       return "Bad message";
--#endif
-+# endif
- 
--#if GNULIB_defined_EOVERFLOW
-+# if GNULIB_defined_EOVERFLOW
-     case EOVERFLOW:
-       return "Value too large for defined data type";
--#endif
-+# endif
- 
--#if GNULIB_defined_ENOTSUP
-+# if GNULIB_defined_ENOTSUP
-     case ENOTSUP:
-       return "Not supported";
--#endif
-+# endif
- 
--#if GNULIB_defined_ENETRESET
-+# if GNULIB_defined_ENETRESET
-     case ENETRESET:
-       return "Network dropped connection on reset";
--#endif
-+# endif
- 
--#if GNULIB_defined_ECONNABORTED
-+# if GNULIB_defined_ECONNABORTED
-     case ECONNABORTED:
-       return "Software caused connection abort";
--#endif
-+# endif
- 
--#if GNULIB_defined_ESTALE
-+# if GNULIB_defined_ESTALE
-     case ESTALE:
-       return "Stale NFS file handle";
--#endif
-+# endif
- 
--#if GNULIB_defined_EDQUOT
-+# if GNULIB_defined_EDQUOT
-     case EDQUOT:
-       return "Disk quota exceeded";
--#endif
-+# endif
- 
--#if GNULIB_defined_ECANCELED
-+# if GNULIB_defined_ECANCELED
-     case ECANCELED:
-       return "Operation canceled";
--#endif
-+# endif
- 
--#if GNULIB_defined_EOWNERDEAD
-+# if GNULIB_defined_EOWNERDEAD
-     case EOWNERDEAD:
-       return "Owner died";
--#endif
-+# endif
- 
--#if GNULIB_defined_ENOTRECOVERABLE
-+# if GNULIB_defined_ENOTRECOVERABLE
-     case ENOTRECOVERABLE:
-       return "State not recoverable";
--#endif
-+# endif
- 
--#if GNULIB_defined_EILSEQ
-+# if GNULIB_defined_EILSEQ
-     case EILSEQ:
-       return "Invalid or incomplete multibyte or wide character";
--#endif
-+# endif
- 
-     default:
-       return NULL;
-     }
- }
-+
-+#endif
---- a/gnulib/lib/strerror-override.h
-+++ b/gnulib/lib/strerror-override.h
-@@ -2,17 +2,17 @@
- 
-    Copyright (C) 2010-2021 Free Software Foundation, Inc.
- 
--   This program is free software: you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3 of the License, or
--   (at your option) any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
-+   You should have received a copy of the GNU Lesser General Public License
-    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #ifndef _GL_STRERROR_OVERRIDE_H
-@@ -51,6 +51,7 @@
- extern const char *strerror_override (int errnum) _GL_ATTRIBUTE_CONST;
- # else
- #  define strerror_override(ignored) NULL
-+#  define GNULIB_defined_strerror_override_macro 1
- # endif
- 
- #endif /* _GL_STRERROR_OVERRIDE_H */
---- a/gnulib/lib/strerror.c
-+++ b/gnulib/lib/strerror.c
-@@ -2,17 +2,17 @@
- 
-    Copyright (C) 2007-2021 Free Software Foundation, Inc.
- 
--   This program is free software: you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3 of the License, or
--   (at your option) any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
-+   You should have received a copy of the GNU Lesser General Public License
-    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #include <config.h>
---- a/gnulib/lib/string.in.h
-+++ b/gnulib/lib/string.in.h
-@@ -2,18 +2,18 @@
- 
-    Copyright (C) 1995-1996, 2001-2021 Free Software Foundation, Inc.
- 
--   This program is free software; you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3, or (at your option)
--   any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
--   along with this program; if not, see <https://www.gnu.org/licenses/>.  */
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #if __GNUC__ >= 3
- @PRAGMA_SYSTEM_HEADER@
-@@ -446,7 +446,7 @@ _GL_WARN_ON_USE (strdup, "strdup is unpo
- #elif @GNULIB_MDA_STRDUP@
- /* On native Windows, map 'creat' to '_creat', so that -loldnames is not
-    required.  In C++ with GNULIB_NAMESPACE, avoid differences between
--   platforms by defining GNULIB_NAMESPACE::creat always.  */
-+   platforms by defining GNULIB_NAMESPACE::strdup always.  */
- # if defined _WIN32 && !defined __CYGWIN__
- #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
- #   undef strdup
---- a/gnulib/lib/strings.in.h
-+++ b/gnulib/lib/strings.in.h
-@@ -2,18 +2,18 @@
- 
-    Copyright (C) 2007-2021 Free Software Foundation, Inc.
- 
--   This program is free software; you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3, or (at your option)
--   any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
--   along with this program; if not, see <https://www.gnu.org/licenses/>.  */
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #ifndef _@GUARD_PREFIX@_STRINGS_H
- 
---- a/gnulib/lib/strncasecmp.c
-+++ b/gnulib/lib/strncasecmp.c
-@@ -1,18 +1,18 @@
- /* strncasecmp.c -- case insensitive string comparator
-    Copyright (C) 1998-1999, 2005-2007, 2009-2021 Free Software Foundation, Inc.
- 
--   This program is free software; you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3, or (at your option)
--   any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
--   along with this program; if not, see <https://www.gnu.org/licenses/>.  */
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #include <config.h>
- 
---- a/gnulib/lib/strndup.c
-+++ b/gnulib/lib/strndup.c
-@@ -3,18 +3,18 @@
-    Copyright (C) 1996-1998, 2001-2003, 2005-2007, 2009-2021 Free Software
-    Foundation, Inc.
- 
--   This program is free software; you can redistribute it and/or modify it
--   under the terms of the GNU General Public License as published by the
--   Free Software Foundation; either version 3, or (at your option) any
--   later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
--   along with this program; if not, see <https://www.gnu.org/licenses/>.  */
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #include <config.h>
- 
---- a/gnulib/lib/strnlen.c
-+++ b/gnulib/lib/strnlen.c
-@@ -2,18 +2,18 @@
-    Copyright (C) 2005-2007, 2009-2021 Free Software Foundation, Inc.
-    Written by Simon Josefsson.
- 
--   This program is free software; you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3, or (at your option)
--   any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
--   along with this program; if not, see <https://www.gnu.org/licenses/>.  */
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #include <config.h>
- 
---- a/gnulib/lib/strnlen1.c
-+++ b/gnulib/lib/strnlen1.c
-@@ -1,17 +1,17 @@
- /* Find the length of STRING + 1, but scan at most MAXLEN bytes.
-    Copyright (C) 2005-2006, 2009-2021 Free Software Foundation, Inc.
- 
--   This program is free software: you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3 of the License, or
--   (at your option) any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
-+   You should have received a copy of the GNU Lesser General Public License
-    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #include <config.h>
---- a/gnulib/lib/strnlen1.h
-+++ b/gnulib/lib/strnlen1.h
-@@ -1,17 +1,17 @@
- /* Find the length of STRING + 1, but scan at most MAXLEN bytes.
-    Copyright (C) 2005, 2009-2021 Free Software Foundation, Inc.
- 
--   This program is free software: you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3 of the License, or
--   (at your option) any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
-+   You should have received a copy of the GNU Lesser General Public License
-    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #ifndef _STRNLEN1_H
---- a/gnulib/lib/strstr.c
-+++ b/gnulib/lib/strstr.c
-@@ -2,18 +2,18 @@
-    Foundation, Inc.
-    This file is part of the GNU C Library.
- 
--   This program is free software; you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3, or (at your option)
--   any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License along
--   with this program; if not, see <https://www.gnu.org/licenses/>.  */
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- /* This particular implementation was written by Eric Blake, 2008.  */
- 
---- a/gnulib/lib/sys_stat.in.h
-+++ b/gnulib/lib/sys_stat.in.h
-@@ -1,18 +1,18 @@
- /* Provide a more complete sys/stat.h header file.
-    Copyright (C) 2005-2021 Free Software Foundation, Inc.
- 
--   This program is free software; you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3, or (at your option)
--   any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
--   along with this program; if not, see <https://www.gnu.org/licenses/>.  */
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- /* Written by Eric Blake, Paul Eggert, and Jim Meyering.  */
- 
---- a/gnulib/lib/sys_types.in.h
-+++ b/gnulib/lib/sys_types.in.h
-@@ -2,18 +2,18 @@
- 
-    Copyright (C) 2011-2021 Free Software Foundation, Inc.
- 
--   This program is free software; you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3, or (at your option)
--   any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
--   along with this program; if not, see <https://www.gnu.org/licenses/>.  */
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #if __GNUC__ >= 3
- @PRAGMA_SYSTEM_HEADER@
---- a/gnulib/lib/time.in.h
-+++ b/gnulib/lib/time.in.h
-@@ -2,18 +2,18 @@
- 
-    Copyright (C) 2007-2021 Free Software Foundation, Inc.
- 
--   This program is free software; you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3, or (at your option)
--   any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
--   along with this program; if not, see <https://www.gnu.org/licenses/>.  */
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #if __GNUC__ >= 3
- @PRAGMA_SYSTEM_HEADER@
-@@ -340,22 +340,60 @@ _GL_CXXALIASWARN (strftime);
- # endif
- 
- # if defined _GNU_SOURCE && @GNULIB_TIME_RZ@ && ! @HAVE_TIMEZONE_T@
-+/* Functions that use a first-class time zone data type, instead of
-+   relying on an implicit global time zone.
-+   Inspired by NetBSD.  */
-+
-+/* Represents a time zone.
-+   (timezone_t) NULL stands for UTC.  */
- typedef struct tm_zone *timezone_t;
-+
-+/* tzalloc (name)
-+   Returns a time zone object for the given time zone NAME.  This object
-+   represents the time zone that other functions would use it the TZ
-+   environment variable was set to NAME.
-+   If NAME is NULL, the result represents the time zone that other functions
-+   would use it the TZ environment variable was unset.
-+   May return NULL if NAME is invalid (this is platform dependent) or
-+   upon memory allocation failure.  */
- _GL_FUNCDECL_SYS (tzalloc, timezone_t, (char const *__name));
- _GL_CXXALIAS_SYS (tzalloc, timezone_t, (char const *__name));
-+
-+/* tzfree (tz)
-+   Frees a time zone object.
-+   The argument must have been returned by tzalloc().  */
- _GL_FUNCDECL_SYS (tzfree, void, (timezone_t __tz));
- _GL_CXXALIAS_SYS (tzfree, void, (timezone_t __tz));
-+
-+/* localtime_rz (tz, &t, &result)
-+   Converts an absolute time T to a broken-down time RESULT, assuming the
-+   time zone TZ.
-+   This function is like 'localtime_r', but relies on the argument TZ instead
-+   of an implicit global time zone.  */
- _GL_FUNCDECL_SYS (localtime_rz, struct tm *,
-                   (timezone_t __tz, time_t const *restrict __timer,
-                    struct tm *restrict __result) _GL_ARG_NONNULL ((2, 3)));
- _GL_CXXALIAS_SYS (localtime_rz, struct tm *,
-                   (timezone_t __tz, time_t const *restrict __timer,
-                    struct tm *restrict __result));
-+
-+/* mktime_z (tz, &tm)
-+   Normalizes the broken-down time TM and converts it to an absolute time,
-+   assuming the time zone TZ.  Returns the absolute time.
-+   This function is like 'mktime', but relies on the argument TZ instead
-+   of an implicit global time zone.  */
- _GL_FUNCDECL_SYS (mktime_z, time_t,
--                  (timezone_t __tz, struct tm *restrict __result)
-+                  (timezone_t __tz, struct tm *restrict __tm)
-                   _GL_ARG_NONNULL ((2)));
- _GL_CXXALIAS_SYS (mktime_z, time_t,
--                  (timezone_t __tz, struct tm *restrict __result));
-+                  (timezone_t __tz, struct tm *restrict __tm));
-+
-+/* Time zone abbreviation strings (returned by 'localtime_rz' or 'mktime_z'
-+   in the 'tm_zone' member of 'struct tm') are valid as long as
-+     - the 'struct tm' argument is not destroyed or overwritten,
-+   and
-+     - the 'timezone_t' argument is not freed through tzfree().  */
-+
- # endif
- 
- /* Convert TM to a time_t value, assuming UTC.  */
---- a/gnulib/lib/unistd.c
-+++ b/gnulib/lib/unistd.c
-@@ -1,4 +1,22 @@
-+/* Inline functions for <unistd.h>.
-+
-+   Copyright (C) 2012-2021 Free Software Foundation, Inc.
-+
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
-+
-+   This file is distributed in the hope that it will be useful,
-+   but WITHOUT ANY WARRANTY; without even the implied warranty of
-+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+   GNU Lesser General Public License for more details.
-+
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
-+
- #include <config.h>
-+
- #define _GL_UNISTD_INLINE _GL_EXTERN_INLINE
- #include "unistd.h"
- typedef int dummy;
---- a/gnulib/lib/unistd.in.h
-+++ b/gnulib/lib/unistd.in.h
-@@ -1,18 +1,18 @@
- /* Substitute for and wrapper around <unistd.h>.
-    Copyright (C) 2003-2021 Free Software Foundation, Inc.
- 
--   This program is free software; you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3, or (at your option)
--   any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
--   along with this program; if not, see <https://www.gnu.org/licenses/>.  */
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #ifndef _@GUARD_PREFIX@_UNISTD_H
- 
-@@ -1521,6 +1521,7 @@ _GL_WARN_ON_USE (group_member, "group_me
- #   undef isatty
- #   define isatty rpl_isatty
- #  endif
-+#  define GNULIB_defined_isatty 1
- _GL_FUNCDECL_RPL (isatty, int, (int fd));
- _GL_CXXALIAS_RPL (isatty, int, (int fd));
- # elif defined _WIN32 && !defined __CYGWIN__
-@@ -2027,15 +2028,23 @@ _GL_WARN_ON_USE (sleep, "sleep is unport
- #if @GNULIB_MDA_SWAB@
- /* On native Windows, map 'swab' to '_swab', so that -loldnames is not
-    required.  In C++ with GNULIB_NAMESPACE, avoid differences between
--   platforms by defining GNULIB_NAMESPACE::creat always.  */
-+   platforms by defining GNULIB_NAMESPACE::swab always.  */
- # if defined _WIN32 && !defined __CYGWIN__
- #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
- #   undef swab
- #   define swab _swab
- #  endif
--_GL_CXXALIAS_MDA (swab, void, (char *from, char *to, int n));
--# else
-+/* Need to cast, because in old mingw the arguments are
-+                             (const char *from, char *to, size_t n).  */
-+_GL_CXXALIAS_MDA_CAST (swab, void, (char *from, char *to, int n));
-+# else
-+#  if defined __hpux /* HP-UX */
-+_GL_CXXALIAS_SYS (swab, void, (const char *from, char *to, int n));
-+#  elif defined __sun && !defined _XPG4 /* Solaris */
-+_GL_CXXALIAS_SYS (swab, void, (const char *from, char *to, ssize_t n));
-+#  else
- _GL_CXXALIAS_SYS (swab, void, (const void *from, void *to, ssize_t n));
-+#  endif
- # endif
- _GL_CXXALIASWARN (swab);
- #endif
---- a/gnulib/lib/unitypes.in.h
-+++ b/gnulib/lib/unitypes.in.h
-@@ -1,17 +1,17 @@
- /* Elementary types and macros for the GNU UniString library.
-    Copyright (C) 2002, 2005-2006, 2009-2021 Free Software Foundation, Inc.
- 
--   This program is free software: you can redistribute it and/or modify it
--   under the terms of the GNU General Public License as published
--   by the Free Software Foundation; either version 3 of the License, or
--   (at your option) any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
--   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
--   General Public License for more details.
-+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
-+   You should have received a copy of the GNU Lesser General Public License
-    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #ifndef _UNITYPES_H
---- a/gnulib/lib/uniwidth.in.h
-+++ b/gnulib/lib/uniwidth.in.h
-@@ -2,17 +2,17 @@
-    Copyright (C) 2001-2002, 2005, 2007, 2009-2021 Free Software Foundation,
-    Inc.
- 
--   This program is free software: you can redistribute it and/or modify it
--   under the terms of the GNU General Public License as published
--   by the Free Software Foundation; either version 3 of the License, or
--   (at your option) any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
--   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
--   General Public License for more details.
-+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
-+   You should have received a copy of the GNU Lesser General Public License
-    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #ifndef _UNIWIDTH_H
---- a/gnulib/lib/uniwidth/cjk.h
-+++ b/gnulib/lib/uniwidth/cjk.h
-@@ -2,17 +2,17 @@
-    Copyright (C) 2001-2002, 2005-2007, 2009-2021 Free Software Foundation, Inc.
-    Written by Bruno Haible <bruno@clisp.org>, 2002.
- 
--   This program is free software: you can redistribute it and/or modify it
--   under the terms of the GNU General Public License as published
--   by the Free Software Foundation; either version 3 of the License, or
--   (at your option) any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
--   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
--   General Public License for more details.
-+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
-+   You should have received a copy of the GNU Lesser General Public License
-    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #include "streq.h"
---- a/gnulib/lib/uniwidth/width.c
-+++ b/gnulib/lib/uniwidth/width.c
-@@ -2,17 +2,17 @@
-    Copyright (C) 2001-2002, 2006-2021 Free Software Foundation, Inc.
-    Written by Bruno Haible <bruno@clisp.org>, 2002.
- 
--   This program is free software: you can redistribute it and/or modify it
--   under the terms of the GNU General Public License as published
--   by the Free Software Foundation; either version 3 of the License, or
--   (at your option) any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
--   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
--   General Public License for more details.
-+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
-+   You should have received a copy of the GNU Lesser General Public License
-    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #include <config.h>
---- a/gnulib/lib/vasnprintf.c
-+++ b/gnulib/lib/vasnprintf.c
-@@ -1,18 +1,18 @@
- /* vsprintf with automatic memory allocation.
-    Copyright (C) 1999, 2002-2021 Free Software Foundation, Inc.
- 
--   This program is free software; you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3, or (at your option)
--   any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License along
--   with this program; if not, see <https://www.gnu.org/licenses/>.  */
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- /* This file can be parametrized with the following macros:
-      VASNPRINTF         The name of the function being defined.
-@@ -60,9 +60,7 @@
- #ifndef VASNPRINTF
- # include <config.h>
- #endif
--#ifndef IN_LIBINTL
--# include <alloca.h>
--#endif
-+#include <alloca.h>
- 
- /* Specification.  */
- #ifndef VASNPRINTF
-@@ -1859,6 +1857,7 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *
-     /* errno is already set.  */
-     return NULL;
- 
-+  /* Frees the memory allocated by this function.  Preserves errno.  */
- #define CLEANUP() \
-   if (d.dir != d.direct_alloc_dir)                                      \
-     free (d.dir);                                                       \
-@@ -1923,7 +1922,7 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *
- 
-     /* Ensures that allocated >= needed.  Aborts through a jump to
-        out_of_memory if needed is SIZE_MAX or otherwise too big.  */
--#define ENSURE_ALLOCATION(needed) \
-+#define ENSURE_ALLOCATION_ELSE(needed, oom_statement) \
-     if ((needed) > allocated)                                                \
-       {                                                                      \
-         size_t memory_size;                                                  \
-@@ -1934,17 +1933,19 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *
-           allocated = (needed);                                              \
-         memory_size = xtimes (allocated, sizeof (DCHAR_T));                  \
-         if (size_overflow_p (memory_size))                                   \
--          goto out_of_memory;                                                \
-+          oom_statement                                                      \
-         if (result == resultbuf || result == NULL)                           \
-           memory = (DCHAR_T *) malloc (memory_size);                         \
-         else                                                                 \
-           memory = (DCHAR_T *) realloc (result, memory_size);                \
-         if (memory == NULL)                                                  \
--          goto out_of_memory;                                                \
-+          oom_statement                                                      \
-         if (result == resultbuf && length > 0)                               \
-           DCHAR_CPY (memory, result, length);                                \
-         result = memory;                                                     \
-       }
-+#define ENSURE_ALLOCATION(needed) \
-+  ENSURE_ALLOCATION_ELSE((needed), goto out_of_memory; )
- 
-     for (cp = format, i = 0, dp = &d.dir[0]; ; cp = dp->dir_end, i++, dp++)
-       {
-@@ -2183,18 +2184,17 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *
- #  endif
-                         if (converted == NULL)
-                           {
--                            int saved_errno = errno;
-                             if (!(result == resultbuf || result == NULL))
-                               free (result);
-                             if (buf_malloced != NULL)
-                               free (buf_malloced);
-                             CLEANUP ();
--                            errno = saved_errno;
-                             return NULL;
-                           }
-                         if (converted != result + length)
-                           {
--                            ENSURE_ALLOCATION (xsum (length, converted_len));
-+                            ENSURE_ALLOCATION_ELSE (xsum (length, converted_len),
-+                                                    { free (converted); goto out_of_memory; });
-                             DCHAR_CPY (result + length, converted, converted_len);
-                             free (converted);
-                           }
-@@ -2309,18 +2309,17 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *
- #  endif
-                         if (converted == NULL)
-                           {
--                            int saved_errno = errno;
-                             if (!(result == resultbuf || result == NULL))
-                               free (result);
-                             if (buf_malloced != NULL)
-                               free (buf_malloced);
-                             CLEANUP ();
--                            errno = saved_errno;
-                             return NULL;
-                           }
-                         if (converted != result + length)
-                           {
--                            ENSURE_ALLOCATION (xsum (length, converted_len));
-+                            ENSURE_ALLOCATION_ELSE (xsum (length, converted_len),
-+                                                    { free (converted); goto out_of_memory; });
-                             DCHAR_CPY (result + length, converted, converted_len);
-                             free (converted);
-                           }
-@@ -2435,18 +2434,17 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *
- #  endif
-                         if (converted == NULL)
-                           {
--                            int saved_errno = errno;
-                             if (!(result == resultbuf || result == NULL))
-                               free (result);
-                             if (buf_malloced != NULL)
-                               free (buf_malloced);
-                             CLEANUP ();
--                            errno = saved_errno;
-                             return NULL;
-                           }
-                         if (converted != result + length)
-                           {
--                            ENSURE_ALLOCATION (xsum (length, converted_len));
-+                            ENSURE_ALLOCATION_ELSE (xsum (length, converted_len),
-+                                                    { free (converted); goto out_of_memory; });
-                             DCHAR_CPY (result + length, converted, converted_len);
-                             free (converted);
-                           }
-@@ -2852,14 +2850,12 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *
-                                               NULL, &tmpdst_len);
-                   if (tmpdst == NULL)
-                     {
--                      int saved_errno = errno;
-                       free (tmpsrc);
-                       if (!(result == resultbuf || result == NULL))
-                         free (result);
-                       if (buf_malloced != NULL)
-                         free (buf_malloced);
-                       CLEANUP ();
--                      errno = saved_errno;
-                       return NULL;
-                     }
-                   free (tmpsrc);
-@@ -2951,7 +2947,8 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *
-                         }
-                     }
- #  else
--                  ENSURE_ALLOCATION (xsum (length, tmpdst_len));
-+                  ENSURE_ALLOCATION_ELSE (xsum (length, tmpdst_len),
-+                                          { free (tmpdst); goto out_of_memory; });
-                   DCHAR_CPY (result + length, tmpdst, tmpdst_len);
-                   free (tmpdst);
-                   length += tmpdst_len;
-@@ -3079,13 +3076,11 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *
-                                               NULL, &tmpdst_len);
-                   if (tmpdst == NULL)
-                     {
--                      int saved_errno = errno;
-                       if (!(result == resultbuf || result == NULL))
-                         free (result);
-                       if (buf_malloced != NULL)
-                         free (buf_malloced);
-                       CLEANUP ();
--                      errno = saved_errno;
-                       return NULL;
-                     }
- # endif
-@@ -3156,7 +3151,8 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *
-                         }
-                     }
- # else
--                  ENSURE_ALLOCATION (xsum (length, tmpdst_len));
-+                  ENSURE_ALLOCATION_ELSE (xsum (length, tmpdst_len),
-+                                          { free (tmpdst); goto out_of_memory; });
-                   DCHAR_CPY (result + length, tmpdst, tmpdst_len);
-                   free (tmpdst);
-                   length += tmpdst_len;
-@@ -5449,15 +5445,14 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *
-                     /* Attempt to handle failure.  */
-                     if (count < 0)
-                       {
--                        /* SNPRINTF or sprintf failed.  Save and use the errno
--                           that it has set, if any.  */
--                        int saved_errno = errno;
--                        if (saved_errno == 0)
-+                        /* SNPRINTF or sprintf failed.  Use the errno that it
-+                           has set, if any.  */
-+                        if (errno == 0)
-                           {
-                             if (dp->conversion == 'c' || dp->conversion == 's')
--                              saved_errno = EILSEQ;
-+                              errno = EILSEQ;
-                             else
--                              saved_errno = EINVAL;
-+                              errno = EINVAL;
-                           }
- 
-                         if (!(result == resultbuf || result == NULL))
-@@ -5466,7 +5461,6 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *
-                           free (buf_malloced);
-                         CLEANUP ();
- 
--                        errno = saved_errno;
-                         return NULL;
-                       }
- 
-@@ -5602,16 +5596,15 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *
-                                                     NULL, &tmpdst_len);
-                         if (tmpdst == NULL)
-                           {
--                            int saved_errno = errno;
-                             if (!(result == resultbuf || result == NULL))
-                               free (result);
-                             if (buf_malloced != NULL)
-                               free (buf_malloced);
-                             CLEANUP ();
--                            errno = saved_errno;
-                             return NULL;
-                           }
--                        ENSURE_ALLOCATION (xsum (length, tmpdst_len));
-+                        ENSURE_ALLOCATION_ELSE (xsum (length, tmpdst_len),
-+                                                { free (tmpdst); goto out_of_memory; });
-                         DCHAR_CPY (result + length, tmpdst, tmpdst_len);
-                         free (tmpdst);
-                         count = tmpdst_len;
---- a/gnulib/lib/vasnprintf.h
-+++ b/gnulib/lib/vasnprintf.h
-@@ -1,18 +1,18 @@
- /* vsprintf with automatic memory allocation.
-    Copyright (C) 2002-2004, 2007-2021 Free Software Foundation, Inc.
- 
--   This program is free software; you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3, or (at your option)
--   any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License along
--   with this program; if not, see <https://www.gnu.org/licenses/>.  */
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #ifndef _VASNPRINTF_H
- #define _VASNPRINTF_H
---- a/gnulib/lib/vasprintf.c
-+++ b/gnulib/lib/vasprintf.c
-@@ -1,18 +1,18 @@
- /* Formatted output to strings.
-    Copyright (C) 1999, 2002, 2006-2021 Free Software Foundation, Inc.
- 
--   This program is free software; you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3, or (at your option)
--   any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License along
--   with this program; if not, see <https://www.gnu.org/licenses/>.  */
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #include <config.h>
- 
---- a/gnulib/lib/verify.h
-+++ b/gnulib/lib/verify.h
-@@ -2,17 +2,17 @@
- 
-    Copyright (C) 2005-2006, 2009-2021 Free Software Foundation, Inc.
- 
--   This program is free software: you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3 of the License, or
--   (at your option) any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
-+   You should have received a copy of the GNU Lesser General Public License
-    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- /* Written by Paul Eggert, Bruno Haible, and Jim Meyering.  */
---- a/gnulib/lib/warn-on-use.h
-+++ b/gnulib/lib/warn-on-use.h
-@@ -2,16 +2,16 @@
-    Copyright (C) 2010-2021 Free Software Foundation, Inc.
- 
-    This program is free software: you can redistribute it and/or modify it
--   under the terms of the GNU General Public License as published
--   by the Free Software Foundation; either version 3 of the License, or
-+   under the terms of the GNU Lesser General Public License as published
-+   by the Free Software Foundation; either version 2 of the License, or
-    (at your option) any later version.
- 
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
--   General Public License for more details.
-+   Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
-+   You should have received a copy of the GNU Lesser General Public License
-    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- /* _GL_WARN_ON_USE (function, "literal string") issues a declaration
---- a/gnulib/lib/wchar.in.h
-+++ b/gnulib/lib/wchar.in.h
-@@ -2,18 +2,18 @@
- 
-    Copyright (C) 2007-2021 Free Software Foundation, Inc.
- 
--   This program is free software; you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3, or (at your option)
--   any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
--   along with this program; if not, see <https://www.gnu.org/licenses/>.  */
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- /* Written by Eric Blake.  */
- 
-@@ -111,7 +111,7 @@
- /* mingw and MSVC define wint_t as 'unsigned short' in <crtdefs.h> or
-    <stddef.h>.  This is too small: ISO C 99 section 7.24.1.(2) says that
-    wint_t must be "unchanged by default argument promotions".  Override it.  */
--# if @GNULIB_OVERRIDES_WINT_T@
-+# if @GNULIBHEADERS_OVERRIDE_WINT_T@
- #  if !GNULIB_defined_wint_t
- #   if @HAVE_CRTDEFS_H@
- #    include <crtdefs.h>
---- a/gnulib/lib/wcrtomb.c
-+++ b/gnulib/lib/wcrtomb.c
-@@ -2,17 +2,17 @@
-    Copyright (C) 2008-2021 Free Software Foundation, Inc.
-    Written by Bruno Haible <bruno@clisp.org>, 2008.
- 
--   This program is free software: you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3 of the License, or
--   (at your option) any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
-+   You should have received a copy of the GNU Lesser General Public License
-    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #include <config.h>
---- a/gnulib/lib/wctype-h.c
-+++ b/gnulib/lib/wctype-h.c
-@@ -1,4 +1,23 @@
-+/* Inline functions for <wctype.h>.
-+
-+   Copyright (C) 2012-2021 Free Software Foundation, Inc.
-+
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
-+
-+   This file is distributed in the hope that it will be useful,
-+   but WITHOUT ANY WARRANTY; without even the implied warranty of
-+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+   GNU Lesser General Public License for more details.
-+
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
-+
- /* Normally this would be wctype.c, but that name's already taken.  */
-+
- #include <config.h>
-+
- #define _GL_WCTYPE_INLINE _GL_EXTERN_INLINE
- #include "wctype.h"
---- a/gnulib/lib/wctype.in.h
-+++ b/gnulib/lib/wctype.in.h
-@@ -2,18 +2,18 @@
- 
-    Copyright (C) 2006-2021 Free Software Foundation, Inc.
- 
--   This program is free software; you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3, or (at your option)
--   any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
--   along with this program; if not, see <https://www.gnu.org/licenses/>.  */
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- /* Written by Bruno Haible and Paul Eggert.  */
- 
-@@ -103,7 +103,7 @@ _GL_INLINE_HEADER_BEGIN
- /* mingw and MSVC define wint_t as 'unsigned short' in <crtdefs.h> or
-    <stddef.h>.  This is too small: ISO C 99 section 7.24.1.(2) says that
-    wint_t must be "unchanged by default argument promotions".  Override it.  */
--# if @GNULIB_OVERRIDES_WINT_T@
-+# if @GNULIBHEADERS_OVERRIDE_WINT_T@
- #  if !GNULIB_defined_wint_t
- #   if @HAVE_CRTDEFS_H@
- #    include <crtdefs.h>
-@@ -132,7 +132,7 @@ typedef unsigned int rpl_wint_t;
-    same way, or not at all.  */
- # if ! @HAVE_ISWCNTRL@ || @REPLACE_ISWCNTRL@
- 
--#  if @GNULIB_OVERRIDES_WINT_T@ /* implies @REPLACE_ISWCNTRL@ */
-+#  if @GNULIBHEADERS_OVERRIDE_WINT_T@ /* implies @REPLACE_ISWCNTRL@ */
- 
- _GL_WCTYPE_INLINE int
- rpl_iswalnum (wint_t wc)
-@@ -496,7 +496,7 @@ _GL_FUNCDECL_RPL (iswxdigit, int, (wint_
- 
- # endif
- 
--# if defined __MINGW32__ && !@GNULIB_OVERRIDES_WINT_T@
-+# if defined __MINGW32__ && !@GNULIBHEADERS_OVERRIDE_WINT_T@
- 
- /* On native Windows, wchar_t is uint16_t, and wint_t is uint32_t.
-    The functions towlower and towupper are implemented in the MSVCRT library
-@@ -529,7 +529,7 @@ rpl_towupper (wint_t wc)
- #   define towupper rpl_towupper
- #  endif
- 
--# endif /* __MINGW32__ && !@GNULIB_OVERRIDES_WINT_T@ */
-+# endif /* __MINGW32__ && !@GNULIBHEADERS_OVERRIDE_WINT_T@ */
- 
- # define GNULIB_defined_wctype_functions 1
- #endif
-@@ -646,7 +646,7 @@ _GL_WARN_ON_USE (wctype, "wctype is unpo
-    The argument WC must be either a wchar_t value or WEOF.
-    The argument DESC must have been returned by the wctype() function.  */
- #if @GNULIB_ISWCTYPE@
--# if @GNULIB_OVERRIDES_WINT_T@
-+# if @GNULIBHEADERS_OVERRIDE_WINT_T@
- #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
- #   undef iswctype
- #   define iswctype rpl_iswctype
---- a/gnulib/lib/wcwidth.c
-+++ b/gnulib/lib/wcwidth.c
-@@ -1,17 +1,17 @@
- /* Determine the number of screen columns needed for a character.
-    Copyright (C) 2006-2007, 2010-2021 Free Software Foundation, Inc.
- 
--   This program is free software: you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3 of the License, or
--   (at your option) any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
-+   You should have received a copy of the GNU Lesser General Public License
-    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #include <config.h>
---- a/gnulib/lib/windows-initguard.h
-+++ b/gnulib/lib/windows-initguard.h
-@@ -1,18 +1,18 @@
- /* Init guards, somewhat like spinlocks (native Windows implementation).
-    Copyright (C) 2005-2021 Free Software Foundation, Inc.
- 
--   This program is free software; you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3, or (at your option)
--   any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
--   along with this program; if not, see <https://www.gnu.org/licenses/>.  */
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- /* Written by Bruno Haible <bruno@clisp.org>, 2005.
-    Based on GCC's gthr-win32.h.  */
---- a/gnulib/lib/windows-mutex.c
-+++ b/gnulib/lib/windows-mutex.c
-@@ -1,18 +1,18 @@
- /* Plain mutexes (native Windows implementation).
-    Copyright (C) 2005-2021 Free Software Foundation, Inc.
- 
--   This program is free software; you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3, or (at your option)
--   any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
--   along with this program; if not, see <https://www.gnu.org/licenses/>.  */
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- /* Written by Bruno Haible <bruno@clisp.org>, 2005.
-    Based on GCC's gthr-win32.h.  */
---- a/gnulib/lib/windows-mutex.h
-+++ b/gnulib/lib/windows-mutex.h
-@@ -1,18 +1,18 @@
- /* Plain mutexes (native Windows implementation).
-    Copyright (C) 2005-2021 Free Software Foundation, Inc.
- 
--   This program is free software; you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3, or (at your option)
--   any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
--   along with this program; if not, see <https://www.gnu.org/licenses/>.  */
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- /* Written by Bruno Haible <bruno@clisp.org>, 2005.
-    Based on GCC's gthr-win32.h.  */
---- a/gnulib/lib/windows-once.c
-+++ b/gnulib/lib/windows-once.c
-@@ -1,18 +1,18 @@
- /* Once-only control (native Windows implementation).
-    Copyright (C) 2005-2021 Free Software Foundation, Inc.
- 
--   This program is free software; you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3, or (at your option)
--   any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
--   along with this program; if not, see <https://www.gnu.org/licenses/>.  */
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- /* Written by Bruno Haible <bruno@clisp.org>, 2005.
-    Based on GCC's gthr-win32.h.  */
---- a/gnulib/lib/windows-once.h
-+++ b/gnulib/lib/windows-once.h
-@@ -1,18 +1,18 @@
- /* Once-only control (native Windows implementation).
-    Copyright (C) 2005-2021 Free Software Foundation, Inc.
- 
--   This program is free software; you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3, or (at your option)
--   any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
--   along with this program; if not, see <https://www.gnu.org/licenses/>.  */
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- /* Written by Bruno Haible <bruno@clisp.org>, 2005.
-    Based on GCC's gthr-win32.h.  */
---- a/gnulib/lib/windows-recmutex.c
-+++ b/gnulib/lib/windows-recmutex.c
-@@ -1,18 +1,18 @@
- /* Plain recursive mutexes (native Windows implementation).
-    Copyright (C) 2005-2021 Free Software Foundation, Inc.
- 
--   This program is free software; you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3, or (at your option)
--   any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
--   along with this program; if not, see <https://www.gnu.org/licenses/>.  */
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- /* Written by Bruno Haible <bruno@clisp.org>, 2005.
-    Based on GCC's gthr-win32.h.  */
---- a/gnulib/lib/windows-recmutex.h
-+++ b/gnulib/lib/windows-recmutex.h
-@@ -1,18 +1,18 @@
- /* Plain recursive mutexes (native Windows implementation).
-    Copyright (C) 2005-2021 Free Software Foundation, Inc.
- 
--   This program is free software; you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3, or (at your option)
--   any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
--   along with this program; if not, see <https://www.gnu.org/licenses/>.  */
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- /* Written by Bruno Haible <bruno@clisp.org>, 2005.
-    Based on GCC's gthr-win32.h.  */
---- a/gnulib/lib/windows-rwlock.c
-+++ b/gnulib/lib/windows-rwlock.c
-@@ -1,18 +1,18 @@
- /* Read-write locks (native Windows implementation).
-    Copyright (C) 2005-2021 Free Software Foundation, Inc.
- 
--   This program is free software; you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3, or (at your option)
--   any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
--   along with this program; if not, see <https://www.gnu.org/licenses/>.  */
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- /* Written by Bruno Haible <bruno@clisp.org>, 2005.
-    Based on GCC's gthr-win32.h.  */
---- a/gnulib/lib/windows-rwlock.h
-+++ b/gnulib/lib/windows-rwlock.h
-@@ -1,18 +1,18 @@
- /* Read-write locks (native Windows implementation).
-    Copyright (C) 2005-2021 Free Software Foundation, Inc.
- 
--   This program is free software; you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3, or (at your option)
--   any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
--   along with this program; if not, see <https://www.gnu.org/licenses/>.  */
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- /* Written by Bruno Haible <bruno@clisp.org>, 2005.
-    Based on GCC's gthr-win32.h.  */
---- a/gnulib/lib/xalloc-oversized.h
-+++ b/gnulib/lib/xalloc-oversized.h
-@@ -2,17 +2,17 @@
- 
-    Copyright (C) 1990-2000, 2003-2004, 2006-2021 Free Software Foundation, Inc.
- 
--   This program is free software: you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3 of the License, or
--   (at your option) any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
-+   You should have received a copy of the GNU Lesser General Public License
-    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #ifndef XALLOC_OVERSIZED_H_
-@@ -21,34 +21,39 @@
- #include <stddef.h>
- #include <stdint.h>
- 
--/* True if N * S would overflow in a size_t calculation,
--   or would generate a value larger than PTRDIFF_MAX.
-+/* True if N * S does not fit into both ptrdiff_t and size_t.
-+   N and S should be nonnegative and free of side effects.
-    This expands to a constant expression if N and S are both constants.
--   By gnulib convention, SIZE_MAX represents overflow in size
-+   By gnulib convention, SIZE_MAX represents overflow in size_t
-    calculations, so the conservative size_t-based dividend to use here
-    is SIZE_MAX - 1.  */
- #define __xalloc_oversized(n, s) \
--  ((size_t) (PTRDIFF_MAX < SIZE_MAX ? PTRDIFF_MAX : SIZE_MAX - 1) / (s) < (n))
--
--#if PTRDIFF_MAX < SIZE_MAX
--typedef ptrdiff_t __xalloc_count_type;
--#else
--typedef size_t __xalloc_count_type;
--#endif
--
--/* Return 1 if an array of N objects, each of size S, cannot exist
--   reliably due to size or ptrdiff_t arithmetic overflow.  S must be
--   positive and N must be nonnegative.  This is a macro, not a
--   function, so that it works correctly even when SIZE_MAX < N.  */
--
--#if 7 <= __GNUC__ && !defined __clang__
-+  ((s) != 0 \
-+   && ((size_t) (PTRDIFF_MAX < SIZE_MAX ? PTRDIFF_MAX : SIZE_MAX - 1) / (s) \
-+       < (n)))
-+
-+/* Return 1 if and only if an array of N objects, each of size S,
-+   cannot exist reliably because its total size in bytes would exceed
-+   MIN (PTRDIFF_MAX, SIZE_MAX - 1).
-+
-+   N and S should be nonnegative and free of side effects.
-+
-+   Warning: (xalloc_oversized (N, S) ? NULL : malloc (N * S)) can
-+   misbehave if N and S are both narrower than ptrdiff_t and size_t,
-+   and can be rewritten as (xalloc_oversized (N, S) ?  NULL
-+   : malloc (N * (size_t) S)).
-+
-+   This is a macro, not a function, so that it works even if an
-+   argument exceeds MAX (PTRDIFF_MAX, SIZE_MAX).  */
-+#if 7 <= __GNUC__ && !defined __clang__ && PTRDIFF_MAX < SIZE_MAX
- # define xalloc_oversized(n, s) \
--   __builtin_mul_overflow_p (n, s, (__xalloc_count_type) 1)
--#elif 5 <= __GNUC__ && !defined __ICC && !__STRICT_ANSI__
-+   __builtin_mul_overflow_p (n, s, (ptrdiff_t) 1)
-+#elif (5 <= __GNUC__ && !defined __ICC && !__STRICT_ANSI__ \
-+       && PTRDIFF_MAX < SIZE_MAX)
- # define xalloc_oversized(n, s) \
-    (__builtin_constant_p (n) && __builtin_constant_p (s) \
-     ? __xalloc_oversized (n, s) \
--    : ({ __xalloc_count_type __xalloc_count; \
-+    : ({ ptrdiff_t __xalloc_count; \
-          __builtin_mul_overflow (n, s, &__xalloc_count); }))
- 
- /* Other compilers use integer division; this may be slower but is
---- a/gnulib/lib/xalloc.h
-+++ b/gnulib/lib/xalloc.h
-@@ -21,7 +21,10 @@
- #include <stddef.h>
- #include <stdint.h>
- 
--#include "xalloc-oversized.h"
-+#if GNULIB_XALLOC
-+# include "idx.h"
-+# include "intprops.h"
-+#endif
- 
- #ifndef _GL_INLINE_HEADER_BEGIN
-  #error "Please include config.h first."
-@@ -50,17 +53,26 @@ extern "C" {
- 
- #if GNULIB_XALLOC
- 
--void *xmalloc (size_t s)
--      _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_ALLOC_SIZE ((1));
--void *xzalloc (size_t s)
--      _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_ALLOC_SIZE ((1));
-+void *xmalloc (size_t s) _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_ALLOC_SIZE ((1));
-+void *ximalloc (idx_t s) _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_ALLOC_SIZE ((1));
-+void *xzalloc (size_t s) _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_ALLOC_SIZE ((1));
-+void *xizalloc (idx_t s) _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_ALLOC_SIZE ((1));
- void *xcalloc (size_t n, size_t s)
--      _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_ALLOC_SIZE ((1, 2));
--void *xrealloc (void *p, size_t s)
--      _GL_ATTRIBUTE_ALLOC_SIZE ((2));
--void *x2realloc (void *p, size_t *pn);
--void *xmemdup (void const *p, size_t s)
--      _GL_ATTRIBUTE_ALLOC_SIZE ((2));
-+  _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_ALLOC_SIZE ((1, 2));
-+void *xicalloc (idx_t n, idx_t s)
-+  _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_ALLOC_SIZE ((1, 2));
-+void *xrealloc (void *p, size_t s) _GL_ATTRIBUTE_ALLOC_SIZE ((2));
-+void *xirealloc (void *p, idx_t s) _GL_ATTRIBUTE_ALLOC_SIZE ((2));
-+void *xreallocarray (void *p, size_t n, size_t s)
-+      _GL_ATTRIBUTE_ALLOC_SIZE ((2, 3));
-+void *xireallocarray (void *p, idx_t n, idx_t s)
-+      _GL_ATTRIBUTE_ALLOC_SIZE ((2, 3));
-+void *x2realloc (void *p, size_t *ps); /* superseded by xpalloc */
-+void *x2nrealloc (void *p, size_t *pn, size_t s); /* superseded by xpalloc */
-+void *xpalloc (void *pa, idx_t *pn, idx_t n_incr_min, ptrdiff_t n_max, idx_t s);
-+void *xmemdup (void const *p, size_t s) _GL_ATTRIBUTE_ALLOC_SIZE ((2));
-+void *ximemdup (void const *p, idx_t s) _GL_ATTRIBUTE_ALLOC_SIZE ((2));
-+char *ximemdup0 (void const *p, idx_t s) _GL_ATTRIBUTE_MALLOC;
- char *xstrdup (char const *str)
-       _GL_ATTRIBUTE_MALLOC;
- 
-@@ -98,11 +110,10 @@ XALLOC_INLINE void *xnmalloc (size_t n,
- XALLOC_INLINE void *
- xnmalloc (size_t n, size_t s)
- {
--  if (xalloc_oversized (n, s))
--    xalloc_die ();
--  return xmalloc (n * s);
-+  return xreallocarray (NULL, n, s);
- }
- 
-+/* FIXME: Deprecate this in favor of xreallocarray?  */
- /* Change the size of an allocated block of memory P to an array of N
-    objects each of S bytes, with error checking.  S must be nonzero.  */
- 
-@@ -111,100 +122,7 @@ XALLOC_INLINE void *xnrealloc (void *p,
- XALLOC_INLINE void *
- xnrealloc (void *p, size_t n, size_t s)
- {
--  if (xalloc_oversized (n, s))
--    xalloc_die ();
--  return xrealloc (p, n * s);
--}
--
--/* If P is null, allocate a block of at least *PN such objects;
--   otherwise, reallocate P so that it contains more than *PN objects
--   each of S bytes.  S must be nonzero.  Set *PN to the new number of
--   objects, and return the pointer to the new block.  *PN is never set
--   to zero, and the returned pointer is never null.
--
--   Repeated reallocations are guaranteed to make progress, either by
--   allocating an initial block with a nonzero size, or by allocating a
--   larger block.
--
--   In the following implementation, nonzero sizes are increased by a
--   factor of approximately 1.5 so that repeated reallocations have
--   O(N) overall cost rather than O(N**2) cost, but the
--   specification for this function does not guarantee that rate.
--
--   Here is an example of use:
--
--     int *p = NULL;
--     size_t used = 0;
--     size_t allocated = 0;
--
--     void
--     append_int (int value)
--       {
--         if (used == allocated)
--           p = x2nrealloc (p, &allocated, sizeof *p);
--         p[used++] = value;
--       }
--
--   This causes x2nrealloc to allocate a block of some nonzero size the
--   first time it is called.
--
--   To have finer-grained control over the initial size, set *PN to a
--   nonzero value before calling this function with P == NULL.  For
--   example:
--
--     int *p = NULL;
--     size_t used = 0;
--     size_t allocated = 0;
--     size_t allocated1 = 1000;
--
--     void
--     append_int (int value)
--       {
--         if (used == allocated)
--           {
--             p = x2nrealloc (p, &allocated1, sizeof *p);
--             allocated = allocated1;
--           }
--         p[used++] = value;
--       }
--
--   */
--
--XALLOC_INLINE void *
--x2nrealloc (void *p, size_t *pn, size_t s)
--{
--  size_t n = *pn;
--
--  if (! p)
--    {
--      if (! n)
--        {
--          /* The approximate size to use for initial small allocation
--             requests, when the invoking code specifies an old size of
--             zero.  This is the largest "small" request for the GNU C
--             library malloc.  */
--          enum { DEFAULT_MXFAST = 64 * sizeof (size_t) / 4 };
--
--          n = DEFAULT_MXFAST / s;
--          n += !n;
--        }
--      if (xalloc_oversized (n, s))
--        xalloc_die ();
--    }
--  else
--    {
--      /* Set N = floor (1.5 * N) + 1 so that progress is made even if N == 0.
--         Check for overflow, so that N * S stays in both ptrdiff_t and
--         size_t range.  The check may be slightly conservative, but an
--         exact check isn't worth the trouble.  */
--      if ((PTRDIFF_MAX < SIZE_MAX ? PTRDIFF_MAX : SIZE_MAX) / 3 * 2 / s
--          <= n)
--        xalloc_die ();
--      n += n / 2 + 1;
--    }
--
--  *pn = n;
--  return xrealloc (p, n * s);
-+  return xreallocarray (p, n, s);
- }
- 
- /* Return a pointer to a new buffer of N bytes.  This is like xmalloc,
-@@ -239,9 +157,16 @@ xrealloc (T *p, size_t s)
- }
- 
- template <typename T> inline T *
-+xreallocarray (T *p, size_t n, size_t s)
-+{
-+  return (T *) xreallocarray ((void *) p, n, s);
-+}
-+
-+/* FIXME: Deprecate this in favor of xreallocarray?  */
-+template <typename T> inline T *
- xnrealloc (T *p, size_t n, size_t s)
- {
--  return (T *) xnrealloc ((void *) p, n, s);
-+  return xreallocarray (p, n, s);
- }
- 
- template <typename T> inline T *
---- a/gnulib/lib/xmalloc.c
-+++ b/gnulib/lib/xmalloc.c
-@@ -21,80 +21,250 @@
- 
- #include "xalloc.h"
- 
-+#include "ialloc.h"
-+#include "intprops.h"
-+#include "minmax.h"
-+
- #include <stdlib.h>
- #include <string.h>
- 
--/* 1 if calloc, malloc and realloc are known to be compatible with GNU.
--   This matters if we are not also using the calloc-gnu, malloc-gnu
--   and realloc-gnu modules, which define HAVE_CALLOC_GNU,
--   HAVE_MALLOC_GNU and HAVE_REALLOC_GNU and support the GNU API even
--   on non-GNU platforms.  */
--#if defined HAVE_CALLOC_GNU || (defined __GLIBC__ && !defined __UCLIBC__)
--enum { HAVE_GNU_CALLOC = 1 };
--#else
--enum { HAVE_GNU_CALLOC = 0 };
--#endif
--#if defined HAVE_MALLOC_GNU || (defined __GLIBC__ && !defined __UCLIBC__)
--enum { HAVE_GNU_MALLOC = 1 };
--#else
--enum { HAVE_GNU_MALLOC = 0 };
--#endif
--#if defined HAVE_REALLOC_GNU || (defined __GLIBC__ && !defined __UCLIBC__)
--enum { HAVE_GNU_REALLOC = 1 };
--#else
--enum { HAVE_GNU_REALLOC = 0 };
--#endif
-+static void * _GL_ATTRIBUTE_PURE
-+nonnull (void *p)
-+{
-+  if (!p)
-+    xalloc_die ();
-+  return p;
-+}
- 
--/* Allocate N bytes of memory dynamically, with error checking.  */
-+/* Allocate S bytes of memory dynamically, with error checking.  */
- 
- void *
--xmalloc (size_t n)
-+xmalloc (size_t s)
- {
--  void *p = malloc (n);
--  if (!p && (HAVE_GNU_MALLOC || n))
--    xalloc_die ();
--  return p;
-+  return nonnull (malloc (s));
-+}
-+
-+void *
-+ximalloc (idx_t s)
-+{
-+  return nonnull (imalloc (s));
- }
- 
--/* Change the size of an allocated block of memory P to N bytes,
-+/* Change the size of an allocated block of memory P to S bytes,
-    with error checking.  */
- 
- void *
--xrealloc (void *p, size_t n)
-+xrealloc (void *p, size_t s)
- {
--  if (!HAVE_GNU_REALLOC && !n && p)
--    {
--      /* The GNU and C99 realloc behaviors disagree here.  Act like GNU.  */
--      free (p);
--      return NULL;
--    }
-+  void *r = realloc (p, s);
-+  if (!r && (!p || s))
-+    xalloc_die ();
-+  return r;
-+}
-+
-+void *
-+xirealloc (void *p, idx_t s)
-+{
-+  return nonnull (irealloc (p, s));
-+}
-+
-+/* Change the size of an allocated block of memory P to an array of N
-+   objects each of S bytes, with error checking.  */
- 
--  void *r = realloc (p, n);
--  if (!r && (n || (HAVE_GNU_REALLOC && !p)))
-+void *
-+xreallocarray (void *p, size_t n, size_t s)
-+{
-+  void *r = reallocarray (p, n, s);
-+  if (!r && (!p || (n && s)))
-     xalloc_die ();
-   return r;
- }
- 
--/* If P is null, allocate a block of at least *PN bytes; otherwise,
--   reallocate P so that it contains more than *PN bytes.  *PN must be
--   nonzero unless P is null.  Set *PN to the new block's size, and
--   return the pointer to the new block.  *PN is never set to zero, and
-+void *
-+xireallocarray (void *p, idx_t n, idx_t s)
-+{
-+  return nonnull (ireallocarray (p, n, s));
-+}
-+
-+/* If P is null, allocate a block of at least *PS bytes; otherwise,
-+   reallocate P so that it contains more than *PS bytes.  *PS must be
-+   nonzero unless P is null.  Set *PS to the new block's size, and
-+   return the pointer to the new block.  *PS is never set to zero, and
-    the returned pointer is never null.  */
- 
- void *
--x2realloc (void *p, size_t *pn)
-+x2realloc (void *p, size_t *ps)
-+{
-+  return x2nrealloc (p, ps, 1);
-+}
-+
-+/* If P is null, allocate a block of at least *PN such objects;
-+   otherwise, reallocate P so that it contains more than *PN objects
-+   each of S bytes.  S must be nonzero.  Set *PN to the new number of
-+   objects, and return the pointer to the new block.  *PN is never set
-+   to zero, and the returned pointer is never null.
-+
-+   Repeated reallocations are guaranteed to make progress, either by
-+   allocating an initial block with a nonzero size, or by allocating a
-+   larger block.
-+
-+   In the following implementation, nonzero sizes are increased by a
-+   factor of approximately 1.5 so that repeated reallocations have
-+   O(N) overall cost rather than O(N**2) cost, but the
-+   specification for this function does not guarantee that rate.
-+
-+   Here is an example of use:
-+
-+     int *p = NULL;
-+     size_t used = 0;
-+     size_t allocated = 0;
-+
-+     void
-+     append_int (int value)
-+       {
-+         if (used == allocated)
-+           p = x2nrealloc (p, &allocated, sizeof *p);
-+         p[used++] = value;
-+       }
-+
-+   This causes x2nrealloc to allocate a block of some nonzero size the
-+   first time it is called.
-+
-+   To have finer-grained control over the initial size, set *PN to a
-+   nonzero value before calling this function with P == NULL.  For
-+   example:
-+
-+     int *p = NULL;
-+     size_t used = 0;
-+     size_t allocated = 0;
-+     size_t allocated1 = 1000;
-+
-+     void
-+     append_int (int value)
-+       {
-+         if (used == allocated)
-+           {
-+             p = x2nrealloc (p, &allocated1, sizeof *p);
-+             allocated = allocated1;
-+           }
-+         p[used++] = value;
-+       }
-+
-+   */
-+
-+void *
-+x2nrealloc (void *p, size_t *pn, size_t s)
- {
--  return x2nrealloc (p, pn, 1);
-+  size_t n = *pn;
-+
-+  if (! p)
-+    {
-+      if (! n)
-+        {
-+          /* The approximate size to use for initial small allocation
-+             requests, when the invoking code specifies an old size of
-+             zero.  This is the largest "small" request for the GNU C
-+             library malloc.  */
-+          enum { DEFAULT_MXFAST = 64 * sizeof (size_t) / 4 };
-+
-+          n = DEFAULT_MXFAST / s;
-+          n += !n;
-+        }
-+    }
-+  else
-+    {
-+      /* Set N = floor (1.5 * N) + 1 to make progress even if N == 0.  */
-+      if (INT_ADD_WRAPV (n, (n >> 1) + 1, &n))
-+        xalloc_die ();
-+    }
-+
-+  p = xreallocarray (p, n, s);
-+  *pn = n;
-+  return p;
- }
- 
--/* Allocate N bytes of zeroed memory dynamically, with error checking.
-+/* Grow PA, which points to an array of *PN items, and return the
-+   location of the reallocated array, updating *PN to reflect its
-+   new size.  The new array will contain at least N_INCR_MIN more
-+   items, but will not contain more than N_MAX items total.
-+   S is the size of each item, in bytes.
-+
-+   S and N_INCR_MIN must be positive.  *PN must be
-+   nonnegative.  If N_MAX is -1, it is treated as if it were
-+   infinity.
-+
-+   If PA is null, then allocate a new array instead of reallocating
-+   the old one.
-+
-+   Thus, to grow an array A without saving its old contents, do
-+   { free (A); A = xpalloc (NULL, &AITEMS, ...); }.  */
-+
-+void *
-+xpalloc (void *pa, idx_t *pn, idx_t n_incr_min, ptrdiff_t n_max, idx_t s)
-+{
-+  idx_t n0 = *pn;
-+
-+  /* The approximate size to use for initial small allocation
-+     requests.  This is the largest "small" request for the GNU C
-+     library malloc.  */
-+  enum { DEFAULT_MXFAST = 64 * sizeof (size_t) / 4 };
-+
-+  /* If the array is tiny, grow it to about (but no greater than)
-+     DEFAULT_MXFAST bytes.  Otherwise, grow it by about 50%.
-+     Adjust the growth according to three constraints: N_INCR_MIN,
-+     N_MAX, and what the C language can represent safely.  */
-+
-+  idx_t n;
-+  if (INT_ADD_WRAPV (n0, n0 >> 1, &n))
-+    n = IDX_MAX;
-+  if (0 <= n_max && n_max < n)
-+    n = n_max;
-+
-+  /* NBYTES is of a type suitable for holding the count of bytes in an object.
-+     This is typically idx_t, but it should be size_t on (theoretical?)
-+     platforms where SIZE_MAX < IDX_MAX so xpalloc does not pass
-+     values greater than SIZE_MAX to xrealloc.  */
-+#if IDX_MAX <= SIZE_MAX
-+  idx_t nbytes;
-+#else
-+  size_t nbytes;
-+#endif
-+  idx_t adjusted_nbytes
-+    = (INT_MULTIPLY_WRAPV (n, s, &nbytes)
-+       ? MIN (IDX_MAX, SIZE_MAX)
-+       : nbytes < DEFAULT_MXFAST ? DEFAULT_MXFAST : 0);
-+  if (adjusted_nbytes)
-+    {
-+      n = adjusted_nbytes / s;
-+      nbytes = adjusted_nbytes - adjusted_nbytes % s;
-+    }
-+
-+  if (! pa)
-+    *pn = 0;
-+  if (n - n0 < n_incr_min
-+      && (INT_ADD_WRAPV (n0, n_incr_min, &n)
-+          || (0 <= n_max && n_max < n)
-+          || INT_MULTIPLY_WRAPV (n, s, &nbytes)))
-+    xalloc_die ();
-+  pa = xrealloc (pa, nbytes);
-+  *pn = n;
-+  return pa;
-+}
-+
-+/* Allocate S bytes of zeroed memory dynamically, with error checking.
-    There's no need for xnzalloc (N, S), since it would be equivalent
-    to xcalloc (N, S).  */
- 
- void *
--xzalloc (size_t n)
-+xzalloc (size_t s)
-+{
-+  return xcalloc (s, 1);
-+}
-+
-+void *
-+xizalloc (idx_t s)
- {
--  return xcalloc (n, 1);
-+  return xicalloc (s, 1);
- }
- 
- /* Allocate zeroed memory for N elements of S bytes, with error
-@@ -103,15 +273,13 @@ xzalloc (size_t n)
- void *
- xcalloc (size_t n, size_t s)
- {
--  void *p;
--  /* Test for overflow, since objects with size greater than
--     PTRDIFF_MAX cause pointer subtraction to go awry.  Omit size-zero
--     tests if HAVE_GNU_CALLOC, since GNU calloc never returns NULL if
--     successful.  */
--  if (xalloc_oversized (n, s)
--      || (! (p = calloc (n, s)) && (HAVE_GNU_CALLOC || n != 0)))
--    xalloc_die ();
--  return p;
-+  return nonnull (calloc (n, s));
-+}
-+
-+void *
-+xicalloc (idx_t n, idx_t s)
-+{
-+  return nonnull (icalloc (n, s));
- }
- 
- /* Clone an object P of size S, with error checking.  There's no need
-@@ -124,6 +292,23 @@ xmemdup (void const *p, size_t s)
-   return memcpy (xmalloc (s), p, s);
- }
- 
-+void *
-+ximemdup (void const *p, idx_t s)
-+{
-+  return memcpy (ximalloc (s), p, s);
-+}
-+
-+/* Clone an object P of size S, with error checking.  Append
-+   a terminating NUL byte.  */
-+
-+char *
-+ximemdup0 (void const *p, idx_t s)
-+{
-+  char *result = ximalloc (s + 1);
-+  result[s] = 0;
-+  return memcpy (result, p, s);
-+}
-+
- /* Clone STRING.  */
- 
- char *
---- a/gnulib/lib/xsize.c
-+++ b/gnulib/lib/xsize.c
-@@ -1,3 +1,21 @@
-+/* Checked size_t computations.
-+
-+   Copyright (C) 2012-2021 Free Software Foundation, Inc.
-+
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
-+
-+   This file is distributed in the hope that it will be useful,
-+   but WITHOUT ANY WARRANTY; without even the implied warranty of
-+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+   GNU Lesser General Public License for more details.
-+
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
-+
- #include <config.h>
-+
- #define XSIZE_INLINE _GL_EXTERN_INLINE
- #include "xsize.h"
---- a/gnulib/lib/xsize.h
-+++ b/gnulib/lib/xsize.h
-@@ -2,18 +2,18 @@
- 
-    Copyright (C) 2003, 2008-2021 Free Software Foundation, Inc.
- 
--   This program is free software; you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 3, or (at your option)
--   any later version.
-+   This file is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU Lesser General Public License as
-+   published by the Free Software Foundation; either version 2.1 of the
-+   License, or (at your option) any later version.
- 
--   This program is distributed in the hope that it will be useful,
-+   This file is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
-+   GNU Lesser General Public License for more details.
- 
--   You should have received a copy of the GNU General Public License
--   along with this program; if not, see <https://www.gnu.org/licenses/>.  */
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
- 
- #ifndef _XSIZE_H
- #define _XSIZE_H
---- /dev/null
-+++ b/gnulib/m4/calloc.m4
-@@ -0,0 +1,82 @@
-+# calloc.m4 serial 27
-+
-+# Copyright (C) 2004-2021 Free Software Foundation, Inc.
-+# This file is free software; the Free Software Foundation
-+# gives unlimited permission to copy and/or distribute it,
-+# with or without modifications, as long as this notice is preserved.
-+
-+# Written by Jim Meyering.
-+
-+# Determine whether calloc (N, S) returns non-NULL when N*S is zero,
-+# and returns NULL when N*S overflows.
-+# If so, define HAVE_CALLOC.  Otherwise, define calloc to rpl_calloc
-+# and arrange to use a calloc wrapper function that does work in that case.
-+
-+# _AC_FUNC_CALLOC_IF([IF-WORKS], [IF-NOT])
-+# -------------------------------------
-+# If calloc is compatible with GNU calloc, run IF-WORKS, otherwise, IF-NOT.
-+AC_DEFUN([_AC_FUNC_CALLOC_IF],
-+[
-+  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
-+  AC_CACHE_CHECK([whether calloc (0, n) and calloc (n, 0) return nonnull],
-+    [ac_cv_func_calloc_0_nonnull],
-+    [if test $cross_compiling != yes; then
-+       ac_cv_func_calloc_0_nonnull=yes
-+       AC_RUN_IFELSE(
-+         [AC_LANG_PROGRAM(
-+            [AC_INCLUDES_DEFAULT],
-+            [[int result = 0;
-+              char * volatile p = calloc (0, 0);
-+              if (!p)
-+                result |= 1;
-+              free (p);
-+              return result;
-+            ]])],
-+         [],
-+         [ac_cv_func_calloc_0_nonnull=no])
-+     else
-+       case "$host_os" in
-+                        # Guess yes on glibc systems.
-+         *-gnu* | gnu*) ac_cv_func_calloc_0_nonnull="guessing yes" ;;
-+                        # Guess yes on musl systems.
-+         *-musl*)       ac_cv_func_calloc_0_nonnull="guessing yes" ;;
-+                        # Guess yes on native Windows.
-+         mingw*)        ac_cv_func_calloc_0_nonnull="guessing yes" ;;
-+                        # If we don't know, obey --enable-cross-guesses.
-+         *)             ac_cv_func_calloc_0_nonnull="$gl_cross_guess_normal" ;;
-+       esac
-+     fi
-+    ])
-+  AS_CASE([$ac_cv_func_calloc_0_nonnull], [*yes], [$1], [$2])
-+])
-+
-+
-+# gl_FUNC_CALLOC_GNU
-+# ------------------
-+# Replace calloc if it is not compatible with GNU libc.
-+AC_DEFUN([gl_FUNC_CALLOC_GNU],
-+[
-+  AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
-+  AC_REQUIRE([gl_FUNC_CALLOC_POSIX])
-+  if test $REPLACE_CALLOC = 0; then
-+    _AC_FUNC_CALLOC_IF([], [REPLACE_CALLOC=1])
-+  fi
-+])# gl_FUNC_CALLOC_GNU
-+
-+# gl_FUNC_CALLOC_POSIX
-+# --------------------
-+# Test whether 'calloc' is POSIX compliant (sets errno to ENOMEM when it
-+# fails, and doesn't mess up with ptrdiff_t or size_t overflow),
-+# and replace calloc if it is not.
-+AC_DEFUN([gl_FUNC_CALLOC_POSIX],
-+[
-+  AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
-+  AC_REQUIRE([gl_FUNC_MALLOC_POSIX])
-+  if test $REPLACE_MALLOC = 1; then
-+    REPLACE_CALLOC=1
-+  fi
-+  dnl Although in theory we should also test for size_t overflow,
-+  dnl in practice testing for ptrdiff_t overflow suffices
-+  dnl since PTRDIFF_MAX <= SIZE_MAX on all known Gnulib porting targets.
-+  dnl A separate size_t test would slow down 'configure'.
-+])
---- a/gnulib/m4/fcntl_h.m4
-+++ b/gnulib/m4/fcntl_h.m4
-@@ -1,4 +1,4 @@
--# serial 17
-+# serial 20
- # Configure fcntl.h.
- dnl Copyright (C) 2006-2007, 2009-2021 Free Software Foundation, Inc.
- dnl This file is free software; the Free Software Foundation
-@@ -7,7 +7,7 @@ dnl with or without modifications, as lo
- 
- dnl Written by Paul Eggert.
- 
--AC_DEFUN([gl_FCNTL_H],
-+AC_DEFUN_ONCE([gl_FCNTL_H],
- [
-   AC_REQUIRE([gl_FCNTL_H_DEFAULTS])
-   AC_REQUIRE([gl_FCNTL_O_FLAGS])
-@@ -26,25 +26,40 @@ AC_DEFUN([gl_FCNTL_H],
-     ]], [fcntl openat])
- ])
- 
-+# gl_FCNTL_MODULE_INDICATOR([modulename])
-+# sets the shell variable that indicates the presence of the given module
-+# to a C preprocessor expression that will evaluate to 1.
-+# This macro invocation must not occur in macros that are AC_REQUIREd.
- AC_DEFUN([gl_FCNTL_MODULE_INDICATOR],
- [
--  dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
--  AC_REQUIRE([gl_FCNTL_H_DEFAULTS])
-+  dnl Ensure to expand the default settings once only.
-+  gl_FCNTL_H_REQUIRE_DEFAULTS
-   gl_MODULE_INDICATOR_SET_VARIABLE([$1])
-   dnl Define it also as a C macro, for the benefit of the unit tests.
-   gl_MODULE_INDICATOR_FOR_TESTS([$1])
- ])
- 
-+# Initializes the default values for AC_SUBSTed shell variables.
-+# This macro must not be AC_REQUIREd.  It must only be invoked, and only
-+# outside of macros or in macros that are not AC_REQUIREd.
-+AC_DEFUN([gl_FCNTL_H_REQUIRE_DEFAULTS],
-+[
-+  m4_defun(GL_MODULE_INDICATOR_PREFIX[_FCNTL_H_MODULE_INDICATOR_DEFAULTS], [
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_CREAT])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FCNTL])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_NONBLOCKING])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_OPEN])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_OPENAT])
-+    dnl Support Microsoft deprecated alias function names by default.
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_CREAT], [1])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_OPEN], [1])
-+  ])
-+  m4_require(GL_MODULE_INDICATOR_PREFIX[_FCNTL_H_MODULE_INDICATOR_DEFAULTS])
-+  AC_REQUIRE([gl_FCNTL_H_DEFAULTS])
-+])
-+
- AC_DEFUN([gl_FCNTL_H_DEFAULTS],
- [
--  GNULIB_CREAT=0;        AC_SUBST([GNULIB_CREAT])
--  GNULIB_FCNTL=0;        AC_SUBST([GNULIB_FCNTL])
--  GNULIB_NONBLOCKING=0;  AC_SUBST([GNULIB_NONBLOCKING])
--  GNULIB_OPEN=0;         AC_SUBST([GNULIB_OPEN])
--  GNULIB_OPENAT=0;       AC_SUBST([GNULIB_OPENAT])
--  dnl Support Microsoft deprecated alias function names by default.
--  GNULIB_MDA_CREAT=1;    AC_SUBST([GNULIB_MDA_CREAT])
--  GNULIB_MDA_OPEN=1;     AC_SUBST([GNULIB_MDA_OPEN])
-   dnl Assume proper GNU behavior unless another module says otherwise.
-   HAVE_FCNTL=1;          AC_SUBST([HAVE_FCNTL])
-   HAVE_OPENAT=1;         AC_SUBST([HAVE_OPENAT])
---- /dev/null
-+++ b/gnulib/m4/free.m4
-@@ -0,0 +1,52 @@
-+# free.m4 serial 6
-+# Copyright (C) 2003-2005, 2009-2021 Free Software Foundation, Inc.
-+# This file is free software; the Free Software Foundation
-+# gives unlimited permission to copy and/or distribute it,
-+# with or without modifications, as long as this notice is preserved.
-+
-+# Written by Paul Eggert and Bruno Haible.
-+
-+AC_DEFUN([gl_FUNC_FREE],
-+[
-+  AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
-+
-+  dnl In the next release of POSIX, free must preserve errno.
-+  dnl https://www.austingroupbugs.net/view.php?id=385
-+  dnl https://sourceware.org/bugzilla/show_bug.cgi?id=17924
-+  dnl So far, we know of three platforms that do this:
-+  dnl * glibc >= 2.33, thanks to the fix for this bug:
-+  dnl   <https://sourceware.org/bugzilla/show_bug.cgi?id=17924>
-+  dnl * OpenBSD >= 4.5, thanks to this commit:
-+  dnl   <https://cvsweb.openbsd.org/cgi-bin/cvsweb/src/lib/libc/stdlib/malloc.c.diff?r1=1.100&r2=1.101&f=h>
-+  dnl * Solaris, because its malloc() implementation is based on brk(),
-+  dnl   not mmap(); hence its free() implementation makes no system calls.
-+  dnl For other platforms, you can only be sure if they state it in their
-+  dnl documentation, or by code inspection of the free() implementation in libc.
-+  AC_CACHE_CHECK([whether free is known to preserve errno],
-+    [gl_cv_func_free_preserves_errno],
-+    [AC_COMPILE_IFELSE(
-+       [AC_LANG_PROGRAM(
-+          [[#include <stdlib.h>
-+          ]],
-+          [[#if 2 < __GLIBC__ + (33 <= __GLIBC_MINOR__)
-+            #elif defined __OpenBSD__
-+            #elif defined __sun
-+            #else
-+              #error "'free' is not known to preserve errno"
-+            #endif
-+          ]])],
-+       [gl_cv_func_free_preserves_errno=yes],
-+       [gl_cv_func_free_preserves_errno=no])
-+    ])
-+
-+  case $gl_cv_func_free_preserves_errno in
-+   *yes)
-+    AC_DEFINE([HAVE_FREE_POSIX], [1],
-+      [Define if the 'free' function is guaranteed to preserve errno.])
-+    ;;
-+   *) REPLACE_FREE=1 ;;
-+  esac
-+])
-+
-+# Prerequisites of lib/free.c.
-+AC_DEFUN([gl_PREREQ_FREE], [:])
---- a/gnulib/m4/fstat.m4
-+++ b/gnulib/m4/fstat.m4
-@@ -1,4 +1,4 @@
--# fstat.m4 serial 7
-+# fstat.m4 serial 8
- dnl Copyright (C) 2011-2021 Free Software Foundation, Inc.
- dnl This file is free software; the Free Software Foundation
- dnl gives unlimited permission to copy and/or distribute it,
-@@ -34,7 +34,7 @@ AC_DEFUN([gl_FUNC_FSTAT],
- 
- # Prerequisites of lib/fstat.c and lib/stat-w32.c.
- AC_DEFUN([gl_PREREQ_FSTAT], [
--  AC_REQUIRE([gl_HEADER_SYS_STAT_H])
-+  AC_REQUIRE([gl_SYS_STAT_H])
-   AC_REQUIRE([gl_PREREQ_STAT_W32])
-   :
- ])
---- a/gnulib/m4/gnulib-common.m4
-+++ b/gnulib/m4/gnulib-common.m4
-@@ -1,4 +1,4 @@
--# gnulib-common.m4 serial 63
-+# gnulib-common.m4 serial 66
- dnl Copyright (C) 2007-2021 Free Software Foundation, Inc.
- dnl This file is free software; the Free Software Foundation
- dnl gives unlimited permission to copy and/or distribute it,
-@@ -357,6 +357,16 @@ AC_DEFUN([gl_COMMON_BODY], [
-   export LIBC_FATAL_STDERR_
- ])
- 
-+# gl_MODULE_INDICATOR_INIT_VARIABLE([variablename])
-+# gl_MODULE_INDICATOR_INIT_VARIABLE([variablename], [initialvalue])
-+# initializes the shell variable that indicates the presence of the given module
-+# as a C preprocessor expression.
-+AC_DEFUN([gl_MODULE_INDICATOR_INIT_VARIABLE],
-+[
-+  GL_MODULE_INDICATOR_PREFIX[]_[$1]=m4_if([$2], , [0], [$2])
-+  AC_SUBST(GL_MODULE_INDICATOR_PREFIX[]_[$1])
-+])
-+
- # gl_MODULE_INDICATOR_CONDITION
- # expands to a C preprocessor expression that evaluates to 1 or 0, depending
- # whether a gnulib module that has been requested shall be considered present
-@@ -369,9 +379,9 @@ m4_define([gl_MODULE_INDICATOR_CONDITION
- AC_DEFUN([gl_MODULE_INDICATOR_SET_VARIABLE],
- [
-   gl_MODULE_INDICATOR_SET_VARIABLE_AUX(
--    [GNULIB_[]m4_translit([[$1]],
--                          [abcdefghijklmnopqrstuvwxyz./-],
--                          [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])],
-+    [GL_MODULE_INDICATOR_PREFIX[]_GNULIB_[]m4_translit([[$1]],
-+                                                       [abcdefghijklmnopqrstuvwxyz./-],
-+                                                       [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])],
-     [gl_MODULE_INDICATOR_CONDITION])
- ])
- 
-@@ -656,6 +666,72 @@ AC_DEFUN([gl_CACHE_VAL_SILENT],
-   ])
- ])
- 
-+# gl_CC_ALLOW_WARNINGS
-+# sets and substitutes a variable GL_CFLAG_ALLOW_WARNINGS, to a $(CC) option
-+# that reverts a preceding '-Werror' option, if available.
-+# This is expected to be '-Wno-error' on gcc, clang (except clang/MSVC), xlclang
-+# and empty otherwise.
-+AC_DEFUN([gl_CC_ALLOW_WARNINGS],
-+[
-+  AC_REQUIRE([AC_PROG_CC])
-+  AC_CACHE_CHECK([for C compiler option to allow warnings],
-+    [gl_cv_cc_wallow],
-+    [rm -f conftest*
-+     echo 'int dummy;' > conftest.c
-+     AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -c conftest.c 2>conftest1.err]) >/dev/null
-+     AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -Wno-error -c conftest.c 2>conftest2.err]) >/dev/null
-+     dnl Test the number of error output lines, because AIX xlc accepts the
-+     dnl option '-Wno-error', just to produce a warning
-+     dnl "Option -Wno-error was incorrectly specified. The option will be ignored."
-+     dnl afterwards.
-+     if test $? = 0 && test `wc -l < conftest1.err` = `wc -l < conftest2.err`; then
-+       gl_cv_cc_wallow='-Wno-error'
-+     else
-+       gl_cv_cc_wallow=none
-+     fi
-+     rm -f conftest*
-+    ])
-+  case "$gl_cv_cc_wallow" in
-+    none) GL_CFLAG_ALLOW_WARNINGS='' ;;
-+    *)    GL_CFLAG_ALLOW_WARNINGS="$gl_cv_cc_wallow" ;;
-+  esac
-+  AC_SUBST([GL_CFLAG_ALLOW_WARNINGS])
-+])
-+
-+# gl_CXX_ALLOW_WARNINGS
-+# sets and substitutes a variable GL_CXXFLAG_ALLOW_WARNINGS, to a $(CC) option
-+# that reverts a preceding '-Werror' option, if available.
-+AC_DEFUN([gl_CXX_ALLOW_WARNINGS],
-+[
-+  dnl Requires AC_PROG_CXX or gl_PROG_ANSI_CXX.
-+  if test -n "$CXX" && test "$CXX" != no; then
-+    AC_CACHE_CHECK([for C++ compiler option to allow warnings],
-+      [gl_cv_cxx_wallow],
-+      [rm -f conftest*
-+       echo 'int dummy;' > conftest.cc
-+       AC_TRY_COMMAND([${CXX-c++} $CXXFLAGS $CPPFLAGS -c conftest.cc 2>conftest1.err]) >/dev/null
-+       AC_TRY_COMMAND([${CXX-c++} $CXXFLAGS $CPPFLAGS -Wno-error -c conftest.cc 2>conftest2.err]) >/dev/null
-+       dnl Test the number of error output lines, because AIX xlC accepts the
-+       dnl option '-Wno-error', just to produce a warning
-+       dnl "Option -Wno-error was incorrectly specified. The option will be ignored."
-+       dnl afterwards.
-+       if test $? = 0 && test `wc -l < conftest1.err` = `wc -l < conftest2.err`; then
-+         gl_cv_cxx_wallow='-Wno-error'
-+       else
-+         gl_cv_cxx_wallow=none
-+       fi
-+       rm -f conftest*
-+      ])
-+    case "$gl_cv_cxx_wallow" in
-+      none) GL_CXXFLAG_ALLOW_WARNINGS='' ;;
-+      *)    GL_CXXFLAG_ALLOW_WARNINGS="$gl_cv_cxx_wallow" ;;
-+    esac
-+  else
-+    GL_CXXFLAG_ALLOW_WARNINGS=''
-+  fi
-+  AC_SUBST([GL_CXXFLAG_ALLOW_WARNINGS])
-+])
-+
- dnl Expands to some code for use in .c programs that, on native Windows, defines
- dnl the Microsoft deprecated alias function names to the underscore-prefixed
- dnl actual function names. With this macro, these function names are available
---- a/gnulib/m4/gnulib-comp.m4
-+++ b/gnulib/m4/gnulib-comp.m4
-@@ -51,6 +51,8 @@ AC_DEFUN([gl_EARLY],
-   # Code from module btowc:
-   # Code from module builtin-expect:
-   # Code from module c99:
-+  # Code from module calloc-gnu:
-+  # Code from module calloc-posix:
-   # Code from module cloexec:
-   # Code from module close:
-   # Code from module double-slash-root:
-@@ -66,6 +68,7 @@ AC_DEFUN([gl_EARLY],
-   # Code from module fd-hook:
-   # Code from module filename:
-   # Code from module float:
-+  # Code from module free-posix:
-   # Code from module fstat:
-   # Code from module getdtablesize:
-   # Code from module getopt-gnu:
-@@ -74,7 +77,9 @@ AC_DEFUN([gl_EARLY],
-   # Code from module gettext-h:
-   # Code from module hard-locale:
-   # Code from module havelib:
-+  # Code from module ialloc:
-   # Code from module iconv:
-+  # Code from module idx:
-   # Code from module include_next:
-   # Code from module intprops:
-   # Code from module inttypes-incomplete:
-@@ -84,12 +89,14 @@ AC_DEFUN([gl_EARLY],
-   # Code from module langinfo:
-   # Code from module largefile:
-   AC_REQUIRE([AC_SYS_LARGEFILE])
-+  AC_REQUIRE([gl_YEAR2038_EARLY])
-   # Code from module libc-config:
-   # Code from module limits-h:
-   # Code from module localcharset:
-   # Code from module locale:
-   # Code from module localeconv:
-   # Code from module lock:
-+  # Code from module malloc-gnu:
-   # Code from module malloc-posix:
-   # Code from module malloca:
-   # Code from module mbchar:
-@@ -107,6 +114,7 @@ AC_DEFUN([gl_EARLY],
-   # Code from module memchr:
-   # Code from module mempcpy:
-   # Code from module memrchr:
-+  # Code from module minmax:
-   # Code from module msvc-inval:
-   # Code from module msvc-nothrow:
-   # Code from module multiarch:
-@@ -114,6 +122,9 @@ AC_DEFUN([gl_EARLY],
-   # Code from module nocrash:
-   # Code from module open:
-   # Code from module pathmax:
-+  # Code from module realloc-gnu:
-+  # Code from module realloc-posix:
-+  # Code from module reallocarray:
-   # Code from module regex:
-   # Code from module setlocale-null:
-   # Code from module size_max:
-@@ -189,6 +200,8 @@ AC_DEFUN([gl_INIT],
-   m4_pushdef([AC_LIBSOURCES], m4_defn([gl_LIBSOURCES]))
-   m4_pushdef([gl_LIBSOURCES_LIST], [])
-   m4_pushdef([gl_LIBSOURCES_DIR], [])
-+  m4_pushdef([GL_MACRO_PREFIX], [gl])
-+  m4_pushdef([GL_MODULE_INDICATOR_PREFIX], [GL])
-   gl_COMMON
-   gl_source_base='gnulib/lib'
-   gl_FUNC_ALLOCA
-@@ -196,6 +209,15 @@ AC_DEFUN([gl_INIT],
-   if test -n "$ARGZ_H"; then
-     AC_LIBOBJ([argz])
-   fi
-+  gl_FUNC_CALLOC_GNU
-+  if test $REPLACE_CALLOC = 1; then
-+    AC_LIBOBJ([calloc])
-+  fi
-+  gl_FUNC_CALLOC_POSIX
-+  if test $REPLACE_CALLOC = 1; then
-+    AC_LIBOBJ([calloc])
-+  fi
-+  gl_STDLIB_MODULE_INDICATOR([calloc-posix])
-   gl_DOUBLE_SLASH_ROOT
-   gl_HEADER_ERRNO_H
-   gl_ERROR
-@@ -208,6 +230,7 @@ AC_DEFUN([gl_INIT],
-      AM_][XGETTEXT_OPTION([--flag=error_at_line:5:c-format])])
-   AC_REQUIRE([gl_EXTERN_INLINE])
-   gl_FCNTL_H
-+  gl_FCNTL_H_REQUIRE_DEFAULTS
-   gl_FLOAT_H
-   if test $REPLACE_FLOAT_LDBL = 1; then
-     AC_LIBOBJ([float])
-@@ -223,10 +246,10 @@ AC_DEFUN([gl_INIT],
-   if test $REPLACE_GETOPT = 1; then
-     AC_LIBOBJ([getopt])
-     AC_LIBOBJ([getopt1])
--    dnl Arrange for unistd.h to include getopt.h.
--    GNULIB_GL_UNISTD_H_GETOPT=1
-+    dnl Define the substituted variable GNULIB_UNISTD_H_GETOPT to 1.
-+    gl_UNISTD_H_REQUIRE_DEFAULTS
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNISTD_H_GETOPT], [1])
-   fi
--  AC_SUBST([GNULIB_GL_UNISTD_H_GETOPT])
-   gl_UNISTD_MODULE_INDICATOR([getopt-posix])
-   gl_FUNC_GETPROGNAME
-   AC_SUBST([LIBINTL])
-@@ -236,6 +259,7 @@ AC_DEFUN([gl_INIT],
-   m4_ifdef([gl_ICONV_MODULE_INDICATOR],
-     [gl_ICONV_MODULE_INDICATOR([iconv])])
-   gl_INTTYPES_INCOMPLETE
-+  gl_INTTYPES_H_REQUIRE_DEFAULTS
-   gl_FUNC_ISWBLANK
-   if test $HAVE_ISWCNTRL = 0 || test $REPLACE_ISWCNTRL = 1; then
-     :
-@@ -265,6 +289,15 @@ AC_DEFUN([gl_INIT],
-   gl_WCTYPE_MODULE_INDICATOR([iswxdigit])
-   AC_REQUIRE([gl_LARGEFILE])
-   gl_LIMITS_H
-+  gl_FUNC_MALLOC_GNU
-+  if test $REPLACE_MALLOC = 1; then
-+    AC_LIBOBJ([malloc])
-+  fi
-+  AC_REQUIRE([gl_FUNC_MALLOC_POSIX])
-+  if test $REPLACE_MALLOC = 1; then
-+    AC_LIBOBJ([malloc])
-+  fi
-+  gl_STDLIB_MODULE_INDICATOR([malloc-posix])
-   gl_MALLOCA
-   gl_MBCHAR
-   gl_MBITER
-@@ -305,6 +338,7 @@ AC_DEFUN([gl_INIT],
-     gl_PREREQ_MEMRCHR
-   fi
-   gl_STRING_MODULE_INDICATOR([memrchr])
-+  gl_MINMAX
-   gl_MULTIARCH
-   gl_FUNC_OPEN
-   if test $REPLACE_OPEN = 1; then
-@@ -312,6 +346,22 @@ AC_DEFUN([gl_INIT],
-     gl_PREREQ_OPEN
-   fi
-   gl_FCNTL_MODULE_INDICATOR([open])
-+  gl_FUNC_REALLOC_GNU
-+  if test $REPLACE_REALLOC = 1; then
-+    AC_LIBOBJ([realloc])
-+  fi
-+  gl_FUNC_REALLOC_POSIX
-+  if test $REPLACE_REALLOC = 1; then
-+    AC_LIBOBJ([realloc])
-+  fi
-+  gl_STDLIB_MODULE_INDICATOR([realloc-posix])
-+  gl_FUNC_REALLOCARRAY
-+  if test $HAVE_REALLOCARRAY = 0 || test $REPLACE_REALLOCARRAY = 1; then
-+    AC_LIBOBJ([reallocarray])
-+    gl_PREREQ_REALLOCARRAY
-+  fi
-+  gl_MODULE_INDICATOR([reallocarray])
-+  gl_STDLIB_MODULE_INDICATOR([reallocarray])
-   gl_REGEX
-   if test $ac_use_included_regex = yes; then
-     AC_LIBOBJ([regex])
-@@ -321,9 +371,35 @@ AC_DEFUN([gl_INIT],
-   gl_STDARG_H
-   AM_STDBOOL_H
-   gl_STDDEF_H
-+  gl_STDDEF_H_REQUIRE_DEFAULTS
-   gl_STDINT_H
-   gl_STDIO_H
-+  gl_STDIO_H_REQUIRE_DEFAULTS
-+  dnl No need to create extra modules for these functions. Everyone who uses
-+  dnl <stdio.h> likely needs them.
-+  gl_STDIO_MODULE_INDICATOR([fscanf])
-+  gl_MODULE_INDICATOR([fscanf])
-+  gl_STDIO_MODULE_INDICATOR([scanf])
-+  gl_MODULE_INDICATOR([scanf])
-+  gl_STDIO_MODULE_INDICATOR([fgetc])
-+  gl_STDIO_MODULE_INDICATOR([getc])
-+  gl_STDIO_MODULE_INDICATOR([getchar])
-+  gl_STDIO_MODULE_INDICATOR([fgets])
-+  gl_STDIO_MODULE_INDICATOR([fread])
-+  dnl No need to create extra modules for these functions. Everyone who uses
-+  dnl <stdio.h> likely needs them.
-+  gl_STDIO_MODULE_INDICATOR([fprintf])
-+  gl_STDIO_MODULE_INDICATOR([printf])
-+  gl_STDIO_MODULE_INDICATOR([vfprintf])
-+  gl_STDIO_MODULE_INDICATOR([vprintf])
-+  gl_STDIO_MODULE_INDICATOR([fputc])
-+  gl_STDIO_MODULE_INDICATOR([putc])
-+  gl_STDIO_MODULE_INDICATOR([putchar])
-+  gl_STDIO_MODULE_INDICATOR([fputs])
-+  gl_STDIO_MODULE_INDICATOR([puts])
-+  gl_STDIO_MODULE_INDICATOR([fwrite])
-   gl_STDLIB_H
-+  gl_STDLIB_H_REQUIRE_DEFAULTS
-   gl_STRCASE
-   if test $HAVE_STRCASECMP = 0; then
-     AC_LIBOBJ([strcasecmp])
-@@ -356,8 +432,10 @@ AC_DEFUN([gl_INIT],
-   fi
-   gl_MODULE_INDICATOR([strerror])
-   gl_STRING_MODULE_INDICATOR([strerror])
--  gl_HEADER_STRING_H
--  gl_HEADER_STRINGS_H
-+  gl_STRING_H
-+  gl_STRING_H_REQUIRE_DEFAULTS
-+  gl_STRINGS_H
-+  gl_STRINGS_H_REQUIRE_DEFAULTS
-   gl_FUNC_STRNLEN
-   if test $HAVE_DECL_STRNLEN = 0 || test $REPLACE_STRNLEN = 1; then
-     AC_LIBOBJ([strnlen])
-@@ -365,10 +443,27 @@ AC_DEFUN([gl_INIT],
-   fi
-   gl_STRING_MODULE_INDICATOR([strnlen])
-   gl_SYS_TYPES_H
-+  gl_SYS_TYPES_H_REQUIRE_DEFAULTS
-   AC_PROG_MKDIR_P
-   gl_UNISTD_H
--  gl_LIBUNISTRING_LIBHEADER([0.9.4], [unitypes.h])
--  gl_LIBUNISTRING_LIBHEADER([0.9.4], [uniwidth.h])
-+  gl_UNISTD_H_REQUIRE_DEFAULTS
-+  gl_LIBUNISTRING_LIBHEADER([0.9.11], [unitypes.h])
-+  AH_VERBATIM([unitypes_restrict], [
-+  /* This definition is a duplicate of the one in unitypes.h.
-+     It is here so that we can cope with an older version of unitypes.h
-+     that does not contain this definition and that is pre-installed among
-+     the public header files.  */
-+  # if defined __restrict \
-+       || 2 < __GNUC__ + (95 <= __GNUC_MINOR__) \
-+       || __clang_major__ >= 3
-+  #  define _UC_RESTRICT __restrict
-+  # elif 199901L <= __STDC_VERSION__ || defined restrict
-+  #  define _UC_RESTRICT restrict
-+  # else
-+  #  define _UC_RESTRICT
-+  # endif
-+  ])
-+  gl_LIBUNISTRING_LIBHEADER([0.9.11], [uniwidth.h])
-   gl_LIBUNISTRING_MODULE([0.9.8], [uniwidth/width])
-   gl_FUNC_VASPRINTF
-   gl_STDIO_MODULE_INDICATOR([vasprintf])
-@@ -376,7 +471,9 @@ AC_DEFUN([gl_INIT],
-     [AM_][XGETTEXT_OPTION([--flag=asprintf:2:c-format])
-      AM_][XGETTEXT_OPTION([--flag=vasprintf:2:c-format])])
-   gl_WCHAR_H
-+  gl_WCHAR_H_REQUIRE_DEFAULTS
-   gl_WCTYPE_H
-+  gl_WCTYPE_H_REQUIRE_DEFAULTS
-   gl_FUNC_WCWIDTH
-   if test $HAVE_WCWIDTH = 0 || test $REPLACE_WCWIDTH = 1; then
-     AC_LIBOBJ([wcwidth])
-@@ -395,17 +492,16 @@ AC_DEFUN([gl_INIT],
-   gl_gnulib_enabled_dynarray=false
-   gl_gnulib_enabled_fcntl=false
-   gl_gnulib_enabled_43fe87a341d9b4b93c47c3ad819a5239=false
-+  gl_gnulib_enabled_ef07dc4b3077c11ea9cef586db4e5955=false
-   gl_gnulib_enabled_fstat=false
-   gl_gnulib_enabled_getdtablesize=false
-   gl_gnulib_enabled_30838f5439487421042f2225bed3af76=false
--  gl_gnulib_enabled_intprops=false
-   gl_gnulib_enabled_langinfo=false
-   gl_gnulib_enabled_21ee726a3540c09237a8e70c0baf7467=false
-   gl_gnulib_enabled_localcharset=false
-   gl_gnulib_enabled_locale=false
-   gl_gnulib_enabled_localeconv=false
-   gl_gnulib_enabled_lock=false
--  gl_gnulib_enabled_ef455225c00f5049c808c2eda3e76866=false
-   gl_gnulib_enabled_mbtowc=false
-   gl_gnulib_enabled_mempcpy=false
-   gl_gnulib_enabled_f691f076f650964c9f5598c3ee487616=false
-@@ -506,8 +602,9 @@ AC_DEFUN([gl_INIT],
-   func_gl_gnulib_m4code_dynarray ()
-   {
-     if ! $gl_gnulib_enabled_dynarray; then
-+      AC_PROG_MKDIR_P
-       gl_gnulib_enabled_dynarray=true
--      func_gl_gnulib_m4code_intprops
-+      func_gl_gnulib_m4code_37f71b604aa9c54446783d80f42fe547
-       func_gl_gnulib_m4code_21ee726a3540c09237a8e70c0baf7467
-     fi
-   }
-@@ -540,6 +637,18 @@ AC_DEFUN([gl_INIT],
-       gl_gnulib_enabled_43fe87a341d9b4b93c47c3ad819a5239=true
-     fi
-   }
-+  func_gl_gnulib_m4code_ef07dc4b3077c11ea9cef586db4e5955 ()
-+  {
-+    if ! $gl_gnulib_enabled_ef07dc4b3077c11ea9cef586db4e5955; then
-+      gl_FUNC_FREE
-+      if test $REPLACE_FREE = 1; then
-+        AC_LIBOBJ([free])
-+        gl_PREREQ_FREE
-+      fi
-+      gl_STDLIB_MODULE_INDICATOR([free-posix])
-+      gl_gnulib_enabled_ef07dc4b3077c11ea9cef586db4e5955=true
-+    fi
-+  }
-   func_gl_gnulib_m4code_fstat ()
-   {
-     if ! $gl_gnulib_enabled_fstat; then
-@@ -595,16 +704,11 @@ AC_DEFUN([gl_INIT],
-       func_gl_gnulib_m4code_e7e881d32ca02f1c997b13c737c64bbd
-     fi
-   }
--  func_gl_gnulib_m4code_intprops ()
--  {
--    if ! $gl_gnulib_enabled_intprops; then
--      gl_gnulib_enabled_intprops=true
--    fi
--  }
-   func_gl_gnulib_m4code_langinfo ()
-   {
-     if ! $gl_gnulib_enabled_langinfo; then
-       gl_LANGINFO_H
-+      gl_LANGINFO_H_REQUIRE_DEFAULTS
-       gl_gnulib_enabled_langinfo=true
-     fi
-   }
-@@ -629,6 +733,7 @@ AC_DEFUN([gl_INIT],
-   {
-     if ! $gl_gnulib_enabled_locale; then
-       gl_LOCALE_H
-+      gl_LOCALE_H_REQUIRE_DEFAULTS
-       gl_gnulib_enabled_locale=true
-     fi
-   }
-@@ -666,18 +771,6 @@ AC_DEFUN([gl_INIT],
-       fi
-     fi
-   }
--  func_gl_gnulib_m4code_ef455225c00f5049c808c2eda3e76866 ()
--  {
--    if ! $gl_gnulib_enabled_ef455225c00f5049c808c2eda3e76866; then
--      gl_FUNC_MALLOC_POSIX
--      if test $REPLACE_MALLOC = 1; then
--        AC_LIBOBJ([malloc])
--      fi
--      gl_STDLIB_MODULE_INDICATOR([malloc-posix])
--      gl_MODULE_INDICATOR([malloc-posix])
--      gl_gnulib_enabled_ef455225c00f5049c808c2eda3e76866=true
--    fi
--  }
-   func_gl_gnulib_m4code_mbtowc ()
-   {
-     if ! $gl_gnulib_enabled_mbtowc; then
-@@ -803,7 +896,6 @@ AC_DEFUN([gl_INIT],
-       gl_STAT_TIME
-       gl_STAT_BIRTHTIME
-       gl_gnulib_enabled_0137e3d3638b33e5819d132d0b23165c=true
--      func_gl_gnulib_m4code_intprops
-       func_gl_gnulib_m4code_time
-     fi
-   }
-@@ -870,7 +962,8 @@ AC_DEFUN([gl_INIT],
-   func_gl_gnulib_m4code_sys_stat ()
-   {
-     if ! $gl_gnulib_enabled_sys_stat; then
--      gl_HEADER_SYS_STAT_H
-+      gl_SYS_STAT_H
-+      gl_SYS_STAT_H_REQUIRE_DEFAULTS
-       AC_PROG_MKDIR_P
-       gl_gnulib_enabled_sys_stat=true
-       func_gl_gnulib_m4code_time
-@@ -886,7 +979,8 @@ AC_DEFUN([gl_INIT],
-   func_gl_gnulib_m4code_time ()
-   {
-     if ! $gl_gnulib_enabled_time; then
--      gl_HEADER_TIME_H
-+      gl_TIME_H
-+      gl_TIME_H_REQUIRE_DEFAULTS
-       gl_gnulib_enabled_time=true
-     fi
-   }
-@@ -897,6 +991,7 @@ AC_DEFUN([gl_INIT],
-       gl_FUNC_VASNPRINTF
-       gl_gnulib_enabled_vasnprintf=true
-       func_gl_gnulib_m4code_attribute
-+      func_gl_gnulib_m4code_ef07dc4b3077c11ea9cef586db4e5955
-       func_gl_gnulib_m4code_xsize
-     fi
-   }
-@@ -1002,6 +1097,9 @@ AC_DEFUN([gl_INIT],
-   if test $REPLACE_OPEN = 1; then
-     func_gl_gnulib_m4code_stat
-   fi
-+  if test $REPLACE_REALLOC = 1; then
-+    func_gl_gnulib_m4code_ef07dc4b3077c11ea9cef586db4e5955
-+  fi
-   if test $ac_use_included_regex = yes; then
-     func_gl_gnulib_m4code_attribute
-   fi
-@@ -1015,9 +1113,6 @@ AC_DEFUN([gl_INIT],
-     func_gl_gnulib_m4code_dynarray
-   fi
-   if test $ac_use_included_regex = yes; then
--    func_gl_gnulib_m4code_intprops
--  fi
--  if test $ac_use_included_regex = yes; then
-     func_gl_gnulib_m4code_langinfo
-   fi
-   if test $ac_use_included_regex = yes; then
-@@ -1032,12 +1127,6 @@ AC_DEFUN([gl_INIT],
-   if test $ac_use_included_regex = yes; then
-     func_gl_gnulib_m4code_wcrtomb
-   fi
--  if test $REPLACE_STRDUP = 1; then
--    func_gl_gnulib_m4code_ef455225c00f5049c808c2eda3e76866
--  fi
--  if test $REPLACE_STRERROR = 1; then
--    func_gl_gnulib_m4code_intprops
--  fi
-   if test $REPLACE_STRERROR = 1; then
-     func_gl_gnulib_m4code_dbb57f49352be8fb86869629a254fb72
-   fi
-@@ -1057,17 +1146,16 @@ AC_DEFUN([gl_INIT],
-   AM_CONDITIONAL([gl_GNULIB_ENABLED_dynarray], [$gl_gnulib_enabled_dynarray])
-   AM_CONDITIONAL([gl_GNULIB_ENABLED_fcntl], [$gl_gnulib_enabled_fcntl])
-   AM_CONDITIONAL([gl_GNULIB_ENABLED_43fe87a341d9b4b93c47c3ad819a5239], [$gl_gnulib_enabled_43fe87a341d9b4b93c47c3ad819a5239])
-+  AM_CONDITIONAL([gl_GNULIB_ENABLED_ef07dc4b3077c11ea9cef586db4e5955], [$gl_gnulib_enabled_ef07dc4b3077c11ea9cef586db4e5955])
-   AM_CONDITIONAL([gl_GNULIB_ENABLED_fstat], [$gl_gnulib_enabled_fstat])
-   AM_CONDITIONAL([gl_GNULIB_ENABLED_getdtablesize], [$gl_gnulib_enabled_getdtablesize])
-   AM_CONDITIONAL([gl_GNULIB_ENABLED_30838f5439487421042f2225bed3af76], [$gl_gnulib_enabled_30838f5439487421042f2225bed3af76])
--  AM_CONDITIONAL([gl_GNULIB_ENABLED_intprops], [$gl_gnulib_enabled_intprops])
-   AM_CONDITIONAL([gl_GNULIB_ENABLED_langinfo], [$gl_gnulib_enabled_langinfo])
-   AM_CONDITIONAL([gl_GNULIB_ENABLED_21ee726a3540c09237a8e70c0baf7467], [$gl_gnulib_enabled_21ee726a3540c09237a8e70c0baf7467])
-   AM_CONDITIONAL([gl_GNULIB_ENABLED_localcharset], [$gl_gnulib_enabled_localcharset])
-   AM_CONDITIONAL([gl_GNULIB_ENABLED_locale], [$gl_gnulib_enabled_locale])
-   AM_CONDITIONAL([gl_GNULIB_ENABLED_localeconv], [$gl_gnulib_enabled_localeconv])
-   AM_CONDITIONAL([gl_GNULIB_ENABLED_lock], [$gl_gnulib_enabled_lock])
--  AM_CONDITIONAL([gl_GNULIB_ENABLED_ef455225c00f5049c808c2eda3e76866], [$gl_gnulib_enabled_ef455225c00f5049c808c2eda3e76866])
-   AM_CONDITIONAL([gl_GNULIB_ENABLED_mbtowc], [$gl_gnulib_enabled_mbtowc])
-   AM_CONDITIONAL([gl_GNULIB_ENABLED_mempcpy], [$gl_gnulib_enabled_mempcpy])
-   AM_CONDITIONAL([gl_GNULIB_ENABLED_f691f076f650964c9f5598c3ee487616], [$gl_gnulib_enabled_f691f076f650964c9f5598c3ee487616])
-@@ -1105,6 +1193,8 @@ AC_DEFUN([gl_INIT],
-       m4_if(m4_sysval, [0], [],
-         [AC_FATAL([expected source file, required through AC_LIBSOURCES, not found])])
-   ])
-+  m4_popdef([GL_MODULE_INDICATOR_PREFIX])
-+  m4_popdef([GL_MACRO_PREFIX])
-   m4_popdef([gl_LIBSOURCES_DIR])
-   m4_popdef([gl_LIBSOURCES_LIST])
-   m4_popdef([AC_LIBSOURCES])
-@@ -1131,6 +1221,8 @@ AC_DEFUN([gl_INIT],
-   m4_pushdef([AC_LIBSOURCES], m4_defn([gltests_LIBSOURCES]))
-   m4_pushdef([gltests_LIBSOURCES_LIST], [])
-   m4_pushdef([gltests_LIBSOURCES_DIR], [])
-+  m4_pushdef([GL_MACRO_PREFIX], [gltests])
-+  m4_pushdef([GL_MODULE_INDICATOR_PREFIX], [GL])
-   gl_COMMON
-   gl_source_base='tests'
- changequote(,)dnl
-@@ -1152,6 +1244,8 @@ changequote([, ])dnl
-       m4_if(m4_sysval, [0], [],
-         [AC_FATAL([expected source file, required through AC_LIBSOURCES, not found])])
-   ])
-+  m4_popdef([GL_MODULE_INDICATOR_PREFIX])
-+  m4_popdef([GL_MACRO_PREFIX])
-   m4_popdef([gltests_LIBSOURCES_DIR])
-   m4_popdef([gltests_LIBSOURCES_LIST])
-   m4_popdef([AC_LIBSOURCES])
-@@ -1247,6 +1341,7 @@ AC_DEFUN([gl_FILE_LIST], [
-   lib/basename-lgpl.h
-   lib/btowc.c
-   lib/c++defs.h
-+  lib/calloc.c
-   lib/cdefs.h
-   lib/cloexec.c
-   lib/cloexec.h
-@@ -1266,6 +1361,7 @@ AC_DEFUN([gl_FILE_LIST], [
-   lib/float+.h
-   lib/float.c
-   lib/float.in.h
-+  lib/free.c
-   lib/fstat.c
-   lib/getdtablesize.c
-   lib/getopt-cdefs.in.h
-@@ -1285,6 +1381,9 @@ AC_DEFUN([gl_FILE_LIST], [
-   lib/glthread/threadlib.c
-   lib/hard-locale.c
-   lib/hard-locale.h
-+  lib/ialloc.c
-+  lib/ialloc.h
-+  lib/idx.h
-   lib/intprops.h
-   lib/inttypes.in.h
-   lib/iswblank.c
-@@ -1335,6 +1434,7 @@ AC_DEFUN([gl_FILE_LIST], [
-   lib/memchr.valgrind
-   lib/mempcpy.c
-   lib/memrchr.c
-+  lib/minmax.h
-   lib/msvc-inval.c
-   lib/msvc-inval.h
-   lib/msvc-nothrow.c
-@@ -1347,6 +1447,8 @@ AC_DEFUN([gl_FILE_LIST], [
-   lib/printf-args.h
-   lib/printf-parse.c
-   lib/printf-parse.h
-+  lib/realloc.c
-+  lib/reallocarray.c
-   lib/regcomp.c
-   lib/regex.c
-   lib/regex.h
-@@ -1427,6 +1529,7 @@ AC_DEFUN([gl_FILE_LIST], [
-   m4/argz.m4
-   m4/btowc.m4
-   m4/builtin-expect.m4
-+  m4/calloc.m4
-   m4/close.m4
-   m4/codeset.m4
-   m4/double-slash-root.m4
-@@ -1441,6 +1544,7 @@ AC_DEFUN([gl_FILE_LIST], [
-   m4/fcntl.m4
-   m4/fcntl_h.m4
-   m4/float_h.m4
-+  m4/free.m4
-   m4/fstat.m4
-   m4/getdtablesize.m4
-   m4/getopt.m4
-@@ -1483,6 +1587,7 @@ AC_DEFUN([gl_FILE_LIST], [
-   m4/memchr.m4
-   m4/mempcpy.m4
-   m4/memrchr.m4
-+  m4/minmax.m4
-   m4/mmap-anon.m4
-   m4/mode_t.m4
-   m4/msvc-inval.m4
-@@ -1498,6 +1603,8 @@ AC_DEFUN([gl_FILE_LIST], [
-   m4/pid_t.m4
-   m4/printf.m4
-   m4/pthread_rwlock_rdlock.m4
-+  m4/realloc.m4
-+  m4/reallocarray.m4
-   m4/regex.m4
-   m4/setlocale_null.m4
-   m4/size_max.m4
-@@ -1540,5 +1647,6 @@ AC_DEFUN([gl_FILE_LIST], [
-   m4/wint_t.m4
-   m4/xalloc.m4
-   m4/xsize.m4
-+  m4/year2038.m4
-   m4/zzgnulib.m4
- ])
---- a/gnulib/m4/inttypes.m4
-+++ b/gnulib/m4/inttypes.m4
-@@ -1,4 +1,4 @@
--# inttypes.m4 serial 32
-+# inttypes.m4 serial 35
- dnl Copyright (C) 2006-2021 Free Software Foundation, Inc.
- dnl This file is free software; the Free Software Foundation
- dnl gives unlimited permission to copy and/or distribute it,
-@@ -7,7 +7,7 @@ dnl with or without modifications, as lo
- dnl From Derek Price, Bruno Haible.
- dnl Test whether <inttypes.h> is supported or must be substituted.
- 
--AC_DEFUN([gl_INTTYPES_H],
-+AC_DEFUN_ONCE([gl_INTTYPES_H],
- [
-   AC_REQUIRE([gl_INTTYPES_INCOMPLETE])
-   gl_INTTYPES_PRI_SCN
-@@ -136,19 +136,34 @@ AC_DEFUN([gl_INTTYPES_CHECK_LONG_LONG_IN
-   AC_SUBST([$1])
- ])
- 
-+# gl_INTTYPES_MODULE_INDICATOR([modulename])
-+# sets the shell variable that indicates the presence of the given module
-+# to a C preprocessor expression that will evaluate to 1.
-+# This macro invocation must not occur in macros that are AC_REQUIREd.
- AC_DEFUN([gl_INTTYPES_MODULE_INDICATOR],
- [
--  dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
--  AC_REQUIRE([gl_INTTYPES_H_DEFAULTS])
-+  dnl Ensure to expand the default settings once only.
-+  gl_INTTYPES_H_REQUIRE_DEFAULTS
-   gl_MODULE_INDICATOR_SET_VARIABLE([$1])
- ])
- 
-+# Initializes the default values for AC_SUBSTed shell variables.
-+# This macro must not be AC_REQUIREd.  It must only be invoked, and only
-+# outside of macros or in macros that are not AC_REQUIREd.
-+AC_DEFUN([gl_INTTYPES_H_REQUIRE_DEFAULTS],
-+[
-+  m4_defun(GL_MODULE_INDICATOR_PREFIX[_INTTYPES_H_MODULE_INDICATOR_DEFAULTS], [
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_IMAXABS])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_IMAXDIV])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRTOIMAX])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRTOUMAX])
-+  ])
-+  m4_require(GL_MODULE_INDICATOR_PREFIX[_INTTYPES_H_MODULE_INDICATOR_DEFAULTS])
-+  AC_REQUIRE([gl_INTTYPES_H_DEFAULTS])
-+])
-+
- AC_DEFUN([gl_INTTYPES_H_DEFAULTS],
- [
--  GNULIB_IMAXABS=0;      AC_SUBST([GNULIB_IMAXABS])
--  GNULIB_IMAXDIV=0;      AC_SUBST([GNULIB_IMAXDIV])
--  GNULIB_STRTOIMAX=0;    AC_SUBST([GNULIB_STRTOIMAX])
--  GNULIB_STRTOUMAX=0;    AC_SUBST([GNULIB_STRTOUMAX])
-   dnl Assume proper GNU behavior unless another module says otherwise.
-   HAVE_DECL_IMAXABS=1;   AC_SUBST([HAVE_DECL_IMAXABS])
-   HAVE_DECL_IMAXDIV=1;   AC_SUBST([HAVE_DECL_IMAXDIV])
---- a/gnulib/m4/iswdigit.m4
-+++ b/gnulib/m4/iswdigit.m4
-@@ -1,4 +1,4 @@
--# iswdigit.m4 serial 2
-+# iswdigit.m4 serial 3
- dnl Copyright (C) 2020-2021 Free Software Foundation, Inc.
- dnl This file is free software; the Free Software Foundation
- dnl gives unlimited permission to copy and/or distribute it,
-@@ -81,12 +81,12 @@ main (int argc, char *argv[])
-     }
-   if (setlocale (LC_ALL, "$LOCALE_FR_UTF8") != NULL)
-     {
--      /* This fails on FreeBSD 12, NetBSD 8.0, MSVC 14.  */
-+      /* This fails on FreeBSD 13.0, NetBSD 8.0, MSVC 14.  */
-       /* U+0663 ARABIC-INDIC DIGIT THREE */
-       is = for_character ("\331\243", 2);
-       if (!(is == 0))
-         result |= 4;
--      /* This fails on FreeBSD 12, NetBSD 8.0, MSVC 14.  */
-+      /* This fails on FreeBSD 13.0, NetBSD 8.0, MSVC 14.  */
-       /* U+FF11 FULLWIDTH DIGIT ONE */
-       is = for_character ("\357\274\221", 3);
-       if (!(is == 0))
---- a/gnulib/m4/iswxdigit.m4
-+++ b/gnulib/m4/iswxdigit.m4
-@@ -1,4 +1,4 @@
--# iswxdigit.m4 serial 2
-+# iswxdigit.m4 serial 3
- dnl Copyright (C) 2020-2021 Free Software Foundation, Inc.
- dnl This file is free software; the Free Software Foundation
- dnl gives unlimited permission to copy and/or distribute it,
-@@ -72,7 +72,7 @@ main (int argc, char *argv[])
-     }
-   if (setlocale (LC_ALL, "$LOCALE_FR_UTF8") != NULL)
-     {
--      /* This fails on FreeBSD 12.  */
-+      /* This fails on FreeBSD 13.0.  */
-       /* U+0663 ARABIC-INDIC DIGIT THREE */
-       is = for_character ("\331\243", 2);
-       if (!(is == 0))
---- a/gnulib/m4/langinfo_h.m4
-+++ b/gnulib/m4/langinfo_h.m4
-@@ -1,10 +1,10 @@
--# langinfo_h.m4 serial 9
-+# langinfo_h.m4 serial 12
- dnl Copyright (C) 2009-2021 Free Software Foundation, Inc.
- dnl This file is free software; the Free Software Foundation
- dnl gives unlimited permission to copy and/or distribute it,
- dnl with or without modifications, as long as this notice is preserved.
- 
--AC_DEFUN([gl_LANGINFO_H],
-+AC_DEFUN_ONCE([gl_LANGINFO_H],
- [
-   AC_REQUIRE([gl_LANGINFO_H_DEFAULTS])
- 
-@@ -104,18 +104,33 @@ int a = YESEXPR;
-     ]], [nl_langinfo])
- ])
- 
-+# gl_LANGINFO_MODULE_INDICATOR([modulename])
-+# sets the shell variable that indicates the presence of the given module
-+# to a C preprocessor expression that will evaluate to 1.
-+# This macro invocation must not occur in macros that are AC_REQUIREd.
- AC_DEFUN([gl_LANGINFO_MODULE_INDICATOR],
- [
--  dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
--  AC_REQUIRE([gl_LANGINFO_H_DEFAULTS])
-+  dnl Ensure to expand the default settings once only.
-+  gl_LANGINFO_H_REQUIRE_DEFAULTS
-   gl_MODULE_INDICATOR_SET_VARIABLE([$1])
-   dnl Define it also as a C macro, for the benefit of the unit tests.
-   gl_MODULE_INDICATOR_FOR_TESTS([$1])
- ])
- 
-+# Initializes the default values for AC_SUBSTed shell variables.
-+# This macro must not be AC_REQUIREd.  It must only be invoked, and only
-+# outside of macros or in macros that are not AC_REQUIREd.
-+AC_DEFUN([gl_LANGINFO_H_REQUIRE_DEFAULTS],
-+[
-+  m4_defun(GL_MODULE_INDICATOR_PREFIX[_LANGINFO_H_MODULE_INDICATOR_DEFAULTS], [
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_NL_LANGINFO])
-+  ])
-+  m4_require(GL_MODULE_INDICATOR_PREFIX[_LANGINFO_H_MODULE_INDICATOR_DEFAULTS])
-+  AC_REQUIRE([gl_LANGINFO_H_DEFAULTS])
-+])
-+
- AC_DEFUN([gl_LANGINFO_H_DEFAULTS],
- [
--  GNULIB_NL_LANGINFO=0;  AC_SUBST([GNULIB_NL_LANGINFO])
-   dnl Assume proper GNU behavior unless another module says otherwise.
-   HAVE_NL_LANGINFO=1;    AC_SUBST([HAVE_NL_LANGINFO])
-   REPLACE_NL_LANGINFO=0; AC_SUBST([REPLACE_NL_LANGINFO])
---- a/gnulib/m4/largefile.m4
-+++ b/gnulib/m4/largefile.m4
-@@ -22,7 +22,8 @@ AC_DEFUN([gl_SET_LARGEFILE_SOURCE],
-   esac
- ])
- 
--# The following implementation works around a problem in autoconf <= 2.69;
-+# Work around a problem in Autoconf through at least 2.71 on glibc 2.34+
-+# with _TIME_BITS.  Also, work around a problem in autoconf <= 2.69:
- # AC_SYS_LARGEFILE does not configure for large inodes on Mac OS X 10.5,
- # or configures them incorrectly in some cases.
- m4_version_prereq([2.70], [], [
-@@ -40,6 +41,7 @@ m4_define([_AC_SYS_LARGEFILE_TEST_INCLUD
-                        && LARGE_OFF_T % 2147483647 == 1)
-                       ? 1 : -1]];[]dnl
- ])
-+])# m4_version_prereq 2.70
- 
- 
- # _AC_SYS_LARGEFILE_MACRO_VALUE(C-MACRO, VALUE,
-@@ -54,7 +56,8 @@ m4_define([_AC_SYS_LARGEFILE_MACRO_VALUE
-     [AC_LANG_PROGRAM([$5], [$6])],
-     [$3=no; break])
-   m4_ifval([$6], [AC_LINK_IFELSE], [AC_COMPILE_IFELSE])(
--    [AC_LANG_PROGRAM([#define $1 $2
-+    [AC_LANG_PROGRAM([#undef $1
-+#define $1 $2
- $5], [$6])],
-     [$3=$2; break])
-   $3=unknown
-@@ -80,9 +83,8 @@ rm -rf conftest*[]dnl
- AC_DEFUN([AC_SYS_LARGEFILE],
- [AC_ARG_ENABLE(largefile,
-                [  --disable-largefile     omit support for large files])
--if test "$enable_largefile" != no; then
--
--  AC_CACHE_CHECK([for special C compiler options needed for large files],
-+AS_IF([test "$enable_largefile" != no],
-+ [AC_CACHE_CHECK([for special C compiler options needed for large files],
-     ac_cv_sys_largefile_CC,
-     [ac_cv_sys_largefile_CC=no
-      if test "$GCC" != yes; then
-@@ -107,15 +109,15 @@ if test "$enable_largefile" != no; then
-     ac_cv_sys_file_offset_bits,
-     [Number of bits in a file offset, on hosts where this is settable.],
-     [_AC_SYS_LARGEFILE_TEST_INCLUDES])
--  if test $ac_cv_sys_file_offset_bits = unknown; then
--    _AC_SYS_LARGEFILE_MACRO_VALUE(_LARGE_FILES, 1,
--      ac_cv_sys_large_files,
--      [Define for large files, on AIX-style hosts.],
--      [_AC_SYS_LARGEFILE_TEST_INCLUDES])
--  fi
--fi
-+  AS_CASE([$ac_cv_sys_file_offset_bits],
-+    [unknown],
-+      [_AC_SYS_LARGEFILE_MACRO_VALUE([_LARGE_FILES], [1],
-+         [ac_cv_sys_large_files],
-+         [Define for large files, on AIX-style hosts.],
-+         [_AC_SYS_LARGEFILE_TEST_INCLUDES])],
-+    [64],
-+      [gl_YEAR2038_BODY([])])])
- ])# AC_SYS_LARGEFILE
--])# m4_version_prereq 2.70
- 
- # Enable large files on systems where this is implemented by Gnulib, not by the
- # system headers.
---- a/gnulib/m4/locale_h.m4
-+++ b/gnulib/m4/locale_h.m4
-@@ -1,13 +1,13 @@
--# locale_h.m4 serial 25
-+# locale_h.m4 serial 28
- dnl Copyright (C) 2007, 2009-2021 Free Software Foundation, Inc.
- dnl This file is free software; the Free Software Foundation
- dnl gives unlimited permission to copy and/or distribute it,
- dnl with or without modifications, as long as this notice is preserved.
- 
--AC_DEFUN([gl_LOCALE_H],
-+AC_DEFUN_ONCE([gl_LOCALE_H],
- [
--  dnl Use AC_REQUIRE here, so that the default behavior below is expanded
--  dnl once only, before all statements that occur in other macros.
-+  dnl Ensure to expand the default settings once only, before all statements
-+  dnl that occur in other macros.
-   AC_REQUIRE([gl_LOCALE_H_DEFAULTS])
- 
-   dnl Persuade glibc <locale.h> to define locale_t and the int_p_*, int_n_*
-@@ -129,22 +129,37 @@ AC_DEFUN([gl_LOCALE_T],
-   AC_SUBST([HAVE_XLOCALE_H])
- ])
- 
-+# gl_LOCALE_MODULE_INDICATOR([modulename])
-+# sets the shell variable that indicates the presence of the given module
-+# to a C preprocessor expression that will evaluate to 1.
-+# This macro invocation must not occur in macros that are AC_REQUIREd.
- AC_DEFUN([gl_LOCALE_MODULE_INDICATOR],
- [
--  dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
--  AC_REQUIRE([gl_LOCALE_H_DEFAULTS])
-+  dnl Ensure to expand the default settings once only.
-+  gl_LOCALE_H_REQUIRE_DEFAULTS
-   gl_MODULE_INDICATOR_SET_VARIABLE([$1])
-   dnl Define it also as a C macro, for the benefit of the unit tests.
-   gl_MODULE_INDICATOR_FOR_TESTS([$1])
- ])
- 
-+# Initializes the default values for AC_SUBSTed shell variables.
-+# This macro must not be AC_REQUIREd.  It must only be invoked, and only
-+# outside of macros or in macros that are not AC_REQUIREd.
-+AC_DEFUN([gl_LOCALE_H_REQUIRE_DEFAULTS],
-+[
-+  m4_defun(GL_MODULE_INDICATOR_PREFIX[_LOCALE_H_MODULE_INDICATOR_DEFAULTS], [
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOCALECONV])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SETLOCALE])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SETLOCALE_NULL])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_DUPLOCALE])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOCALENAME])
-+  ])
-+  m4_require(GL_MODULE_INDICATOR_PREFIX[_LOCALE_H_MODULE_INDICATOR_DEFAULTS])
-+  AC_REQUIRE([gl_LOCALE_H_DEFAULTS])
-+])
-+
- AC_DEFUN([gl_LOCALE_H_DEFAULTS],
- [
--  GNULIB_LOCALECONV=0;     AC_SUBST([GNULIB_LOCALECONV])
--  GNULIB_SETLOCALE=0;      AC_SUBST([GNULIB_SETLOCALE])
--  GNULIB_SETLOCALE_NULL=0; AC_SUBST([GNULIB_SETLOCALE_NULL])
--  GNULIB_DUPLOCALE=0;      AC_SUBST([GNULIB_DUPLOCALE])
--  GNULIB_LOCALENAME=0;     AC_SUBST([GNULIB_LOCALENAME])
-   dnl Assume proper GNU behavior unless another module says otherwise.
-   HAVE_NEWLOCALE=1;       AC_SUBST([HAVE_NEWLOCALE])
-   HAVE_DUPLOCALE=1;       AC_SUBST([HAVE_DUPLOCALE])
---- a/gnulib/m4/malloc.m4
-+++ b/gnulib/m4/malloc.m4
-@@ -1,21 +1,21 @@
--# malloc.m4 serial 22
-+# malloc.m4 serial 27
- dnl Copyright (C) 2007, 2009-2021 Free Software Foundation, Inc.
- dnl This file is free software; the Free Software Foundation
- dnl gives unlimited permission to copy and/or distribute it,
- dnl with or without modifications, as long as this notice is preserved.
- 
- # This is adapted with modifications from upstream Autoconf here:
--# https://git.savannah.gnu.org/cgit/autoconf.git/commit/?id=04be2b7a29d65d9a08e64e8e56e594c91749598c
-+# https://git.savannah.gnu.org/cgit/autoconf.git/tree/lib/autoconf/functions.m4?id=v2.70#n949
- AC_DEFUN([_AC_FUNC_MALLOC_IF],
- [
-   AC_REQUIRE([AC_CANONICAL_HOST])dnl for cross-compiles
--  AC_CACHE_CHECK([for GNU libc compatible malloc],
-+  AC_CACHE_CHECK([whether malloc (0) returns nonnull],
-     [ac_cv_func_malloc_0_nonnull],
-     [AC_RUN_IFELSE(
-        [AC_LANG_PROGRAM(
-           [[#include <stdlib.h>
-           ]],
--          [[char *p = malloc (0);
-+          [[void *p = malloc (0);
-             int result = !p;
-             free (p);
-             return result;]])
-@@ -24,75 +24,151 @@ AC_DEFUN([_AC_FUNC_MALLOC_IF],
-        [ac_cv_func_malloc_0_nonnull=no],
-        [case "$host_os" in
-           # Guess yes on platforms where we know the result.
--          *-gnu* | gnu* | *-musl* | freebsd* | midnightbsd* | netbsd* | openbsd* \
--          | hpux* | solaris* | cygwin* | mingw*)
-+          *-gnu* | freebsd* | netbsd* | openbsd* | bitrig* \
-+          | gnu* | *-musl* | midnightbsd* \
-+          | hpux* | solaris* | cygwin* | mingw* | msys* )
-             ac_cv_func_malloc_0_nonnull="guessing yes" ;;
-           # If we don't know, obey --enable-cross-guesses.
-           *) ac_cv_func_malloc_0_nonnull="$gl_cross_guess_normal" ;;
-         esac
-        ])
-     ])
--  case "$ac_cv_func_malloc_0_nonnull" in
--    *yes)
--      $1
--      ;;
--    *)
--      $2
--      ;;
--  esac
-+  AS_CASE([$ac_cv_func_malloc_0_nonnull], [*yes], [$1], [$2])
- ])# _AC_FUNC_MALLOC_IF
- 
- # gl_FUNC_MALLOC_GNU
- # ------------------
--# Test whether 'malloc (0)' is handled like in GNU libc, and replace malloc if
--# it is not.
-+# Replace malloc if it is not compatible with GNU libc.
- AC_DEFUN([gl_FUNC_MALLOC_GNU],
- [
-   AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
--  dnl _AC_FUNC_MALLOC_IF is defined in Autoconf.
--  _AC_FUNC_MALLOC_IF(
--    [AC_DEFINE([HAVE_MALLOC_GNU], [1],
--               [Define to 1 if your system has a GNU libc compatible 'malloc'
--                function, and to 0 otherwise.])],
--    [AC_DEFINE([HAVE_MALLOC_GNU], [0])
--     REPLACE_MALLOC=1
-+  AC_REQUIRE([gl_FUNC_MALLOC_POSIX])
-+  if test $REPLACE_MALLOC = 0; then
-+    _AC_FUNC_MALLOC_IF([], [REPLACE_MALLOC=1])
-+  fi
-+])
-+
-+# gl_FUNC_MALLOC_PTRDIFF
-+# ----------------------
-+# Test whether malloc (N) reliably fails when N exceeds PTRDIFF_MAX,
-+# and replace malloc otherwise.
-+AC_DEFUN([gl_FUNC_MALLOC_PTRDIFF],
-+[
-+  AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
-+  AC_REQUIRE([gl_CHECK_MALLOC_PTRDIFF])
-+  test "$gl_cv_malloc_ptrdiff" = yes || REPLACE_MALLOC=1
-+])
-+
-+# Test whether malloc, realloc, calloc refuse to create objects
-+# larger than what can be expressed in ptrdiff_t.
-+# Set gl_cv_func_malloc_gnu to yes or no accordingly.
-+AC_DEFUN([gl_CHECK_MALLOC_PTRDIFF],
-+[
-+  AC_CACHE_CHECK([whether malloc is ptrdiff_t safe],
-+    [gl_cv_malloc_ptrdiff],
-+    [AC_COMPILE_IFELSE(
-+       [AC_LANG_PROGRAM(
-+          [[#include <stdint.h>
-+          ]],
-+          [[/* 64-bit ptrdiff_t is so wide that no practical platform
-+               can exceed it.  */
-+            #define WIDE_PTRDIFF (PTRDIFF_MAX >> 31 >> 31 != 0)
-+
-+            /* On rare machines where size_t fits in ptrdiff_t there
-+               is no problem.  */
-+            #define NARROW_SIZE (SIZE_MAX <= PTRDIFF_MAX)
-+
-+            /* glibc 2.30 and later malloc refuses to exceed ptrdiff_t
-+               bounds even on 32-bit platforms.  We don't know which
-+               non-glibc systems are safe.  */
-+            #define KNOWN_SAFE (2 < __GLIBC__ + (30 <= __GLIBC_MINOR__))
-+
-+            #if WIDE_PTRDIFF || NARROW_SIZE || KNOWN_SAFE
-+              return 0;
-+            #else
-+              #error "malloc might not be ptrdiff_t safe"
-+              syntax error
-+            #endif
-+          ]])],
-+       [gl_cv_malloc_ptrdiff=yes],
-+       [gl_cv_malloc_ptrdiff=no])
-     ])
- ])
- 
- # gl_FUNC_MALLOC_POSIX
- # --------------------
- # Test whether 'malloc' is POSIX compliant (sets errno to ENOMEM when it
--# fails), and replace malloc if it is not.
-+# fails, and doesn't mess up with ptrdiff_t overflow), and replace
-+# malloc if it is not.
- AC_DEFUN([gl_FUNC_MALLOC_POSIX],
- [
-   AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
-+  AC_REQUIRE([gl_FUNC_MALLOC_PTRDIFF])
-   AC_REQUIRE([gl_CHECK_MALLOC_POSIX])
--  if test $gl_cv_func_malloc_posix = yes; then
-+  if test "$gl_cv_func_malloc_posix" = yes; then
-     AC_DEFINE([HAVE_MALLOC_POSIX], [1],
--      [Define if the 'malloc' function is POSIX compliant.])
-+      [Define if malloc, realloc, and calloc set errno on allocation failure.])
-   else
-     REPLACE_MALLOC=1
-   fi
- ])
- 
--# Test whether malloc, realloc, calloc are POSIX compliant,
-+# Test whether malloc, realloc, calloc set errno to ENOMEM on failure.
- # Set gl_cv_func_malloc_posix to yes or no accordingly.
- AC_DEFUN([gl_CHECK_MALLOC_POSIX],
- [
--  AC_CACHE_CHECK([whether malloc, realloc, calloc are POSIX compliant],
-+  AC_REQUIRE([AC_CANONICAL_HOST])
-+  AC_CACHE_CHECK([whether malloc, realloc, calloc set errno on failure],
-     [gl_cv_func_malloc_posix],
-     [
-       dnl It is too dangerous to try to allocate a large amount of memory:
-       dnl some systems go to their knees when you do that. So assume that
--      dnl all Unix implementations of the function are POSIX compliant.
--      AC_COMPILE_IFELSE(
--        [AC_LANG_PROGRAM(
--           [[]],
--           [[#if defined _WIN32 && ! defined __CYGWIN__
--             choke me
--             #endif
--            ]])],
--        [gl_cv_func_malloc_posix=yes],
--        [gl_cv_func_malloc_posix=no])
-+      dnl all Unix implementations of the function set errno on failure,
-+      dnl except on those platforms where we have seen 'test-malloc-gnu',
-+      dnl 'test-realloc-gnu', 'test-calloc-gnu' fail.
-+      case "$host_os" in
-+        mingw*)
-+          gl_cv_func_malloc_posix=no ;;
-+        irix* | solaris*)
-+          dnl On IRIX 6.5, the three functions return NULL with errno unset
-+          dnl when the argument is larger than PTRDIFF_MAX.
-+          dnl On Solaris 11.3, the three functions return NULL with errno set
-+          dnl to EAGAIN, not ENOMEM, when the argument is larger than
-+          dnl PTRDIFF_MAX.
-+          dnl Here is a test program:
-+m4_divert_push([KILL])
-+#include <errno.h>
-+#include <stdio.h>
-+#include <stdlib.h>
-+#define ptrdiff_t long
-+#ifndef PTRDIFF_MAX
-+# define PTRDIFF_MAX ((ptrdiff_t) ((1UL << (8 * sizeof (ptrdiff_t) - 1)) - 1))
-+#endif
-+
-+int main ()
-+{
-+  void *p;
-+
-+  fprintf (stderr, "PTRDIFF_MAX = %lu\n", (unsigned long) PTRDIFF_MAX);
-+
-+  errno = 0;
-+  p = malloc ((unsigned long) PTRDIFF_MAX + 1);
-+  fprintf (stderr, "p=%p errno=%d\n", p, errno);
-+
-+  errno = 0;
-+  p = calloc (PTRDIFF_MAX / 2 + 1, 2);
-+  fprintf (stderr, "p=%p errno=%d\n", p, errno);
-+
-+  errno = 0;
-+  p = realloc (NULL, (unsigned long) PTRDIFF_MAX + 1);
-+  fprintf (stderr, "p=%p errno=%d\n", p, errno);
-+
-+  return 0;
-+}
-+m4_divert_pop([KILL])
-+          gl_cv_func_malloc_posix=no ;;
-+        *)
-+          gl_cv_func_malloc_posix=yes ;;
-+      esac
-     ])
- ])
---- a/gnulib/m4/mbslen.m4
-+++ b/gnulib/m4/mbslen.m4
-@@ -1,4 +1,4 @@
--# mbslen.m4 serial 2
-+# mbslen.m4 serial 3
- dnl Copyright (C) 2010-2021 Free Software Foundation, Inc.
- dnl This file is free software; the Free Software Foundation
- dnl gives unlimited permission to copy and/or distribute it,
-@@ -6,7 +6,7 @@ dnl with or without modifications, as lo
- 
- AC_DEFUN([gl_FUNC_MBSLEN],
- [
--  AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
-+  AC_REQUIRE([gl_STRING_H_DEFAULTS])
-   AC_CHECK_FUNCS_ONCE([mbslen])
-   if test $ac_cv_func_mbslen = yes; then
-     HAVE_MBSLEN=1
---- a/gnulib/m4/memchr.m4
-+++ b/gnulib/m4/memchr.m4
-@@ -1,4 +1,4 @@
--# memchr.m4 serial 17
-+# memchr.m4 serial 18
- dnl Copyright (C) 2002-2004, 2009-2021 Free Software Foundation, Inc.
- dnl This file is free software; the Free Software Foundation
- dnl gives unlimited permission to copy and/or distribute it,
-@@ -13,7 +13,7 @@ AC_DEFUN_ONCE([gl_FUNC_MEMCHR],
-   AC_CHECK_HEADERS_ONCE([sys/mman.h])
-   AC_CHECK_FUNCS_ONCE([mprotect])
- 
--  AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
-+  AC_REQUIRE([gl_STRING_H_DEFAULTS])
-   # Detect platform-specific bugs in some versions of glibc:
-   # memchr should not dereference anything with length 0
-   #   https://bugzilla.redhat.com/show_bug.cgi?id=499689
---- a/gnulib/m4/mempcpy.m4
-+++ b/gnulib/m4/mempcpy.m4
-@@ -1,4 +1,4 @@
--# mempcpy.m4 serial 11
-+# mempcpy.m4 serial 12
- dnl Copyright (C) 2003-2004, 2006-2007, 2009-2021 Free Software Foundation,
- dnl Inc.
- dnl This file is free software; the Free Software Foundation
-@@ -13,7 +13,7 @@ AC_DEFUN([gl_FUNC_MEMPCPY],
-   dnl The mempcpy() declaration in lib/string.in.h uses 'restrict'.
-   AC_REQUIRE([AC_C_RESTRICT])
- 
--  AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
-+  AC_REQUIRE([gl_STRING_H_DEFAULTS])
-   AC_CHECK_FUNCS([mempcpy])
-   if test $ac_cv_func_mempcpy = no; then
-     HAVE_MEMPCPY=0
---- a/gnulib/m4/memrchr.m4
-+++ b/gnulib/m4/memrchr.m4
-@@ -1,4 +1,4 @@
--# memrchr.m4 serial 10
-+# memrchr.m4 serial 11
- dnl Copyright (C) 2002-2003, 2005-2007, 2009-2021 Free Software Foundation,
- dnl Inc.
- dnl This file is free software; the Free Software Foundation
-@@ -10,7 +10,7 @@ AC_DEFUN([gl_FUNC_MEMRCHR],
-   dnl Persuade glibc <string.h> to declare memrchr().
-   AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
- 
--  AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
-+  AC_REQUIRE([gl_STRING_H_DEFAULTS])
-   AC_CHECK_DECLS_ONCE([memrchr])
-   if test $ac_cv_have_decl_memrchr = no; then
-     HAVE_DECL_MEMRCHR=0
---- /dev/null
-+++ b/gnulib/m4/minmax.m4
-@@ -0,0 +1,44 @@
-+# minmax.m4 serial 4
-+dnl Copyright (C) 2005, 2009-2021 Free Software Foundation, Inc.
-+dnl This file is free software; the Free Software Foundation
-+dnl gives unlimited permission to copy and/or distribute it,
-+dnl with or without modifications, as long as this notice is preserved.
-+
-+AC_PREREQ([2.53])
-+
-+AC_DEFUN([gl_MINMAX],
-+[
-+  AC_REQUIRE([gl_PREREQ_MINMAX])
-+])
-+
-+# Prerequisites of lib/minmax.h.
-+AC_DEFUN([gl_PREREQ_MINMAX],
-+[
-+  gl_MINMAX_IN_HEADER([limits.h])
-+  gl_MINMAX_IN_HEADER([sys/param.h])
-+])
-+
-+dnl gl_MINMAX_IN_HEADER(HEADER)
-+dnl The parameter has to be a literal header name; it cannot be macro,
-+dnl nor a shell variable. (Because autoheader collects only AC_DEFINE
-+dnl invocations with a literal macro name.)
-+AC_DEFUN([gl_MINMAX_IN_HEADER],
-+[
-+  m4_pushdef([header], AS_TR_SH([$1]))
-+  m4_pushdef([HEADER], AS_TR_CPP([$1]))
-+  AC_CACHE_CHECK([whether <$1> defines MIN and MAX],
-+    [gl_cv_minmax_in_]header,
-+    [AC_COMPILE_IFELSE(
-+       [AC_LANG_PROGRAM(
-+          [[#include <$1>
-+            int x = MIN (42, 17);]],
-+          [[]])],
-+       [gl_cv_minmax_in_]header[=yes],
-+       [gl_cv_minmax_in_]header[=no])])
-+  if test $gl_cv_minmax_in_[]header = yes; then
-+    AC_DEFINE([HAVE_MINMAX_IN_]HEADER, 1,
-+      [Define to 1 if <$1> defines the MIN and MAX macros.])
-+  fi
-+  m4_popdef([HEADER])
-+  m4_popdef([header])
-+])
---- a/gnulib/m4/printf.m4
-+++ b/gnulib/m4/printf.m4
-@@ -1,4 +1,4 @@
--# printf.m4 serial 72
-+# printf.m4 serial 73
- dnl Copyright (C) 2003, 2007-2021 Free Software Foundation, Inc.
- dnl This file is free software; the Free Software Foundation
- dnl gives unlimited permission to copy and/or distribute it,
-@@ -537,7 +537,7 @@ int main ()
-           && strcmp (buf, "-0X6.488P-1 33") != 0
-           && strcmp (buf, "-0XC.91P-2 33") != 0))
-     result |= 2;
--  /* This catches a FreeBSD 6.1 bug: it doesn't round.  */
-+  /* This catches a FreeBSD 13.0 bug: it doesn't round.  */
-   if (sprintf (buf, "%.2a %d", 1.51, 33, 44, 55) < 0
-       || (strcmp (buf, "0x1.83p+0 33") != 0
-           && strcmp (buf, "0x3.05p-1 33") != 0
-@@ -1690,6 +1690,7 @@ dnl
- dnl                                  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20
- dnl   glibc 2.5                      .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
- dnl   glibc 2.3.6                    .  .  .  .  #  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
-+dnl   FreeBSD 13.0                   .  .  .  .  #  .  .  .  .  .  .  .  .  #  .  .  .  .  .  .
- dnl   FreeBSD 5.4, 6.1               .  .  .  .  #  .  .  .  .  .  .  #  .  #  .  .  .  .  .  .
- dnl   Mac OS X 10.13.5               .  .  .  #  #  .  #  .  .  .  .  .  .  .  .  .  .  #  .  .
- dnl   Mac OS X 10.5.8                .  .  .  #  #  .  .  .  .  .  .  #  .  .  .  .  .  .  .  .
---- /dev/null
-+++ b/gnulib/m4/realloc.m4
-@@ -0,0 +1,63 @@
-+# realloc.m4 serial 24
-+dnl Copyright (C) 2007, 2009-2021 Free Software Foundation, Inc.
-+dnl This file is free software; the Free Software Foundation
-+dnl gives unlimited permission to copy and/or distribute it,
-+dnl with or without modifications, as long as this notice is preserved.
-+
-+# This is adapted with modifications from upstream Autoconf here:
-+# https://git.savannah.gnu.org/cgit/autoconf.git/tree/lib/autoconf/functions.m4?id=v2.70#n1455
-+AC_DEFUN([_AC_FUNC_REALLOC_IF],
-+[
-+  AC_REQUIRE([AC_CANONICAL_HOST])dnl for cross-compiles
-+  AC_CACHE_CHECK([whether realloc (0, 0) returns nonnull],
-+    [ac_cv_func_realloc_0_nonnull],
-+    [AC_RUN_IFELSE(
-+       [AC_LANG_PROGRAM(
-+          [[#include <stdlib.h>
-+          ]],
-+          [[void *p = realloc (0, 0);
-+            int result = !p;
-+            free (p);
-+            return result;]])
-+       ],
-+       [ac_cv_func_realloc_0_nonnull=yes],
-+       [ac_cv_func_realloc_0_nonnull=no],
-+       [case "$host_os" in
-+          # Guess yes on platforms where we know the result.
-+          *-gnu* | freebsd* | netbsd* | openbsd* | bitrig* \
-+          | gnu* | *-musl* | midnightbsd* \
-+          | hpux* | solaris* | cygwin* | mingw* | msys* )
-+            ac_cv_func_realloc_0_nonnull="guessing yes" ;;
-+          # If we don't know, obey --enable-cross-guesses.
-+          *) ac_cv_func_realloc_0_nonnull="$gl_cross_guess_normal" ;;
-+        esac
-+       ])
-+    ])
-+  AS_CASE([$ac_cv_func_realloc_0_nonnull], [*yes], [$1], [$2])
-+])# AC_FUNC_REALLOC
-+
-+# gl_FUNC_REALLOC_GNU
-+# -------------------
-+# Replace realloc if it is not compatible with GNU libc.
-+AC_DEFUN([gl_FUNC_REALLOC_GNU],
-+[
-+  AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
-+  AC_REQUIRE([gl_FUNC_REALLOC_POSIX])
-+  if test $REPLACE_REALLOC = 0; then
-+    _AC_FUNC_REALLOC_IF([], [REPLACE_REALLOC=1])
-+  fi
-+])# gl_FUNC_REALLOC_GNU
-+
-+# gl_FUNC_REALLOC_POSIX
-+# ---------------------
-+# Test whether 'realloc' is POSIX compliant (sets errno to ENOMEM when it
-+# fails, and doesn't mess up with ptrdiff_t overflow),
-+# and replace realloc if it is not.
-+AC_DEFUN([gl_FUNC_REALLOC_POSIX],
-+[
-+  AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
-+  AC_REQUIRE([gl_FUNC_MALLOC_POSIX])
-+  if test $REPLACE_MALLOC = 1; then
-+    REPLACE_REALLOC=1
-+  fi
-+])
---- /dev/null
-+++ b/gnulib/m4/reallocarray.m4
-@@ -0,0 +1,23 @@
-+# reallocarray.m4 serial 3
-+dnl Copyright (C) 2017-2021 Free Software Foundation, Inc.
-+dnl This file is free software; the Free Software Foundation
-+dnl gives unlimited permission to copy and/or distribute it,
-+dnl with or without modifications, as long as this notice is preserved.
-+
-+AC_DEFUN([gl_FUNC_REALLOCARRAY],
-+[
-+  dnl Persuade glibc <stdlib.h> to declare reallocarray.
-+  AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
-+
-+  AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
-+  AC_REQUIRE([gl_CHECK_MALLOC_PTRDIFF])
-+  AC_CHECK_FUNCS([reallocarray])
-+  if test "$ac_cv_func_reallocarray" = no; then
-+    HAVE_REALLOCARRAY=0
-+  elif test "$gl_cv_malloc_ptrdiff" = no; then
-+    REPLACE_REALLOCARRAY=1
-+  fi
-+])
-+
-+# Prerequisites of lib/reallocarray.c.
-+AC_DEFUN([gl_PREREQ_REALLOCARRAY], [:])
---- a/gnulib/m4/stat.m4
-+++ b/gnulib/m4/stat.m4
-@@ -1,4 +1,4 @@
--# serial 17
-+# serial 18
- 
- # Copyright (C) 2009-2021 Free Software Foundation, Inc.
- #
-@@ -69,7 +69,7 @@ AC_DEFUN([gl_FUNC_STAT],
- 
- # Prerequisites of lib/stat.c and lib/stat-w32.c.
- AC_DEFUN([gl_PREREQ_STAT], [
--  AC_REQUIRE([gl_HEADER_SYS_STAT_H])
-+  AC_REQUIRE([gl_SYS_STAT_H])
-   AC_REQUIRE([gl_PREREQ_STAT_W32])
-   :
- ])
---- a/gnulib/m4/stddef_h.m4
-+++ b/gnulib/m4/stddef_h.m4
-@@ -1,4 +1,4 @@
--# stddef_h.m4 serial 9
-+# stddef_h.m4 serial 11
- dnl Copyright (C) 2009-2021 Free Software Foundation, Inc.
- dnl This file is free software; the Free Software Foundation
- dnl gives unlimited permission to copy and/or distribute it,
-@@ -6,7 +6,7 @@ dnl with or without modifications, as lo
- 
- dnl A placeholder for <stddef.h>, for platforms that have issues.
- 
--AC_DEFUN([gl_STDDEF_H],
-+AC_DEFUN_ONCE([gl_STDDEF_H],
- [
-   AC_REQUIRE([gl_STDDEF_H_DEFAULTS])
-   AC_REQUIRE([gt_TYPE_WCHAR_T])
-@@ -68,13 +68,28 @@ AC_DEFUN([gl_STDDEF_H],
-   fi
- ])
- 
-+# gl_STDDEF_MODULE_INDICATOR([modulename])
-+# sets the shell variable that indicates the presence of the given module
-+# to a C preprocessor expression that will evaluate to 1.
-+# This macro invocation must not occur in macros that are AC_REQUIREd.
- AC_DEFUN([gl_STDDEF_MODULE_INDICATOR],
- [
--  dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
--  AC_REQUIRE([gl_STDDEF_H_DEFAULTS])
-+  dnl Ensure to expand the default settings once only.
-+  gl_STDDEF_H_REQUIRE_DEFAULTS
-   gl_MODULE_INDICATOR_SET_VARIABLE([$1])
- ])
- 
-+# Initializes the default values for AC_SUBSTed shell variables.
-+# This macro must not be AC_REQUIREd.  It must only be invoked, and only
-+# outside of macros or in macros that are not AC_REQUIREd.
-+AC_DEFUN([gl_STDDEF_H_REQUIRE_DEFAULTS],
-+[
-+  m4_defun(GL_MODULE_INDICATOR_PREFIX[_STDDEF_H_MODULE_INDICATOR_DEFAULTS], [
-+  ])
-+  m4_require(GL_MODULE_INDICATOR_PREFIX[_STDDEF_H_MODULE_INDICATOR_DEFAULTS])
-+  AC_REQUIRE([gl_STDDEF_H_DEFAULTS])
-+])
-+
- AC_DEFUN([gl_STDDEF_H_DEFAULTS],
- [
-   dnl Assume proper GNU behavior unless another module says otherwise.
---- a/gnulib/m4/stdint.m4
-+++ b/gnulib/m4/stdint.m4
-@@ -1,4 +1,4 @@
--# stdint.m4 serial 58
-+# stdint.m4 serial 60
- dnl Copyright (C) 2001-2021 Free Software Foundation, Inc.
- dnl This file is free software; the Free Software Foundation
- dnl gives unlimited permission to copy and/or distribute it,
-@@ -170,7 +170,7 @@ struct s {
-       PTRDIFF_MIN == TYPE_MINIMUM (ptrdiff_t)
-       && PTRDIFF_MAX == TYPE_MAXIMUM (ptrdiff_t)
-       ? 1 : -1;
--  /* Detect bug in FreeBSD 6.0 / ia64.  */
-+  /* Detect bug in FreeBSD 6.0/ia64 and FreeBSD 13.0/arm64.  */
-   int check_SIG_ATOMIC:
-       SIG_ATOMIC_MIN == TYPE_MINIMUM (sig_atomic_t)
-       && SIG_ATOMIC_MAX == TYPE_MAXIMUM (sig_atomic_t)
-@@ -527,7 +527,7 @@ AC_DEFUN([gl_STDINT_TYPE_PROPERTIES],
-   dnl requirement that wint_t is "unchanged by default argument promotions".
-   dnl In this case gnulib's <wchar.h> and <wctype.h> override wint_t.
-   dnl Set the variable BITSIZEOF_WINT_T accordingly.
--  if test $GNULIB_OVERRIDES_WINT_T = 1; then
-+  if test $GNULIBHEADERS_OVERRIDE_WINT_T = 1; then
-     BITSIZEOF_WINT_T=32
-   fi
- ])
---- a/gnulib/m4/stdio_h.m4
-+++ b/gnulib/m4/stdio_h.m4
-@@ -1,11 +1,12 @@
--# stdio_h.m4 serial 52
-+# stdio_h.m4 serial 56
- dnl Copyright (C) 2007-2021 Free Software Foundation, Inc.
- dnl This file is free software; the Free Software Foundation
- dnl gives unlimited permission to copy and/or distribute it,
- dnl with or without modifications, as long as this notice is preserved.
- 
--AC_DEFUN([gl_STDIO_H],
-+AC_DEFUN_ONCE([gl_STDIO_H],
- [
-+  AC_REQUIRE([gl_STDIO_H_DEFAULTS])
-   AH_VERBATIM([MINGW_ANSI_STDIO],
- [/* Use GNU style printf and scanf.  */
- #ifndef __USE_MINGW_ANSI_STDIO
-@@ -13,7 +14,6 @@ AC_DEFUN([gl_STDIO_H],
- #endif
- ])
-   AC_DEFINE([__USE_MINGW_ANSI_STDIO])
--  AC_REQUIRE([gl_STDIO_H_DEFAULTS])
-   gl_NEXT_HEADERS([stdio.h])
- 
-   dnl Determine whether __USE_MINGW_ANSI_STDIO makes printf and
-@@ -40,17 +40,6 @@ AC_DEFUN([gl_STDIO_H],
-        attribute "__gnu_printf__" instead of "__printf__"])
-   fi
- 
--  dnl No need to create extra modules for these functions. Everyone who uses
--  dnl <stdio.h> likely needs them.
--  GNULIB_FSCANF=1
--  gl_MODULE_INDICATOR([fscanf])
--  GNULIB_SCANF=1
--  gl_MODULE_INDICATOR([scanf])
--  GNULIB_FGETC=1
--  GNULIB_GETC=1
--  GNULIB_GETCHAR=1
--  GNULIB_FGETS=1
--  GNULIB_FREAD=1
-   dnl This ifdef is necessary to avoid an error "missing file lib/stdio-read.c"
-   dnl "expected source file, required through AC_LIBSOURCES, not found". It is
-   dnl also an optimization, to avoid performing a configure check whose result
-@@ -64,18 +53,6 @@ AC_DEFUN([gl_STDIO_H],
-     fi
-   ])
- 
--  dnl No need to create extra modules for these functions. Everyone who uses
--  dnl <stdio.h> likely needs them.
--  GNULIB_FPRINTF=1
--  GNULIB_PRINTF=1
--  GNULIB_VFPRINTF=1
--  GNULIB_VPRINTF=1
--  GNULIB_FPUTC=1
--  GNULIB_PUTC=1
--  GNULIB_PUTCHAR=1
--  GNULIB_FPUTS=1
--  GNULIB_PUTS=1
--  GNULIB_FWRITE=1
-   dnl This ifdef is necessary to avoid an error "missing file lib/stdio-write.c"
-   dnl "expected source file, required through AC_LIBSOURCES, not found". It is
-   dnl also an optimization, to avoid performing a configure check whose result
-@@ -116,77 +93,92 @@ AC_DEFUN([gl_STDIO_H],
-   fi
- ])
- 
-+# gl_STDIO_MODULE_INDICATOR([modulename])
-+# sets the shell variable that indicates the presence of the given module
-+# to a C preprocessor expression that will evaluate to 1.
-+# This macro invocation must not occur in macros that are AC_REQUIREd.
- AC_DEFUN([gl_STDIO_MODULE_INDICATOR],
- [
--  dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
--  AC_REQUIRE([gl_STDIO_H_DEFAULTS])
-+  dnl Ensure to expand the default settings once only.
-+  gl_STDIO_H_REQUIRE_DEFAULTS
-   gl_MODULE_INDICATOR_SET_VARIABLE([$1])
-   dnl Define it also as a C macro, for the benefit of the unit tests.
-   gl_MODULE_INDICATOR_FOR_TESTS([$1])
- ])
- 
-+# Initializes the default values for AC_SUBSTed shell variables.
-+# This macro must not be AC_REQUIREd.  It must only be invoked, and only
-+# outside of macros or in macros that are not AC_REQUIREd.
-+AC_DEFUN([gl_STDIO_H_REQUIRE_DEFAULTS],
-+[
-+  m4_defun(GL_MODULE_INDICATOR_PREFIX[_STDIO_H_MODULE_INDICATOR_DEFAULTS], [
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_DPRINTF])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FCLOSE])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FDOPEN])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FFLUSH])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FGETC])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FGETS])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FOPEN])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FPRINTF])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FPRINTF_POSIX])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FPURGE])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FPUTC])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FPUTS])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FREAD])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FREOPEN])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FSCANF])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FSEEK])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FSEEKO])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FTELL])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FTELLO])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FWRITE])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETC])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETCHAR])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETDELIM])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETLINE])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_OBSTACK_PRINTF])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_OBSTACK_PRINTF_POSIX])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PCLOSE])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PERROR])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_POPEN])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PRINTF])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PRINTF_POSIX])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PUTC])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PUTCHAR])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PUTS])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_REMOVE])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_RENAME])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_RENAMEAT])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SCANF])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SNPRINTF])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SPRINTF_POSIX])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STDIO_H_NONBLOCKING])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STDIO_H_SIGPIPE])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TMPFILE])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_VASPRINTF])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_VFSCANF])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_VSCANF])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_VDPRINTF])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_VFPRINTF])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_VFPRINTF_POSIX])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_VPRINTF])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_VPRINTF_POSIX])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_VSNPRINTF])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_VSPRINTF_POSIX])
-+    dnl Support Microsoft deprecated alias function names by default.
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_FCLOSEALL], [1])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_FDOPEN], [1])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_FILENO], [1])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_GETW], [1])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_PUTW], [1])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_TEMPNAM], [1])
-+  ])
-+  m4_require(GL_MODULE_INDICATOR_PREFIX[_STDIO_H_MODULE_INDICATOR_DEFAULTS])
-+  AC_REQUIRE([gl_STDIO_H_DEFAULTS])
-+])
-+
- AC_DEFUN([gl_STDIO_H_DEFAULTS],
- [
--  GNULIB_DPRINTF=0;              AC_SUBST([GNULIB_DPRINTF])
--  GNULIB_FCLOSE=0;               AC_SUBST([GNULIB_FCLOSE])
--  GNULIB_FDOPEN=0;               AC_SUBST([GNULIB_FDOPEN])
--  GNULIB_FFLUSH=0;               AC_SUBST([GNULIB_FFLUSH])
--  GNULIB_FGETC=0;                AC_SUBST([GNULIB_FGETC])
--  GNULIB_FGETS=0;                AC_SUBST([GNULIB_FGETS])
--  GNULIB_FOPEN=0;                AC_SUBST([GNULIB_FOPEN])
--  GNULIB_FPRINTF=0;              AC_SUBST([GNULIB_FPRINTF])
--  GNULIB_FPRINTF_POSIX=0;        AC_SUBST([GNULIB_FPRINTF_POSIX])
--  GNULIB_FPURGE=0;               AC_SUBST([GNULIB_FPURGE])
--  GNULIB_FPUTC=0;                AC_SUBST([GNULIB_FPUTC])
--  GNULIB_FPUTS=0;                AC_SUBST([GNULIB_FPUTS])
--  GNULIB_FREAD=0;                AC_SUBST([GNULIB_FREAD])
--  GNULIB_FREOPEN=0;              AC_SUBST([GNULIB_FREOPEN])
--  GNULIB_FSCANF=0;               AC_SUBST([GNULIB_FSCANF])
--  GNULIB_FSEEK=0;                AC_SUBST([GNULIB_FSEEK])
--  GNULIB_FSEEKO=0;               AC_SUBST([GNULIB_FSEEKO])
--  GNULIB_FTELL=0;                AC_SUBST([GNULIB_FTELL])
--  GNULIB_FTELLO=0;               AC_SUBST([GNULIB_FTELLO])
--  GNULIB_FWRITE=0;               AC_SUBST([GNULIB_FWRITE])
--  GNULIB_GETC=0;                 AC_SUBST([GNULIB_GETC])
--  GNULIB_GETCHAR=0;              AC_SUBST([GNULIB_GETCHAR])
--  GNULIB_GETDELIM=0;             AC_SUBST([GNULIB_GETDELIM])
--  GNULIB_GETLINE=0;              AC_SUBST([GNULIB_GETLINE])
--  GNULIB_OBSTACK_PRINTF=0;       AC_SUBST([GNULIB_OBSTACK_PRINTF])
--  GNULIB_OBSTACK_PRINTF_POSIX=0; AC_SUBST([GNULIB_OBSTACK_PRINTF_POSIX])
--  GNULIB_PCLOSE=0;               AC_SUBST([GNULIB_PCLOSE])
--  GNULIB_PERROR=0;               AC_SUBST([GNULIB_PERROR])
--  GNULIB_POPEN=0;                AC_SUBST([GNULIB_POPEN])
--  GNULIB_PRINTF=0;               AC_SUBST([GNULIB_PRINTF])
--  GNULIB_PRINTF_POSIX=0;         AC_SUBST([GNULIB_PRINTF_POSIX])
--  GNULIB_PUTC=0;                 AC_SUBST([GNULIB_PUTC])
--  GNULIB_PUTCHAR=0;              AC_SUBST([GNULIB_PUTCHAR])
--  GNULIB_PUTS=0;                 AC_SUBST([GNULIB_PUTS])
--  GNULIB_REMOVE=0;               AC_SUBST([GNULIB_REMOVE])
--  GNULIB_RENAME=0;               AC_SUBST([GNULIB_RENAME])
--  GNULIB_RENAMEAT=0;             AC_SUBST([GNULIB_RENAMEAT])
--  GNULIB_SCANF=0;                AC_SUBST([GNULIB_SCANF])
--  GNULIB_SNPRINTF=0;             AC_SUBST([GNULIB_SNPRINTF])
--  GNULIB_SPRINTF_POSIX=0;        AC_SUBST([GNULIB_SPRINTF_POSIX])
--  GNULIB_STDIO_H_NONBLOCKING=0;  AC_SUBST([GNULIB_STDIO_H_NONBLOCKING])
--  GNULIB_STDIO_H_SIGPIPE=0;      AC_SUBST([GNULIB_STDIO_H_SIGPIPE])
--  GNULIB_TMPFILE=0;              AC_SUBST([GNULIB_TMPFILE])
--  GNULIB_VASPRINTF=0;            AC_SUBST([GNULIB_VASPRINTF])
--  GNULIB_VFSCANF=0;              AC_SUBST([GNULIB_VFSCANF])
--  GNULIB_VSCANF=0;               AC_SUBST([GNULIB_VSCANF])
--  GNULIB_VDPRINTF=0;             AC_SUBST([GNULIB_VDPRINTF])
--  GNULIB_VFPRINTF=0;             AC_SUBST([GNULIB_VFPRINTF])
--  GNULIB_VFPRINTF_POSIX=0;       AC_SUBST([GNULIB_VFPRINTF_POSIX])
--  GNULIB_VPRINTF=0;              AC_SUBST([GNULIB_VPRINTF])
--  GNULIB_VPRINTF_POSIX=0;        AC_SUBST([GNULIB_VPRINTF_POSIX])
--  GNULIB_VSNPRINTF=0;            AC_SUBST([GNULIB_VSNPRINTF])
--  GNULIB_VSPRINTF_POSIX=0;       AC_SUBST([GNULIB_VSPRINTF_POSIX])
--  dnl Support Microsoft deprecated alias function names by default.
--  GNULIB_MDA_FCLOSEALL=1;        AC_SUBST([GNULIB_MDA_FCLOSEALL])
--  GNULIB_MDA_FDOPEN=1;           AC_SUBST([GNULIB_MDA_FDOPEN])
--  GNULIB_MDA_FILENO=1;           AC_SUBST([GNULIB_MDA_FILENO])
--  GNULIB_MDA_GETW=1;             AC_SUBST([GNULIB_MDA_GETW])
--  GNULIB_MDA_PUTW=1;             AC_SUBST([GNULIB_MDA_PUTW])
--  GNULIB_MDA_TEMPNAM=1;          AC_SUBST([GNULIB_MDA_TEMPNAM])
-   dnl Assume proper GNU behavior unless another module says otherwise.
-   HAVE_DECL_FCLOSEALL=1;         AC_SUBST([HAVE_DECL_FCLOSEALL])
-   HAVE_DECL_FPURGE=1;            AC_SUBST([HAVE_DECL_FPURGE])
---- a/gnulib/m4/stdlib_h.m4
-+++ b/gnulib/m4/stdlib_h.m4
-@@ -1,10 +1,10 @@
--# stdlib_h.m4 serial 55
-+# stdlib_h.m4 serial 63
- dnl Copyright (C) 2007-2021 Free Software Foundation, Inc.
- dnl This file is free software; the Free Software Foundation
- dnl gives unlimited permission to copy and/or distribute it,
- dnl with or without modifications, as long as this notice is preserved.
- 
--AC_DEFUN([gl_STDLIB_H],
-+AC_DEFUN_ONCE([gl_STDLIB_H],
- [
-   AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
-   gl_NEXT_HEADERS([stdlib.h])
-@@ -28,7 +28,7 @@ AC_DEFUN([gl_STDLIB_H],
-     posix_memalign posix_openpt ptsname ptsname_r qsort_r
-     random random_r reallocarray realpath rpmatch secure_getenv setenv
-     setstate setstate_r srandom srandom_r
--    strtod strtold strtoll strtoull unlockpt unsetenv])
-+    strtod strtol strtold strtoll strtoul strtoull unlockpt unsetenv])
- 
-   AC_REQUIRE([AC_C_RESTRICT])
- 
-@@ -46,61 +46,78 @@ AC_DEFUN([gl_STDLIB_H],
-   fi
- ])
- 
-+# gl_STDLIB_MODULE_INDICATOR([modulename])
-+# sets the shell variable that indicates the presence of the given module
-+# to a C preprocessor expression that will evaluate to 1.
-+# This macro invocation must not occur in macros that are AC_REQUIREd.
- AC_DEFUN([gl_STDLIB_MODULE_INDICATOR],
- [
--  dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
--  AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
-+  dnl Ensure to expand the default settings once only.
-+  gl_STDLIB_H_REQUIRE_DEFAULTS
-   gl_MODULE_INDICATOR_SET_VARIABLE([$1])
-   dnl Define it also as a C macro, for the benefit of the unit tests.
-   gl_MODULE_INDICATOR_FOR_TESTS([$1])
- ])
- 
-+# Initializes the default values for AC_SUBSTed shell variables.
-+# This macro must not be AC_REQUIREd.  It must only be invoked, and only
-+# outside of macros or in macros that are not AC_REQUIREd.
-+AC_DEFUN([gl_STDLIB_H_REQUIRE_DEFAULTS],
-+[
-+  m4_defun(GL_MODULE_INDICATOR_PREFIX[_STDLIB_H_MODULE_INDICATOR_DEFAULTS], [
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB__EXIT])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ALIGNED_ALLOC])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ATOLL])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_CALLOC_POSIX])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_CANONICALIZE_FILE_NAME])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FREE_POSIX])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETLOADAVG])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETSUBOPT])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GRANTPT])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MALLOC_POSIX])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBTOWC])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MKDTEMP])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MKOSTEMP])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MKOSTEMPS])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MKSTEMP])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MKSTEMPS])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_POSIX_MEMALIGN])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_POSIX_OPENPT])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PTSNAME])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PTSNAME_R])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PUTENV])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_QSORT_R])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_RANDOM])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_RANDOM_R])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_REALLOCARRAY])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_REALLOC_POSIX])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_REALPATH])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_RPMATCH])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SECURE_GETENV])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SETENV])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRTOD])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRTOL])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRTOLD])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRTOLL])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRTOUL])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRTOULL])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SYSTEM_POSIX])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNLOCKPT])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNSETENV])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCTOMB])
-+    dnl Support Microsoft deprecated alias function names by default.
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_ECVT], [1])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_FCVT], [1])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_GCVT], [1])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_MKTEMP], [1])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_PUTENV], [1])
-+  ])
-+  m4_require(GL_MODULE_INDICATOR_PREFIX[_STDLIB_H_MODULE_INDICATOR_DEFAULTS])
-+  AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
-+])
-+
- AC_DEFUN([gl_STDLIB_H_DEFAULTS],
- [
--  GNULIB__EXIT=0;         AC_SUBST([GNULIB__EXIT])
--  GNULIB_ALIGNED_ALLOC=0; AC_SUBST([GNULIB_ALIGNED_ALLOC])
--  GNULIB_ATOLL=0;         AC_SUBST([GNULIB_ATOLL])
--  GNULIB_CALLOC_POSIX=0;  AC_SUBST([GNULIB_CALLOC_POSIX])
--  GNULIB_CANONICALIZE_FILE_NAME=0;  AC_SUBST([GNULIB_CANONICALIZE_FILE_NAME])
--  GNULIB_FREE_POSIX=0;    AC_SUBST([GNULIB_FREE_POSIX])
--  GNULIB_GETLOADAVG=0;    AC_SUBST([GNULIB_GETLOADAVG])
--  GNULIB_GETSUBOPT=0;     AC_SUBST([GNULIB_GETSUBOPT])
--  GNULIB_GRANTPT=0;       AC_SUBST([GNULIB_GRANTPT])
--  GNULIB_MALLOC_POSIX=0;  AC_SUBST([GNULIB_MALLOC_POSIX])
--  GNULIB_MBTOWC=0;        AC_SUBST([GNULIB_MBTOWC])
--  GNULIB_MKDTEMP=0;       AC_SUBST([GNULIB_MKDTEMP])
--  GNULIB_MKOSTEMP=0;      AC_SUBST([GNULIB_MKOSTEMP])
--  GNULIB_MKOSTEMPS=0;     AC_SUBST([GNULIB_MKOSTEMPS])
--  GNULIB_MKSTEMP=0;       AC_SUBST([GNULIB_MKSTEMP])
--  GNULIB_MKSTEMPS=0;      AC_SUBST([GNULIB_MKSTEMPS])
--  GNULIB_POSIX_MEMALIGN=0;AC_SUBST([GNULIB_POSIX_MEMALIGN])
--  GNULIB_POSIX_OPENPT=0;  AC_SUBST([GNULIB_POSIX_OPENPT])
--  GNULIB_PTSNAME=0;       AC_SUBST([GNULIB_PTSNAME])
--  GNULIB_PTSNAME_R=0;     AC_SUBST([GNULIB_PTSNAME_R])
--  GNULIB_PUTENV=0;        AC_SUBST([GNULIB_PUTENV])
--  GNULIB_QSORT_R=0;       AC_SUBST([GNULIB_QSORT_R])
--  GNULIB_RANDOM=0;        AC_SUBST([GNULIB_RANDOM])
--  GNULIB_RANDOM_R=0;      AC_SUBST([GNULIB_RANDOM_R])
--  GNULIB_REALLOCARRAY=0;  AC_SUBST([GNULIB_REALLOCARRAY])
--  GNULIB_REALLOC_POSIX=0; AC_SUBST([GNULIB_REALLOC_POSIX])
--  GNULIB_REALPATH=0;      AC_SUBST([GNULIB_REALPATH])
--  GNULIB_RPMATCH=0;       AC_SUBST([GNULIB_RPMATCH])
--  GNULIB_SECURE_GETENV=0; AC_SUBST([GNULIB_SECURE_GETENV])
--  GNULIB_SETENV=0;        AC_SUBST([GNULIB_SETENV])
--  GNULIB_STRTOD=0;        AC_SUBST([GNULIB_STRTOD])
--  GNULIB_STRTOLD=0;       AC_SUBST([GNULIB_STRTOLD])
--  GNULIB_STRTOLL=0;       AC_SUBST([GNULIB_STRTOLL])
--  GNULIB_STRTOULL=0;      AC_SUBST([GNULIB_STRTOULL])
--  GNULIB_SYSTEM_POSIX=0;  AC_SUBST([GNULIB_SYSTEM_POSIX])
--  GNULIB_UNLOCKPT=0;      AC_SUBST([GNULIB_UNLOCKPT])
--  GNULIB_UNSETENV=0;      AC_SUBST([GNULIB_UNSETENV])
--  GNULIB_WCTOMB=0;        AC_SUBST([GNULIB_WCTOMB])
--  dnl Support Microsoft deprecated alias function names by default.
--  GNULIB_MDA_ECVT=1;      AC_SUBST([GNULIB_MDA_ECVT])
--  GNULIB_MDA_FCVT=1;      AC_SUBST([GNULIB_MDA_FCVT])
--  GNULIB_MDA_GCVT=1;      AC_SUBST([GNULIB_MDA_GCVT])
--  GNULIB_MDA_MKTEMP=1;    AC_SUBST([GNULIB_MDA_MKTEMP])
--  GNULIB_MDA_PUTENV=1;    AC_SUBST([GNULIB_MDA_PUTENV])
-   dnl Assume proper GNU behavior unless another module says otherwise.
-   HAVE__EXIT=1;              AC_SUBST([HAVE__EXIT])
-   HAVE_ALIGNED_ALLOC=1;      AC_SUBST([HAVE_ALIGNED_ALLOC])
-@@ -137,8 +154,10 @@ AC_DEFUN([gl_STDLIB_H_DEFAULTS],
-   HAVE_SETSTATE=1;           AC_SUBST([HAVE_SETSTATE])
-   HAVE_DECL_SETSTATE=1;      AC_SUBST([HAVE_DECL_SETSTATE])
-   HAVE_STRTOD=1;             AC_SUBST([HAVE_STRTOD])
-+  HAVE_STRTOL=1;             AC_SUBST([HAVE_STRTOL])
-   HAVE_STRTOLD=1;            AC_SUBST([HAVE_STRTOLD])
-   HAVE_STRTOLL=1;            AC_SUBST([HAVE_STRTOLL])
-+  HAVE_STRTOUL=1;            AC_SUBST([HAVE_STRTOUL])
-   HAVE_STRTOULL=1;           AC_SUBST([HAVE_STRTOULL])
-   HAVE_STRUCT_RANDOM_DATA=1; AC_SUBST([HAVE_STRUCT_RANDOM_DATA])
-   HAVE_SYS_LOADAVG_H=0;      AC_SUBST([HAVE_SYS_LOADAVG_H])
-@@ -160,11 +179,16 @@ AC_DEFUN([gl_STDLIB_H_DEFAULTS],
-   REPLACE_RANDOM=0;          AC_SUBST([REPLACE_RANDOM])
-   REPLACE_RANDOM_R=0;        AC_SUBST([REPLACE_RANDOM_R])
-   REPLACE_REALLOC=0;         AC_SUBST([REPLACE_REALLOC])
-+  REPLACE_REALLOCARRAY=0;    AC_SUBST([REPLACE_REALLOCARRAY])
-   REPLACE_REALPATH=0;        AC_SUBST([REPLACE_REALPATH])
-   REPLACE_SETENV=0;          AC_SUBST([REPLACE_SETENV])
-   REPLACE_SETSTATE=0;        AC_SUBST([REPLACE_SETSTATE])
-   REPLACE_STRTOD=0;          AC_SUBST([REPLACE_STRTOD])
-+  REPLACE_STRTOL=0;          AC_SUBST([REPLACE_STRTOL])
-   REPLACE_STRTOLD=0;         AC_SUBST([REPLACE_STRTOLD])
-+  REPLACE_STRTOLL=0;         AC_SUBST([REPLACE_STRTOLL])
-+  REPLACE_STRTOUL=0;         AC_SUBST([REPLACE_STRTOUL])
-+  REPLACE_STRTOULL=0;        AC_SUBST([REPLACE_STRTOULL])
-   REPLACE_UNSETENV=0;        AC_SUBST([REPLACE_UNSETENV])
-   REPLACE_WCTOMB=0;          AC_SUBST([REPLACE_WCTOMB])
- ])
---- a/gnulib/m4/stpcpy.m4
-+++ b/gnulib/m4/stpcpy.m4
-@@ -1,4 +1,4 @@
--# stpcpy.m4 serial 8
-+# stpcpy.m4 serial 9
- dnl Copyright (C) 2002, 2007, 2009-2021 Free Software Foundation, Inc.
- dnl This file is free software; the Free Software Foundation
- dnl gives unlimited permission to copy and/or distribute it,
-@@ -12,7 +12,7 @@ AC_DEFUN([gl_FUNC_STPCPY],
-   dnl The stpcpy() declaration in lib/string.in.h uses 'restrict'.
-   AC_REQUIRE([AC_C_RESTRICT])
- 
--  AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
-+  AC_REQUIRE([gl_STRING_H_DEFAULTS])
-   AC_CHECK_FUNCS([stpcpy])
-   if test $ac_cv_func_stpcpy = no; then
-     HAVE_STPCPY=0
---- a/gnulib/m4/strcase.m4
-+++ b/gnulib/m4/strcase.m4
-@@ -1,4 +1,4 @@
--# strcase.m4 serial 11
-+# strcase.m4 serial 12
- dnl Copyright (C) 2002, 2005-2021 Free Software Foundation, Inc.
- dnl This file is free software; the Free Software Foundation
- dnl gives unlimited permission to copy and/or distribute it,
-@@ -12,7 +12,7 @@ AC_DEFUN([gl_STRCASE],
- 
- AC_DEFUN([gl_FUNC_STRCASECMP],
- [
--  AC_REQUIRE([gl_HEADER_STRINGS_H_DEFAULTS])
-+  AC_REQUIRE([gl_STRINGS_H_DEFAULTS])
-   AC_CHECK_FUNCS([strcasecmp])
-   if test $ac_cv_func_strcasecmp = no; then
-     HAVE_STRCASECMP=0
-@@ -21,7 +21,7 @@ AC_DEFUN([gl_FUNC_STRCASECMP],
- 
- AC_DEFUN([gl_FUNC_STRNCASECMP],
- [
--  AC_REQUIRE([gl_HEADER_STRINGS_H_DEFAULTS])
-+  AC_REQUIRE([gl_STRINGS_H_DEFAULTS])
-   AC_CHECK_FUNCS([strncasecmp])
-   if test $ac_cv_func_strncasecmp = yes; then
-     HAVE_STRNCASECMP=1
---- a/gnulib/m4/strcasestr.m4
-+++ b/gnulib/m4/strcasestr.m4
-@@ -1,4 +1,4 @@
--# strcasestr.m4 serial 26
-+# strcasestr.m4 serial 27
- dnl Copyright (C) 2005, 2007-2021 Free Software Foundation, Inc.
- dnl This file is free software; the Free Software Foundation
- dnl gives unlimited permission to copy and/or distribute it,
-@@ -7,7 +7,7 @@ dnl with or without modifications, as lo
- dnl Check that strcasestr is present and works.
- AC_DEFUN([gl_FUNC_STRCASESTR_SIMPLE],
- [
--  AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
-+  AC_REQUIRE([gl_STRING_H_DEFAULTS])
- 
-   dnl Persuade glibc <string.h> to declare strcasestr().
-   AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
---- a/gnulib/m4/strdup.m4
-+++ b/gnulib/m4/strdup.m4
-@@ -1,4 +1,4 @@
--# strdup.m4 serial 14
-+# strdup.m4 serial 15
- 
- dnl Copyright (C) 2002-2021 Free Software Foundation, Inc.
- 
-@@ -8,7 +8,7 @@ dnl with or without modifications, as lo
- 
- AC_DEFUN([gl_FUNC_STRDUP],
- [
--  AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
-+  AC_REQUIRE([gl_STRING_H_DEFAULTS])
-   AC_CHECK_DECLS_ONCE([strdup])
-   if test $ac_cv_have_decl_strdup = no; then
-     HAVE_DECL_STRDUP=0
-@@ -17,7 +17,7 @@ AC_DEFUN([gl_FUNC_STRDUP],
- 
- AC_DEFUN([gl_FUNC_STRDUP_POSIX],
- [
--  AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
-+  AC_REQUIRE([gl_STRING_H_DEFAULTS])
-   AC_REQUIRE([gl_CHECK_MALLOC_POSIX])
-   if test $gl_cv_func_malloc_posix != yes; then
-     REPLACE_STRDUP=1
---- a/gnulib/m4/strerror.m4
-+++ b/gnulib/m4/strerror.m4
-@@ -1,4 +1,4 @@
--# strerror.m4 serial 21
-+# strerror.m4 serial 22
- dnl Copyright (C) 2002, 2007-2021 Free Software Foundation, Inc.
- dnl This file is free software; the Free Software Foundation
- dnl gives unlimited permission to copy and/or distribute it,
-@@ -6,7 +6,7 @@ dnl with or without modifications, as lo
- 
- AC_DEFUN([gl_FUNC_STRERROR],
- [
--  AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
-+  AC_REQUIRE([gl_STRING_H_DEFAULTS])
-   AC_REQUIRE([gl_HEADER_ERRNO_H])
-   AC_REQUIRE([gl_FUNC_STRERROR_0])
-   AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
---- a/gnulib/m4/string_h.m4
-+++ b/gnulib/m4/string_h.m4
-@@ -5,20 +5,15 @@
- # gives unlimited permission to copy and/or distribute it,
- # with or without modifications, as long as this notice is preserved.
- 
--# serial 29
-+# serial 32
- 
- # Written by Paul Eggert.
- 
--AC_DEFUN([gl_HEADER_STRING_H],
-+AC_DEFUN_ONCE([gl_STRING_H],
- [
--  dnl Use AC_REQUIRE here, so that the default behavior below is expanded
--  dnl once only, before all statements that occur in other macros.
--  AC_REQUIRE([gl_HEADER_STRING_H_BODY])
--])
--
--AC_DEFUN([gl_HEADER_STRING_H_BODY],
--[
--  AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
-+  dnl Ensure to expand the default settings once only, before all statements
-+  dnl that occur in other macros.
-+  AC_REQUIRE([gl_STRING_H_DEFAULTS])
-   gl_NEXT_HEADERS([string.h])
- 
-   dnl Check for declarations of anything we want to poison if the
-@@ -33,62 +28,77 @@ AC_DEFUN([gl_HEADER_STRING_H_BODY],
-   AC_REQUIRE([AC_C_RESTRICT])
- ])
- 
-+# gl_STRING_MODULE_INDICATOR([modulename])
-+# sets the shell variable that indicates the presence of the given module
-+# to a C preprocessor expression that will evaluate to 1.
-+# This macro invocation must not occur in macros that are AC_REQUIREd.
- AC_DEFUN([gl_STRING_MODULE_INDICATOR],
- [
--  dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
--  AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
-+  dnl Ensure to expand the default settings once only.
-+  gl_STRING_H_REQUIRE_DEFAULTS
-   gl_MODULE_INDICATOR_SET_VARIABLE([$1])
-   dnl Define it also as a C macro, for the benefit of the unit tests.
-   gl_MODULE_INDICATOR_FOR_TESTS([$1])
- ])
- 
--AC_DEFUN([gl_HEADER_STRING_H_DEFAULTS],
-+# Initializes the default values for AC_SUBSTed shell variables.
-+# This macro must not be AC_REQUIREd.  It must only be invoked, and only
-+# outside of macros or in macros that are not AC_REQUIREd.
-+AC_DEFUN([gl_STRING_H_REQUIRE_DEFAULTS],
-+[
-+  m4_defun(GL_MODULE_INDICATOR_PREFIX[_STRING_H_MODULE_INDICATOR_DEFAULTS], [
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXPLICIT_BZERO])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FFSL])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FFSLL])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MEMCHR])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MEMMEM])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MEMPCPY])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MEMRCHR])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_RAWMEMCHR])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STPCPY])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STPNCPY])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRCHRNUL])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRDUP])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRNCAT])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRNDUP])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRNLEN])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRPBRK])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRSEP])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRSTR])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRCASESTR])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRTOK_R])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSLEN])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSNLEN])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSCHR])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSRCHR])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSSTR])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSCASECMP])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSNCASECMP])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSPCASECMP])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSCASESTR])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSCSPN])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSPBRK])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSSPN])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSSEP])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSTOK_R])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRERROR])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRERROR_R])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRERRORNAME_NP])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SIGABBREV_NP])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SIGDESCR_NP])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRSIGNAL])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRVERSCMP])
-+    dnl Support Microsoft deprecated alias function names by default.
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_MEMCCPY], [1])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_STRDUP], [1])
-+  ])
-+  m4_require(GL_MODULE_INDICATOR_PREFIX[_STRING_H_MODULE_INDICATOR_DEFAULTS])
-+  AC_REQUIRE([gl_STRING_H_DEFAULTS])
-+])
-+
-+AC_DEFUN([gl_STRING_H_DEFAULTS],
- [
--  GNULIB_EXPLICIT_BZERO=0;   AC_SUBST([GNULIB_EXPLICIT_BZERO])
--  GNULIB_FFSL=0;             AC_SUBST([GNULIB_FFSL])
--  GNULIB_FFSLL=0;            AC_SUBST([GNULIB_FFSLL])
--  GNULIB_MEMCHR=0;           AC_SUBST([GNULIB_MEMCHR])
--  GNULIB_MEMMEM=0;           AC_SUBST([GNULIB_MEMMEM])
--  GNULIB_MEMPCPY=0;          AC_SUBST([GNULIB_MEMPCPY])
--  GNULIB_MEMRCHR=0;          AC_SUBST([GNULIB_MEMRCHR])
--  GNULIB_RAWMEMCHR=0;        AC_SUBST([GNULIB_RAWMEMCHR])
--  GNULIB_STPCPY=0;           AC_SUBST([GNULIB_STPCPY])
--  GNULIB_STPNCPY=0;          AC_SUBST([GNULIB_STPNCPY])
--  GNULIB_STRCHRNUL=0;        AC_SUBST([GNULIB_STRCHRNUL])
--  GNULIB_STRDUP=0;           AC_SUBST([GNULIB_STRDUP])
--  GNULIB_STRNCAT=0;          AC_SUBST([GNULIB_STRNCAT])
--  GNULIB_STRNDUP=0;          AC_SUBST([GNULIB_STRNDUP])
--  GNULIB_STRNLEN=0;          AC_SUBST([GNULIB_STRNLEN])
--  GNULIB_STRPBRK=0;          AC_SUBST([GNULIB_STRPBRK])
--  GNULIB_STRSEP=0;           AC_SUBST([GNULIB_STRSEP])
--  GNULIB_STRSTR=0;           AC_SUBST([GNULIB_STRSTR])
--  GNULIB_STRCASESTR=0;       AC_SUBST([GNULIB_STRCASESTR])
--  GNULIB_STRTOK_R=0;         AC_SUBST([GNULIB_STRTOK_R])
--  GNULIB_MBSLEN=0;           AC_SUBST([GNULIB_MBSLEN])
--  GNULIB_MBSNLEN=0;          AC_SUBST([GNULIB_MBSNLEN])
--  GNULIB_MBSCHR=0;           AC_SUBST([GNULIB_MBSCHR])
--  GNULIB_MBSRCHR=0;          AC_SUBST([GNULIB_MBSRCHR])
--  GNULIB_MBSSTR=0;           AC_SUBST([GNULIB_MBSSTR])
--  GNULIB_MBSCASECMP=0;       AC_SUBST([GNULIB_MBSCASECMP])
--  GNULIB_MBSNCASECMP=0;      AC_SUBST([GNULIB_MBSNCASECMP])
--  GNULIB_MBSPCASECMP=0;      AC_SUBST([GNULIB_MBSPCASECMP])
--  GNULIB_MBSCASESTR=0;       AC_SUBST([GNULIB_MBSCASESTR])
--  GNULIB_MBSCSPN=0;          AC_SUBST([GNULIB_MBSCSPN])
--  GNULIB_MBSPBRK=0;          AC_SUBST([GNULIB_MBSPBRK])
--  GNULIB_MBSSPN=0;           AC_SUBST([GNULIB_MBSSPN])
--  GNULIB_MBSSEP=0;           AC_SUBST([GNULIB_MBSSEP])
--  GNULIB_MBSTOK_R=0;         AC_SUBST([GNULIB_MBSTOK_R])
--  GNULIB_STRERROR=0;         AC_SUBST([GNULIB_STRERROR])
--  GNULIB_STRERROR_R=0;       AC_SUBST([GNULIB_STRERROR_R])
--  GNULIB_STRERRORNAME_NP=0;  AC_SUBST([GNULIB_STRERRORNAME_NP])
--  GNULIB_SIGABBREV_NP=0;     AC_SUBST([GNULIB_SIGABBREV_NP])
--  GNULIB_SIGDESCR_NP=0;      AC_SUBST([GNULIB_SIGDESCR_NP])
--  GNULIB_STRSIGNAL=0;        AC_SUBST([GNULIB_STRSIGNAL])
--  GNULIB_STRVERSCMP=0;       AC_SUBST([GNULIB_STRVERSCMP])
-   HAVE_MBSLEN=0;             AC_SUBST([HAVE_MBSLEN])
--  dnl Support Microsoft deprecated alias function names by default.
--  GNULIB_MDA_MEMCCPY=1;      AC_SUBST([GNULIB_MDA_MEMCCPY])
--  GNULIB_MDA_STRDUP=1;       AC_SUBST([GNULIB_MDA_STRDUP])
-   dnl Assume proper GNU behavior unless another module says otherwise.
-   HAVE_EXPLICIT_BZERO=1;        AC_SUBST([HAVE_EXPLICIT_BZERO])
-   HAVE_FFSL=1;                  AC_SUBST([HAVE_FFSL])
---- a/gnulib/m4/strings_h.m4
-+++ b/gnulib/m4/strings_h.m4
-@@ -1,21 +1,16 @@
- # Configure a replacement for <strings.h>.
--# serial 6
-+# serial 9
- 
- # Copyright (C) 2007, 2009-2021 Free Software Foundation, Inc.
- # This file is free software; the Free Software Foundation
- # gives unlimited permission to copy and/or distribute it,
- # with or without modifications, as long as this notice is preserved.
- 
--AC_DEFUN([gl_HEADER_STRINGS_H],
-+AC_DEFUN_ONCE([gl_STRINGS_H],
- [
--  dnl Use AC_REQUIRE here, so that the default behavior below is expanded
--  dnl once only, before all statements that occur in other macros.
--  AC_REQUIRE([gl_HEADER_STRINGS_H_BODY])
--])
--
--AC_DEFUN([gl_HEADER_STRINGS_H_BODY],
--[
--  AC_REQUIRE([gl_HEADER_STRINGS_H_DEFAULTS])
-+  dnl Ensure to expand the default settings once only, before all statements
-+  dnl that occur in other macros.
-+  AC_REQUIRE([gl_STRINGS_H_DEFAULTS])
- 
-   gl_CHECK_NEXT_HEADERS([strings.h])
-   if test $ac_cv_header_strings_h = yes; then
-@@ -35,16 +30,31 @@ AC_DEFUN([gl_HEADER_STRINGS_H_BODY],
-     ]], [ffs strcasecmp strncasecmp])
- ])
- 
-+# gl_STRINGS_MODULE_INDICATOR([modulename])
-+# sets the shell variable that indicates the presence of the given module
-+# to a C preprocessor expression that will evaluate to 1.
-+# This macro invocation must not occur in macros that are AC_REQUIREd.
- AC_DEFUN([gl_STRINGS_MODULE_INDICATOR],
- [
--  dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
--  AC_REQUIRE([gl_HEADER_STRINGS_H_DEFAULTS])
-+  dnl Ensure to expand the default settings once only.
-+  gl_STRINGS_H_REQUIRE_DEFAULTS
-   gl_MODULE_INDICATOR_SET_VARIABLE([$1])
- ])
- 
--AC_DEFUN([gl_HEADER_STRINGS_H_DEFAULTS],
-+# Initializes the default values for AC_SUBSTed shell variables.
-+# This macro must not be AC_REQUIREd.  It must only be invoked, and only
-+# outside of macros or in macros that are not AC_REQUIREd.
-+AC_DEFUN([gl_STRINGS_H_REQUIRE_DEFAULTS],
-+[
-+  m4_defun(GL_MODULE_INDICATOR_PREFIX[_STRINGS_H_MODULE_INDICATOR_DEFAULTS], [
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FFS])
-+  ])
-+  m4_require(GL_MODULE_INDICATOR_PREFIX[_STRINGS_H_MODULE_INDICATOR_DEFAULTS])
-+  AC_REQUIRE([gl_STRINGS_H_DEFAULTS])
-+])
-+
-+AC_DEFUN([gl_STRINGS_H_DEFAULTS],
- [
--  GNULIB_FFS=0;            AC_SUBST([GNULIB_FFS])
-   dnl Assume proper GNU behavior unless another module says otherwise.
-   HAVE_FFS=1;              AC_SUBST([HAVE_FFS])
-   HAVE_STRCASECMP=1;       AC_SUBST([HAVE_STRCASECMP])
---- a/gnulib/m4/strndup.m4
-+++ b/gnulib/m4/strndup.m4
-@@ -1,4 +1,4 @@
--# strndup.m4 serial 22
-+# strndup.m4 serial 23
- dnl Copyright (C) 2002-2003, 2005-2021 Free Software Foundation, Inc.
- dnl This file is free software; the Free Software Foundation
- dnl gives unlimited permission to copy and/or distribute it,
-@@ -10,7 +10,7 @@ AC_DEFUN([gl_FUNC_STRNDUP],
-   AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
- 
-   AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
--  AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
-+  AC_REQUIRE([gl_STRING_H_DEFAULTS])
-   AC_CHECK_DECLS_ONCE([strndup])
-   AC_CHECK_FUNCS_ONCE([strndup])
-   if test $ac_cv_have_decl_strndup = no; then
---- a/gnulib/m4/strnlen.m4
-+++ b/gnulib/m4/strnlen.m4
-@@ -1,4 +1,4 @@
--# strnlen.m4 serial 13
-+# strnlen.m4 serial 14
- dnl Copyright (C) 2002-2003, 2005-2007, 2009-2021 Free Software Foundation,
- dnl Inc.
- dnl This file is free software; the Free Software Foundation
-@@ -7,7 +7,7 @@ dnl with or without modifications, as lo
- 
- AC_DEFUN([gl_FUNC_STRNLEN],
- [
--  AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
-+  AC_REQUIRE([gl_STRING_H_DEFAULTS])
- 
-   dnl Persuade glibc <string.h> to declare strnlen().
-   AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
---- a/gnulib/m4/strstr.m4
-+++ b/gnulib/m4/strstr.m4
-@@ -1,4 +1,4 @@
--# strstr.m4 serial 22
-+# strstr.m4 serial 23
- dnl Copyright (C) 2008-2021 Free Software Foundation, Inc.
- dnl This file is free software; the Free Software Foundation
- dnl gives unlimited permission to copy and/or distribute it,
-@@ -7,7 +7,7 @@ dnl with or without modifications, as lo
- dnl Check that strstr works.
- AC_DEFUN([gl_FUNC_STRSTR_SIMPLE],
- [
--  AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
-+  AC_REQUIRE([gl_STRING_H_DEFAULTS])
-   AC_REQUIRE([gl_FUNC_MEMCHR])
-   if test $REPLACE_MEMCHR = 1; then
-     REPLACE_STRSTR=1
---- a/gnulib/m4/sys_socket_h.m4
-+++ b/gnulib/m4/sys_socket_h.m4
-@@ -1,4 +1,4 @@
--# sys_socket_h.m4 serial 25
-+# sys_socket_h.m4 serial 28
- dnl Copyright (C) 2005-2021 Free Software Foundation, Inc.
- dnl This file is free software; the Free Software Foundation
- dnl gives unlimited permission to copy and/or distribute it,
-@@ -6,7 +6,7 @@ dnl with or without modifications, as lo
- 
- dnl From Simon Josefsson.
- 
--AC_DEFUN([gl_HEADER_SYS_SOCKET],
-+AC_DEFUN_ONCE([gl_SYS_SOCKET_H],
- [
-   AC_REQUIRE([gl_SYS_SOCKET_H_DEFAULTS])
-   AC_REQUIRE([AC_CANONICAL_HOST])
-@@ -156,32 +156,47 @@ AC_DEFUN([gl_PREREQ_SYS_H_WS2TCPIP],
-   AC_SUBST([HAVE_WS2TCPIP_H])
- ])
- 
-+# gl_SYS_SOCKET_MODULE_INDICATOR([modulename])
-+# sets the shell variable that indicates the presence of the given module
-+# to a C preprocessor expression that will evaluate to 1.
-+# This macro invocation must not occur in macros that are AC_REQUIREd.
- AC_DEFUN([gl_SYS_SOCKET_MODULE_INDICATOR],
- [
--  dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
--  AC_REQUIRE([gl_SYS_SOCKET_H_DEFAULTS])
-+  dnl Ensure to expand the default settings once only.
-+  gl_SYS_SOCKET_H_REQUIRE_DEFAULTS
-   gl_MODULE_INDICATOR_SET_VARIABLE([$1])
-   dnl Define it also as a C macro, for the benefit of the unit tests.
-   gl_MODULE_INDICATOR_FOR_TESTS([$1])
- ])
- 
-+# Initializes the default values for AC_SUBSTed shell variables.
-+# This macro must not be AC_REQUIREd.  It must only be invoked, and only
-+# outside of macros or in macros that are not AC_REQUIREd.
-+AC_DEFUN([gl_SYS_SOCKET_H_REQUIRE_DEFAULTS],
-+[
-+  m4_defun(GL_MODULE_INDICATOR_PREFIX[_SYS_SOCKET_H_MODULE_INDICATOR_DEFAULTS], [
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SOCKET])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_CONNECT])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ACCEPT])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_BIND])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETPEERNAME])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETSOCKNAME])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETSOCKOPT])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LISTEN])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_RECV])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SEND])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_RECVFROM])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SENDTO])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SETSOCKOPT])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SHUTDOWN])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ACCEPT4])
-+  ])
-+  m4_require(GL_MODULE_INDICATOR_PREFIX[_SYS_SOCKET_H_MODULE_INDICATOR_DEFAULTS])
-+  AC_REQUIRE([gl_SYS_SOCKET_H_DEFAULTS])
-+])
-+
- AC_DEFUN([gl_SYS_SOCKET_H_DEFAULTS],
- [
--  GNULIB_SOCKET=0;      AC_SUBST([GNULIB_SOCKET])
--  GNULIB_CONNECT=0;     AC_SUBST([GNULIB_CONNECT])
--  GNULIB_ACCEPT=0;      AC_SUBST([GNULIB_ACCEPT])
--  GNULIB_BIND=0;        AC_SUBST([GNULIB_BIND])
--  GNULIB_GETPEERNAME=0; AC_SUBST([GNULIB_GETPEERNAME])
--  GNULIB_GETSOCKNAME=0; AC_SUBST([GNULIB_GETSOCKNAME])
--  GNULIB_GETSOCKOPT=0;  AC_SUBST([GNULIB_GETSOCKOPT])
--  GNULIB_LISTEN=0;      AC_SUBST([GNULIB_LISTEN])
--  GNULIB_RECV=0;        AC_SUBST([GNULIB_RECV])
--  GNULIB_SEND=0;        AC_SUBST([GNULIB_SEND])
--  GNULIB_RECVFROM=0;    AC_SUBST([GNULIB_RECVFROM])
--  GNULIB_SENDTO=0;      AC_SUBST([GNULIB_SENDTO])
--  GNULIB_SETSOCKOPT=0;  AC_SUBST([GNULIB_SETSOCKOPT])
--  GNULIB_SHUTDOWN=0;    AC_SUBST([GNULIB_SHUTDOWN])
--  GNULIB_ACCEPT4=0;     AC_SUBST([GNULIB_ACCEPT4])
-   HAVE_STRUCT_SOCKADDR_STORAGE=1; AC_SUBST([HAVE_STRUCT_SOCKADDR_STORAGE])
-   HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY=1;
-                         AC_SUBST([HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY])
---- a/gnulib/m4/sys_stat_h.m4
-+++ b/gnulib/m4/sys_stat_h.m4
-@@ -1,4 +1,4 @@
--# sys_stat_h.m4 serial 38   -*- Autoconf -*-
-+# sys_stat_h.m4 serial 41   -*- Autoconf -*-
- dnl Copyright (C) 2006-2021 Free Software Foundation, Inc.
- dnl This file is free software; the Free Software Foundation
- dnl gives unlimited permission to copy and/or distribute it,
-@@ -7,7 +7,7 @@ dnl with or without modifications, as lo
- dnl From Eric Blake.
- dnl Provide a GNU-like <sys/stat.h>.
- 
--AC_DEFUN([gl_HEADER_SYS_STAT_H],
-+AC_DEFUN_ONCE([gl_SYS_STAT_H],
- [
-   AC_REQUIRE([gl_SYS_STAT_H_DEFAULTS])
- 
-@@ -52,38 +52,53 @@ AC_DEFUN([gl_HEADER_SYS_STAT_H],
-   AC_REQUIRE([AC_C_RESTRICT])
- ])
- 
-+# gl_SYS_STAT_MODULE_INDICATOR([modulename])
-+# sets the shell variable that indicates the presence of the given module
-+# to a C preprocessor expression that will evaluate to 1.
-+# This macro invocation must not occur in macros that are AC_REQUIREd.
- AC_DEFUN([gl_SYS_STAT_MODULE_INDICATOR],
- [
--  dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
--  AC_REQUIRE([gl_SYS_STAT_H_DEFAULTS])
-+  dnl Ensure to expand the default settings once only.
-+  gl_SYS_STAT_H_REQUIRE_DEFAULTS
-   gl_MODULE_INDICATOR_SET_VARIABLE([$1])
-   dnl Define it also as a C macro, for the benefit of the unit tests.
-   gl_MODULE_INDICATOR_FOR_TESTS([$1])
- ])
- 
-+# Initializes the default values for AC_SUBSTed shell variables.
-+# This macro must not be AC_REQUIREd.  It must only be invoked, and only
-+# outside of macros or in macros that are not AC_REQUIREd.
-+AC_DEFUN([gl_SYS_STAT_H_REQUIRE_DEFAULTS],
-+[
-+  m4_defun(GL_MODULE_INDICATOR_PREFIX[_SYS_STAT_H_MODULE_INDICATOR_DEFAULTS], [
-+    gl_UNISTD_H_REQUIRE_DEFAULTS dnl for REPLACE_FCHDIR
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FCHMODAT])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FSTAT])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FSTATAT])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FUTIMENS])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETUMASK])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LCHMOD])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LSTAT])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MKDIR])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MKDIRAT])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MKFIFO])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MKFIFOAT])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MKNOD])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MKNODAT])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STAT])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UTIMENSAT])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_OVERRIDES_STRUCT_STAT])
-+    dnl Support Microsoft deprecated alias function names by default.
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_CHMOD], [1])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_MKDIR], [1])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_UMASK], [1])
-+  ])
-+  m4_require(GL_MODULE_INDICATOR_PREFIX[_SYS_STAT_H_MODULE_INDICATOR_DEFAULTS])
-+  AC_REQUIRE([gl_SYS_STAT_H_DEFAULTS])
-+])
-+
- AC_DEFUN([gl_SYS_STAT_H_DEFAULTS],
- [
--  AC_REQUIRE([gl_UNISTD_H_DEFAULTS]) dnl for REPLACE_FCHDIR
--  GNULIB_FCHMODAT=0;    AC_SUBST([GNULIB_FCHMODAT])
--  GNULIB_FSTAT=0;       AC_SUBST([GNULIB_FSTAT])
--  GNULIB_FSTATAT=0;     AC_SUBST([GNULIB_FSTATAT])
--  GNULIB_FUTIMENS=0;    AC_SUBST([GNULIB_FUTIMENS])
--  GNULIB_GETUMASK=0;    AC_SUBST([GNULIB_GETUMASK])
--  GNULIB_LCHMOD=0;      AC_SUBST([GNULIB_LCHMOD])
--  GNULIB_LSTAT=0;       AC_SUBST([GNULIB_LSTAT])
--  GNULIB_MKDIR=0;       AC_SUBST([GNULIB_MKDIR])
--  GNULIB_MKDIRAT=0;     AC_SUBST([GNULIB_MKDIRAT])
--  GNULIB_MKFIFO=0;      AC_SUBST([GNULIB_MKFIFO])
--  GNULIB_MKFIFOAT=0;    AC_SUBST([GNULIB_MKFIFOAT])
--  GNULIB_MKNOD=0;       AC_SUBST([GNULIB_MKNOD])
--  GNULIB_MKNODAT=0;     AC_SUBST([GNULIB_MKNODAT])
--  GNULIB_STAT=0;        AC_SUBST([GNULIB_STAT])
--  GNULIB_UTIMENSAT=0;   AC_SUBST([GNULIB_UTIMENSAT])
--  GNULIB_OVERRIDES_STRUCT_STAT=0; AC_SUBST([GNULIB_OVERRIDES_STRUCT_STAT])
--  dnl Support Microsoft deprecated alias function names by default.
--  GNULIB_MDA_CHMOD=1;   AC_SUBST([GNULIB_MDA_CHMOD])
--  GNULIB_MDA_MKDIR=1;   AC_SUBST([GNULIB_MDA_MKDIR])
--  GNULIB_MDA_UMASK=1;   AC_SUBST([GNULIB_MDA_UMASK])
-   dnl Assume proper GNU behavior unless another module says otherwise.
-   HAVE_FCHMODAT=1;      AC_SUBST([HAVE_FCHMODAT])
-   HAVE_FSTATAT=1;       AC_SUBST([HAVE_FSTATAT])
---- a/gnulib/m4/sys_types_h.m4
-+++ b/gnulib/m4/sys_types_h.m4
-@@ -1,4 +1,4 @@
--# sys_types_h.m4 serial 11
-+# sys_types_h.m4 serial 13
- dnl Copyright (C) 2011-2021 Free Software Foundation, Inc.
- dnl This file is free software; the Free Software Foundation
- dnl gives unlimited permission to copy and/or distribute it,
-@@ -6,10 +6,11 @@ dnl with or without modifications, as lo
- 
- AC_DEFUN_ONCE([gl_SYS_TYPES_H],
- [
-+  AC_REQUIRE([gl_SYS_TYPES_H_DEFAULTS])
-+
-   dnl Use sane struct stat types in OpenVMS 8.2 and later.
-   AC_DEFINE([_USE_STD_STAT], 1, [For standard stat data types on VMS.])
- 
--  AC_REQUIRE([gl_SYS_TYPES_H_DEFAULTS])
-   gl_NEXT_HEADERS([sys/types.h])
- 
-   dnl Ensure the type pid_t gets defined.
-@@ -30,6 +31,17 @@ AC_DEFUN_ONCE([gl_SYS_TYPES_H],
-   AC_SUBST([WINDOWS_STAT_INODES])
- ])
- 
-+# Initializes the default values for AC_SUBSTed shell variables.
-+# This macro must not be AC_REQUIREd.  It must only be invoked, and only
-+# outside of macros or in macros that are not AC_REQUIREd.
-+AC_DEFUN([gl_SYS_TYPES_H_REQUIRE_DEFAULTS],
-+[
-+  m4_defun(GL_MODULE_INDICATOR_PREFIX[_SYS_TYPE_H_MODULE_INDICATOR_DEFAULTS], [
-+  ])
-+  m4_require(GL_MODULE_INDICATOR_PREFIX[_SYS_TYPE_H_MODULE_INDICATOR_DEFAULTS])
-+  AC_REQUIRE([gl_SYS_TYPES_H_DEFAULTS])
-+])
-+
- AC_DEFUN([gl_SYS_TYPES_H_DEFAULTS],
- [
- ])
---- a/gnulib/m4/time_h.m4
-+++ b/gnulib/m4/time_h.m4
-@@ -2,7 +2,7 @@
- 
- # Copyright (C) 2000-2001, 2003-2007, 2009-2021 Free Software Foundation, Inc.
- 
--# serial 15
-+# serial 18
- 
- # This file is free software; the Free Software Foundation
- # gives unlimited permission to copy and/or distribute it,
-@@ -10,16 +10,11 @@
- 
- # Written by Paul Eggert and Jim Meyering.
- 
--AC_DEFUN([gl_HEADER_TIME_H],
-+AC_DEFUN_ONCE([gl_TIME_H],
- [
--  dnl Use AC_REQUIRE here, so that the default behavior below is expanded
--  dnl once only, before all statements that occur in other macros.
--  AC_REQUIRE([gl_HEADER_TIME_H_BODY])
--])
--
--AC_DEFUN([gl_HEADER_TIME_H_BODY],
--[
--  AC_REQUIRE([gl_HEADER_TIME_H_DEFAULTS])
-+  dnl Ensure to expand the default settings once only, before all statements
-+  dnl that occur in other macros.
-+  AC_REQUIRE([gl_TIME_H_DEFAULTS])
- 
-   gl_NEXT_HEADERS([time.h])
-   AC_REQUIRE([gl_CHECK_TYPE_STRUCT_TIMESPEC])
-@@ -111,30 +106,45 @@ AC_DEFUN([gl_CHECK_TYPE_STRUCT_TIMESPEC]
-   AC_SUBST([UNISTD_H_DEFINES_STRUCT_TIMESPEC])
- ])
- 
-+# gl_TIME_MODULE_INDICATOR([modulename])
-+# sets the shell variable that indicates the presence of the given module
-+# to a C preprocessor expression that will evaluate to 1.
-+# This macro invocation must not occur in macros that are AC_REQUIREd.
- AC_DEFUN([gl_TIME_MODULE_INDICATOR],
- [
--  dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
--  AC_REQUIRE([gl_HEADER_TIME_H_DEFAULTS])
-+  dnl Ensure to expand the default settings once only.
-+  gl_TIME_H_REQUIRE_DEFAULTS
-   gl_MODULE_INDICATOR_SET_VARIABLE([$1])
-   dnl Define it also as a C macro, for the benefit of the unit tests.
-   gl_MODULE_INDICATOR_FOR_TESTS([$1])
- ])
- 
--AC_DEFUN([gl_HEADER_TIME_H_DEFAULTS],
-+# Initializes the default values for AC_SUBSTed shell variables.
-+# This macro must not be AC_REQUIREd.  It must only be invoked, and only
-+# outside of macros or in macros that are not AC_REQUIREd.
-+AC_DEFUN([gl_TIME_H_REQUIRE_DEFAULTS],
-+[
-+  m4_defun(GL_MODULE_INDICATOR_PREFIX[_TIME_H_MODULE_INDICATOR_DEFAULTS], [
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_CTIME])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MKTIME])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOCALTIME])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_NANOSLEEP])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRFTIME])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRPTIME])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TIMEGM])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TIMESPEC_GET])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TIME_R])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TIME_RZ])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TZSET])
-+    dnl Support Microsoft deprecated alias function names by default.
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_TZSET], [1])
-+  ])
-+  m4_require(GL_MODULE_INDICATOR_PREFIX[_TIME_H_MODULE_INDICATOR_DEFAULTS])
-+  AC_REQUIRE([gl_TIME_H_DEFAULTS])
-+])
-+
-+AC_DEFUN([gl_TIME_H_DEFAULTS],
- [
--  GNULIB_CTIME=0;                        AC_SUBST([GNULIB_CTIME])
--  GNULIB_MKTIME=0;                       AC_SUBST([GNULIB_MKTIME])
--  GNULIB_LOCALTIME=0;                    AC_SUBST([GNULIB_LOCALTIME])
--  GNULIB_NANOSLEEP=0;                    AC_SUBST([GNULIB_NANOSLEEP])
--  GNULIB_STRFTIME=0;                     AC_SUBST([GNULIB_STRFTIME])
--  GNULIB_STRPTIME=0;                     AC_SUBST([GNULIB_STRPTIME])
--  GNULIB_TIMEGM=0;                       AC_SUBST([GNULIB_TIMEGM])
--  GNULIB_TIMESPEC_GET=0;                 AC_SUBST([GNULIB_TIMESPEC_GET])
--  GNULIB_TIME_R=0;                       AC_SUBST([GNULIB_TIME_R])
--  GNULIB_TIME_RZ=0;                      AC_SUBST([GNULIB_TIME_RZ])
--  GNULIB_TZSET=0;                        AC_SUBST([GNULIB_TZSET])
--  dnl Support Microsoft deprecated alias function names by default.
--  GNULIB_MDA_TZSET=1;                    AC_SUBST([GNULIB_MDA_TZSET])
-   dnl Assume proper GNU behavior unless another module says otherwise.
-   HAVE_DECL_LOCALTIME_R=1;               AC_SUBST([HAVE_DECL_LOCALTIME_R])
-   HAVE_NANOSLEEP=1;                      AC_SUBST([HAVE_NANOSLEEP])
---- a/gnulib/m4/unistd_h.m4
-+++ b/gnulib/m4/unistd_h.m4
-@@ -1,4 +1,4 @@
--# unistd_h.m4 serial 85
-+# unistd_h.m4 serial 89
- dnl Copyright (C) 2006-2021 Free Software Foundation, Inc.
- dnl This file is free software; the Free Software Foundation
- dnl gives unlimited permission to copy and/or distribute it,
-@@ -6,10 +6,10 @@ dnl with or without modifications, as lo
- 
- dnl Written by Simon Josefsson, Bruno Haible.
- 
--AC_DEFUN([gl_UNISTD_H],
-+AC_DEFUN_ONCE([gl_UNISTD_H],
- [
--  dnl Use AC_REQUIRE here, so that the default behavior below is expanded
--  dnl once only, before all statements that occur in other macros.
-+  dnl Ensure to expand the default settings once only, before all statements
-+  dnl that occur in other macros.
-   AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
- 
-   gl_CHECK_NEXT_HEADERS([unistd.h])
-@@ -59,100 +59,116 @@ AC_DEFUN([gl_UNISTD_H],
-   fi
- ])
- 
-+# gl_UNISTD_MODULE_INDICATOR([modulename])
-+# sets the shell variable that indicates the presence of the given module
-+# to a C preprocessor expression that will evaluate to 1.
-+# This macro invocation must not occur in macros that are AC_REQUIREd.
- AC_DEFUN([gl_UNISTD_MODULE_INDICATOR],
- [
--  dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
--  AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
-+  dnl Ensure to expand the default settings once only.
-+  gl_UNISTD_H_REQUIRE_DEFAULTS
-   gl_MODULE_INDICATOR_SET_VARIABLE([$1])
-   dnl Define it also as a C macro, for the benefit of the unit tests.
-   gl_MODULE_INDICATOR_FOR_TESTS([$1])
- ])
- 
-+# Initializes the default values for AC_SUBSTed shell variables.
-+# This macro must not be AC_REQUIREd.  It must only be invoked, and only
-+# outside of macros or in macros that are not AC_REQUIREd.
-+AC_DEFUN([gl_UNISTD_H_REQUIRE_DEFAULTS],
-+[
-+  m4_defun(GL_MODULE_INDICATOR_PREFIX[_UNISTD_H_MODULE_INDICATOR_DEFAULTS], [
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ACCESS])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_CHDIR])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_CHOWN])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_CLOSE])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_COPY_FILE_RANGE])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_DUP])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_DUP2])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_DUP3])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ENVIRON])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EUIDACCESS])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXECL])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXECLE])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXECLP])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXECV])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXECVE])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXECVP])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXECVPE])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FACCESSAT])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FCHDIR])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FCHOWNAT])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FDATASYNC])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FSYNC])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FTRUNCATE])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETCWD])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETDOMAINNAME])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETDTABLESIZE])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETENTROPY])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETGROUPS])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETHOSTNAME])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETLOGIN])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETLOGIN_R])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETOPT_POSIX])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETPAGESIZE])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETPASS])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETUSERSHELL])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GROUP_MEMBER])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ISATTY])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LCHOWN])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LINK])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LINKAT])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LSEEK])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PIPE])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PIPE2])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PREAD])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PWRITE])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_READ])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_READLINK])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_READLINKAT])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_RMDIR])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SETHOSTNAME])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SLEEP])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SYMLINK])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SYMLINKAT])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TRUNCATE])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TTYNAME_R])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNISTD_H_GETOPT])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNISTD_H_NONBLOCKING])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNISTD_H_SIGPIPE])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNLINK])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNLINKAT])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_USLEEP])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WRITE])
-+    dnl Support Microsoft deprecated alias function names by default.
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_ACCESS], [1])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_CHDIR], [1])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_CLOSE], [1])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_DUP], [1])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_DUP2], [1])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_EXECL], [1])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_EXECLE], [1])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_EXECLP], [1])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_EXECV], [1])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_EXECVE], [1])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_EXECVP], [1])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_EXECVPE], [1])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_GETCWD], [1])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_GETPID], [1])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_ISATTY], [1])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_LSEEK], [1])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_READ], [1])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_RMDIR], [1])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_SWAB], [1])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_UNLINK], [1])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_WRITE], [1])
-+  ])
-+  m4_require(GL_MODULE_INDICATOR_PREFIX[_UNISTD_H_MODULE_INDICATOR_DEFAULTS])
-+  AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
-+])
-+
- AC_DEFUN([gl_UNISTD_H_DEFAULTS],
- [
--  GNULIB_ACCESS=0;               AC_SUBST([GNULIB_ACCESS])
--  GNULIB_CHDIR=0;                AC_SUBST([GNULIB_CHDIR])
--  GNULIB_CHOWN=0;                AC_SUBST([GNULIB_CHOWN])
--  GNULIB_CLOSE=0;                AC_SUBST([GNULIB_CLOSE])
--  GNULIB_COPY_FILE_RANGE=0;      AC_SUBST([GNULIB_COPY_FILE_RANGE])
--  GNULIB_DUP=0;                  AC_SUBST([GNULIB_DUP])
--  GNULIB_DUP2=0;                 AC_SUBST([GNULIB_DUP2])
--  GNULIB_DUP3=0;                 AC_SUBST([GNULIB_DUP3])
--  GNULIB_ENVIRON=0;              AC_SUBST([GNULIB_ENVIRON])
--  GNULIB_EUIDACCESS=0;           AC_SUBST([GNULIB_EUIDACCESS])
--  GNULIB_EXECL=0;                AC_SUBST([GNULIB_EXECL])
--  GNULIB_EXECLE=0;               AC_SUBST([GNULIB_EXECLE])
--  GNULIB_EXECLP=0;               AC_SUBST([GNULIB_EXECLP])
--  GNULIB_EXECV=0;                AC_SUBST([GNULIB_EXECV])
--  GNULIB_EXECVE=0;               AC_SUBST([GNULIB_EXECVE])
--  GNULIB_EXECVP=0;               AC_SUBST([GNULIB_EXECVP])
--  GNULIB_EXECVPE=0;              AC_SUBST([GNULIB_EXECVPE])
--  GNULIB_FACCESSAT=0;            AC_SUBST([GNULIB_FACCESSAT])
--  GNULIB_FCHDIR=0;               AC_SUBST([GNULIB_FCHDIR])
--  GNULIB_FCHOWNAT=0;             AC_SUBST([GNULIB_FCHOWNAT])
--  GNULIB_FDATASYNC=0;            AC_SUBST([GNULIB_FDATASYNC])
--  GNULIB_FSYNC=0;                AC_SUBST([GNULIB_FSYNC])
--  GNULIB_FTRUNCATE=0;            AC_SUBST([GNULIB_FTRUNCATE])
--  GNULIB_GETCWD=0;               AC_SUBST([GNULIB_GETCWD])
--  GNULIB_GETDOMAINNAME=0;        AC_SUBST([GNULIB_GETDOMAINNAME])
--  GNULIB_GETDTABLESIZE=0;        AC_SUBST([GNULIB_GETDTABLESIZE])
--  GNULIB_GETENTROPY=0;           AC_SUBST([GNULIB_GETENTROPY])
--  GNULIB_GETGROUPS=0;            AC_SUBST([GNULIB_GETGROUPS])
--  GNULIB_GETHOSTNAME=0;          AC_SUBST([GNULIB_GETHOSTNAME])
--  GNULIB_GETLOGIN=0;             AC_SUBST([GNULIB_GETLOGIN])
--  GNULIB_GETLOGIN_R=0;           AC_SUBST([GNULIB_GETLOGIN_R])
--  GNULIB_GETOPT_POSIX=0;         AC_SUBST([GNULIB_GETOPT_POSIX])
--  GNULIB_GETPAGESIZE=0;          AC_SUBST([GNULIB_GETPAGESIZE])
--  GNULIB_GETPASS=0;              AC_SUBST([GNULIB_GETPASS])
--  GNULIB_GETUSERSHELL=0;         AC_SUBST([GNULIB_GETUSERSHELL])
--  GNULIB_GROUP_MEMBER=0;         AC_SUBST([GNULIB_GROUP_MEMBER])
--  GNULIB_ISATTY=0;               AC_SUBST([GNULIB_ISATTY])
--  GNULIB_LCHOWN=0;               AC_SUBST([GNULIB_LCHOWN])
--  GNULIB_LINK=0;                 AC_SUBST([GNULIB_LINK])
--  GNULIB_LINKAT=0;               AC_SUBST([GNULIB_LINKAT])
--  GNULIB_LSEEK=0;                AC_SUBST([GNULIB_LSEEK])
--  GNULIB_PIPE=0;                 AC_SUBST([GNULIB_PIPE])
--  GNULIB_PIPE2=0;                AC_SUBST([GNULIB_PIPE2])
--  GNULIB_PREAD=0;                AC_SUBST([GNULIB_PREAD])
--  GNULIB_PWRITE=0;               AC_SUBST([GNULIB_PWRITE])
--  GNULIB_READ=0;                 AC_SUBST([GNULIB_READ])
--  GNULIB_READLINK=0;             AC_SUBST([GNULIB_READLINK])
--  GNULIB_READLINKAT=0;           AC_SUBST([GNULIB_READLINKAT])
--  GNULIB_RMDIR=0;                AC_SUBST([GNULIB_RMDIR])
--  GNULIB_SETHOSTNAME=0;          AC_SUBST([GNULIB_SETHOSTNAME])
--  GNULIB_SLEEP=0;                AC_SUBST([GNULIB_SLEEP])
--  GNULIB_SYMLINK=0;              AC_SUBST([GNULIB_SYMLINK])
--  GNULIB_SYMLINKAT=0;            AC_SUBST([GNULIB_SYMLINKAT])
--  GNULIB_TRUNCATE=0;             AC_SUBST([GNULIB_TRUNCATE])
--  GNULIB_TTYNAME_R=0;            AC_SUBST([GNULIB_TTYNAME_R])
--  GNULIB_UNISTD_H_NONBLOCKING=0; AC_SUBST([GNULIB_UNISTD_H_NONBLOCKING])
--  GNULIB_UNISTD_H_SIGPIPE=0;     AC_SUBST([GNULIB_UNISTD_H_SIGPIPE])
--  GNULIB_UNLINK=0;               AC_SUBST([GNULIB_UNLINK])
--  GNULIB_UNLINKAT=0;             AC_SUBST([GNULIB_UNLINKAT])
--  GNULIB_USLEEP=0;               AC_SUBST([GNULIB_USLEEP])
--  GNULIB_WRITE=0;                AC_SUBST([GNULIB_WRITE])
--  dnl Support Microsoft deprecated alias function names by default.
--  GNULIB_MDA_ACCESS=1;           AC_SUBST([GNULIB_MDA_ACCESS])
--  GNULIB_MDA_CHDIR=1;            AC_SUBST([GNULIB_MDA_CHDIR])
--  GNULIB_MDA_CLOSE=1;            AC_SUBST([GNULIB_MDA_CLOSE])
--  GNULIB_MDA_DUP=1;              AC_SUBST([GNULIB_MDA_DUP])
--  GNULIB_MDA_DUP2=1;             AC_SUBST([GNULIB_MDA_DUP2])
--  GNULIB_MDA_EXECL=1;            AC_SUBST([GNULIB_MDA_EXECL])
--  GNULIB_MDA_EXECLE=1;           AC_SUBST([GNULIB_MDA_EXECLE])
--  GNULIB_MDA_EXECLP=1;           AC_SUBST([GNULIB_MDA_EXECLP])
--  GNULIB_MDA_EXECV=1;            AC_SUBST([GNULIB_MDA_EXECV])
--  GNULIB_MDA_EXECVE=1;           AC_SUBST([GNULIB_MDA_EXECVE])
--  GNULIB_MDA_EXECVP=1;           AC_SUBST([GNULIB_MDA_EXECVP])
--  GNULIB_MDA_EXECVPE=1;          AC_SUBST([GNULIB_MDA_EXECVPE])
--  GNULIB_MDA_GETCWD=1;           AC_SUBST([GNULIB_MDA_GETCWD])
--  GNULIB_MDA_GETPID=1;           AC_SUBST([GNULIB_MDA_GETPID])
--  GNULIB_MDA_ISATTY=1;           AC_SUBST([GNULIB_MDA_ISATTY])
--  GNULIB_MDA_LSEEK=1;            AC_SUBST([GNULIB_MDA_LSEEK])
--  GNULIB_MDA_READ=1;             AC_SUBST([GNULIB_MDA_READ])
--  GNULIB_MDA_RMDIR=1;            AC_SUBST([GNULIB_MDA_RMDIR])
--  GNULIB_MDA_SWAB=1;             AC_SUBST([GNULIB_MDA_SWAB])
--  GNULIB_MDA_UNLINK=1;           AC_SUBST([GNULIB_MDA_UNLINK])
--  GNULIB_MDA_WRITE=1;            AC_SUBST([GNULIB_MDA_WRITE])
-   dnl Assume proper GNU behavior unless another module says otherwise.
-   HAVE_CHOWN=1;           AC_SUBST([HAVE_CHOWN])
-   HAVE_COPY_FILE_RANGE=1; AC_SUBST([HAVE_COPY_FILE_RANGE])
---- a/gnulib/m4/visibility.m4
-+++ b/gnulib/m4/visibility.m4
-@@ -1,4 +1,4 @@
--# visibility.m4 serial 7
-+# visibility.m4 serial 8
- dnl Copyright (C) 2005, 2008, 2010-2021 Free Software Foundation, Inc.
- dnl This file is free software; the Free Software Foundation
- dnl gives unlimited permission to copy and/or distribute it,
-@@ -59,6 +59,10 @@ AC_DEFUN([gl_VISIBILITY],
-               extern __attribute__((__visibility__("hidden"))) int hiddenfunc (void);
-               extern __attribute__((__visibility__("default"))) int exportedfunc (void);
-               void dummyfunc (void);
-+              int hiddenvar;
-+              int exportedvar;
-+              int hiddenfunc (void) { return 51; }
-+              int exportedfunc (void) { return 1225736919; }
-               void dummyfunc (void) {}
-             ]],
-             [[]])],
---- a/gnulib/m4/wchar_h.m4
-+++ b/gnulib/m4/wchar_h.m4
-@@ -7,9 +7,9 @@ dnl with or without modifications, as lo
- 
- dnl Written by Eric Blake.
- 
--# wchar_h.m4 serial 50
-+# wchar_h.m4 serial 53
- 
--AC_DEFUN([gl_WCHAR_H],
-+AC_DEFUN_ONCE([gl_WCHAR_H],
- [
-   AC_REQUIRE([gl_WCHAR_H_DEFAULTS])
-   AC_REQUIRE([gl_WCHAR_H_INLINE_OK])
-@@ -125,60 +125,75 @@ Configuration aborted.])
-   fi
- ])
- 
-+# gl_WCHAR_MODULE_INDICATOR([modulename])
-+# sets the shell variable that indicates the presence of the given module
-+# to a C preprocessor expression that will evaluate to 1.
-+# This macro invocation must not occur in macros that are AC_REQUIREd.
- AC_DEFUN([gl_WCHAR_MODULE_INDICATOR],
- [
--  dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
--  AC_REQUIRE([gl_WCHAR_H_DEFAULTS])
-+  dnl Ensure to expand the default settings once only.
-+  gl_WCHAR_H_REQUIRE_DEFAULTS
-   gl_MODULE_INDICATOR_SET_VARIABLE([$1])
-   dnl Define it also as a C macro, for the benefit of the unit tests.
-   gl_MODULE_INDICATOR_FOR_TESTS([$1])
- ])
- 
-+# Initializes the default values for AC_SUBSTed shell variables.
-+# This macro must not be AC_REQUIREd.  It must only be invoked, and only
-+# outside of macros or in macros that are not AC_REQUIREd.
-+AC_DEFUN([gl_WCHAR_H_REQUIRE_DEFAULTS],
-+[
-+  m4_defun(GL_MODULE_INDICATOR_PREFIX[_WCHAR_H_MODULE_INDICATOR_DEFAULTS], [
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_BTOWC])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCTOB])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSINIT])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBRTOWC])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBRLEN])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSRTOWCS])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSNRTOWCS])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCRTOMB])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSRTOMBS])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSNRTOMBS])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCWIDTH])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WMEMCHR])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WMEMCMP])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WMEMCPY])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WMEMMOVE])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WMEMPCPY])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WMEMSET])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSLEN])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSNLEN])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSCPY])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCPCPY])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSNCPY])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCPNCPY])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSCAT])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSNCAT])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSCMP])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSNCMP])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSCASECMP])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSNCASECMP])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSCOLL])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSXFRM])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSDUP])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSCHR])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSRCHR])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSCSPN])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSSPN])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSPBRK])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSSTR])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSTOK])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSWIDTH])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSFTIME])
-+    dnl Support Microsoft deprecated alias function names by default.
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_WCSDUP], [1])
-+  ])
-+  m4_require(GL_MODULE_INDICATOR_PREFIX[_WCHAR_H_MODULE_INDICATOR_DEFAULTS])
-+  AC_REQUIRE([gl_WCHAR_H_DEFAULTS])
-+])
-+
- AC_DEFUN([gl_WCHAR_H_DEFAULTS],
- [
--  GNULIB_BTOWC=0;       AC_SUBST([GNULIB_BTOWC])
--  GNULIB_WCTOB=0;       AC_SUBST([GNULIB_WCTOB])
--  GNULIB_MBSINIT=0;     AC_SUBST([GNULIB_MBSINIT])
--  GNULIB_MBRTOWC=0;     AC_SUBST([GNULIB_MBRTOWC])
--  GNULIB_MBRLEN=0;      AC_SUBST([GNULIB_MBRLEN])
--  GNULIB_MBSRTOWCS=0;   AC_SUBST([GNULIB_MBSRTOWCS])
--  GNULIB_MBSNRTOWCS=0;  AC_SUBST([GNULIB_MBSNRTOWCS])
--  GNULIB_WCRTOMB=0;     AC_SUBST([GNULIB_WCRTOMB])
--  GNULIB_WCSRTOMBS=0;   AC_SUBST([GNULIB_WCSRTOMBS])
--  GNULIB_WCSNRTOMBS=0;  AC_SUBST([GNULIB_WCSNRTOMBS])
--  GNULIB_WCWIDTH=0;     AC_SUBST([GNULIB_WCWIDTH])
--  GNULIB_WMEMCHR=0;     AC_SUBST([GNULIB_WMEMCHR])
--  GNULIB_WMEMCMP=0;     AC_SUBST([GNULIB_WMEMCMP])
--  GNULIB_WMEMCPY=0;     AC_SUBST([GNULIB_WMEMCPY])
--  GNULIB_WMEMMOVE=0;    AC_SUBST([GNULIB_WMEMMOVE])
--  GNULIB_WMEMPCPY=0;    AC_SUBST([GNULIB_WMEMPCPY])
--  GNULIB_WMEMSET=0;     AC_SUBST([GNULIB_WMEMSET])
--  GNULIB_WCSLEN=0;      AC_SUBST([GNULIB_WCSLEN])
--  GNULIB_WCSNLEN=0;     AC_SUBST([GNULIB_WCSNLEN])
--  GNULIB_WCSCPY=0;      AC_SUBST([GNULIB_WCSCPY])
--  GNULIB_WCPCPY=0;      AC_SUBST([GNULIB_WCPCPY])
--  GNULIB_WCSNCPY=0;     AC_SUBST([GNULIB_WCSNCPY])
--  GNULIB_WCPNCPY=0;     AC_SUBST([GNULIB_WCPNCPY])
--  GNULIB_WCSCAT=0;      AC_SUBST([GNULIB_WCSCAT])
--  GNULIB_WCSNCAT=0;     AC_SUBST([GNULIB_WCSNCAT])
--  GNULIB_WCSCMP=0;      AC_SUBST([GNULIB_WCSCMP])
--  GNULIB_WCSNCMP=0;     AC_SUBST([GNULIB_WCSNCMP])
--  GNULIB_WCSCASECMP=0;  AC_SUBST([GNULIB_WCSCASECMP])
--  GNULIB_WCSNCASECMP=0; AC_SUBST([GNULIB_WCSNCASECMP])
--  GNULIB_WCSCOLL=0;     AC_SUBST([GNULIB_WCSCOLL])
--  GNULIB_WCSXFRM=0;     AC_SUBST([GNULIB_WCSXFRM])
--  GNULIB_WCSDUP=0;      AC_SUBST([GNULIB_WCSDUP])
--  GNULIB_WCSCHR=0;      AC_SUBST([GNULIB_WCSCHR])
--  GNULIB_WCSRCHR=0;     AC_SUBST([GNULIB_WCSRCHR])
--  GNULIB_WCSCSPN=0;     AC_SUBST([GNULIB_WCSCSPN])
--  GNULIB_WCSSPN=0;      AC_SUBST([GNULIB_WCSSPN])
--  GNULIB_WCSPBRK=0;     AC_SUBST([GNULIB_WCSPBRK])
--  GNULIB_WCSSTR=0;      AC_SUBST([GNULIB_WCSSTR])
--  GNULIB_WCSTOK=0;      AC_SUBST([GNULIB_WCSTOK])
--  GNULIB_WCSWIDTH=0;    AC_SUBST([GNULIB_WCSWIDTH])
--  GNULIB_WCSFTIME=0;    AC_SUBST([GNULIB_WCSFTIME])
--  dnl Support Microsoft deprecated alias function names by default.
--  GNULIB_MDA_WCSDUP=1;  AC_SUBST([GNULIB_MDA_WCSDUP])
-   dnl Assume proper GNU behavior unless another module says otherwise.
-   HAVE_BTOWC=1;         AC_SUBST([HAVE_BTOWC])
-   HAVE_MBSINIT=1;       AC_SUBST([HAVE_MBSINIT])
---- a/gnulib/m4/wctype_h.m4
-+++ b/gnulib/m4/wctype_h.m4
-@@ -1,4 +1,4 @@
--# wctype_h.m4 serial 26
-+# wctype_h.m4 serial 30
- 
- dnl A placeholder for ISO C99 <wctype.h>, for platforms that lack it.
- 
-@@ -9,7 +9,7 @@ dnl with or without modifications, as lo
- 
- dnl Written by Paul Eggert.
- 
--AC_DEFUN([gl_WCTYPE_H],
-+AC_DEFUN_ONCE([gl_WCTYPE_H],
- [
-   AC_REQUIRE([gl_WCTYPE_H_DEFAULTS])
-   AC_REQUIRE([AC_PROG_CC])
-@@ -62,7 +62,7 @@ AC_DEFUN([gl_WCTYPE_H],
-   fi
-   AC_SUBST([HAVE_WCTYPE_H])
- 
--  if test $GNULIB_OVERRIDES_WINT_T = 1; then
-+  if test $GNULIBHEADERS_OVERRIDE_WINT_T = 1; then
-     REPLACE_ISWCNTRL=1
-   else
-     case "$gl_cv_func_iswcntrl_works" in
-@@ -157,24 +157,39 @@ AC_DEFUN([gl_WCTYPE_H],
-     ])
- ])
- 
-+# gl_WCTYPE_MODULE_INDICATOR([modulename])
-+# sets the shell variable that indicates the presence of the given module
-+# to a C preprocessor expression that will evaluate to 1.
-+# This macro invocation must not occur in macros that are AC_REQUIREd.
- AC_DEFUN([gl_WCTYPE_MODULE_INDICATOR],
- [
--  dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
--  AC_REQUIRE([gl_WCTYPE_H_DEFAULTS])
-+  dnl Ensure to expand the default settings once only.
-+  gl_WCTYPE_H_REQUIRE_DEFAULTS
-   gl_MODULE_INDICATOR_SET_VARIABLE([$1])
-   dnl Define it also as a C macro, for the benefit of the unit tests.
-   gl_MODULE_INDICATOR_FOR_TESTS([$1])
- ])
- 
-+# Initializes the default values for AC_SUBSTed shell variables.
-+# This macro must not be AC_REQUIREd.  It must only be invoked, and only
-+# outside of macros or in macros that are not AC_REQUIREd.
-+AC_DEFUN([gl_WCTYPE_H_REQUIRE_DEFAULTS],
-+[
-+  m4_defun(GL_MODULE_INDICATOR_PREFIX[_WCTYPE_H_MODULE_INDICATOR_DEFAULTS], [
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ISWBLANK])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ISWDIGIT])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ISWXDIGIT])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCTYPE])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ISWCTYPE])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCTRANS])
-+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TOWCTRANS])
-+  ])
-+  m4_require(GL_MODULE_INDICATOR_PREFIX[_WCTYPE_H_MODULE_INDICATOR_DEFAULTS])
-+  AC_REQUIRE([gl_WCTYPE_H_DEFAULTS])
-+])
-+
- AC_DEFUN([gl_WCTYPE_H_DEFAULTS],
- [
--  GNULIB_ISWBLANK=0;    AC_SUBST([GNULIB_ISWBLANK])
--  GNULIB_ISWDIGIT=0;    AC_SUBST([GNULIB_ISWDIGIT])
--  GNULIB_ISWXDIGIT=0;   AC_SUBST([GNULIB_ISWXDIGIT])
--  GNULIB_WCTYPE=0;      AC_SUBST([GNULIB_WCTYPE])
--  GNULIB_ISWCTYPE=0;    AC_SUBST([GNULIB_ISWCTYPE])
--  GNULIB_WCTRANS=0;     AC_SUBST([GNULIB_WCTRANS])
--  GNULIB_TOWCTRANS=0;   AC_SUBST([GNULIB_TOWCTRANS])
-   dnl Assume proper GNU behavior unless another module says otherwise.
-   HAVE_ISWBLANK=1;      AC_SUBST([HAVE_ISWBLANK])
-   HAVE_WCTYPE_T=1;      AC_SUBST([HAVE_WCTYPE_T])
---- a/gnulib/m4/wint_t.m4
-+++ b/gnulib/m4/wint_t.m4
-@@ -1,4 +1,4 @@
--# wint_t.m4 serial 10
-+# wint_t.m4 serial 11
- dnl Copyright (C) 2003, 2007-2021 Free Software Foundation, Inc.
- dnl This file is free software; the Free Software Foundation
- dnl gives unlimited permission to copy and/or distribute it,
-@@ -34,14 +34,14 @@ AC_DEFUN([gt_TYPE_WINT_T],
-          [gl_cv_type_wint_t_large_enough=yes],
-          [gl_cv_type_wint_t_large_enough=no])])
-     if test $gl_cv_type_wint_t_large_enough = no; then
--      GNULIB_OVERRIDES_WINT_T=1
-+      GNULIBHEADERS_OVERRIDE_WINT_T=1
-     else
--      GNULIB_OVERRIDES_WINT_T=0
-+      GNULIBHEADERS_OVERRIDE_WINT_T=0
-     fi
-   else
--    GNULIB_OVERRIDES_WINT_T=0
-+    GNULIBHEADERS_OVERRIDE_WINT_T=0
-   fi
--  AC_SUBST([GNULIB_OVERRIDES_WINT_T])
-+  AC_SUBST([GNULIBHEADERS_OVERRIDE_WINT_T])
- ])
- 
- dnl Prerequisites of the 'wint_t' override.
---- /dev/null
-+++ b/gnulib/m4/year2038.m4
-@@ -0,0 +1,112 @@
-+# year2038.m4 serial 5
-+dnl Copyright (C) 2017-2021 Free Software Foundation, Inc.
-+dnl This file is free software; the Free Software Foundation
-+dnl gives unlimited permission to copy and/or distribute it,
-+dnl with or without modifications, as long as this notice is preserved.
-+
-+dnl Attempt to ensure that 'time_t' is a 64-bit type
-+dnl and that the functions time(), stat(), etc. return 64-bit times.
-+
-+AC_DEFUN([gl_YEAR2038_EARLY],
-+[
-+  AC_REQUIRE([AC_CANONICAL_HOST])
-+  case "$host_os" in
-+    mingw*)
-+      AC_DEFINE([__MINGW_USE_VC2005_COMPAT], [1],
-+        [For 64-bit time_t on 32-bit mingw.])
-+      ;;
-+  esac
-+])
-+
-+# gl_YEAR2038_TEST_INCLUDES
-+# -------------------------
-+AC_DEFUN([gl_YEAR2038_TEST_INCLUDES],
-+[[
-+  #include <time.h>
-+  /* Check that time_t can represent 2**63 - 1 correctly.
-+     We can't simply define LARGE_TIME_T to be 9223372036854775807,
-+     since some C++ compilers masquerading as C compilers
-+     incorrectly reject 9223372036854775807.  */
-+  #define LARGE_TIME_T (((time_t) 1 << 31 << 31) - 1 + ((time_t) 1 << 31 << 31))
-+  int verify_time_t_range[(LARGE_TIME_T % 2147483629 == 721
-+                           && LARGE_TIME_T % 2147483647 == 1)
-+                          ? 1 : -1];
-+]])
-+
-+# gl_YEAR2038_BODY(REQUIRE-64-BIT)
-+----------------------------------
-+AC_DEFUN([gl_YEAR2038_BODY],
-+[
-+ AC_ARG_ENABLE([year2038],
-+   [  --disable-year2038      omit support for timestamps past the year 2038])
-+ AS_IF([test "$enable_year2038" != no],
-+ [
-+  dnl On many systems, time_t is already a 64-bit type.
-+  dnl On those systems where time_t is still 32-bit, it requires kernel
-+  dnl and libc support to make it 64-bit. For glibc 2.34 and later on Linux,
-+  dnl defining _TIME_BITS=64 and _FILE_OFFSET_BITS=64 is needed on x86 and ARM.
-+  dnl
-+  dnl On native Windows, the system include files define types __time32_t
-+  dnl and __time64_t. By default, time_t is an alias of
-+  dnl   - __time32_t on 32-bit mingw,
-+  dnl   - __time64_t on 64-bit mingw and on MSVC (since MSVC 8).
-+  dnl But when compiling with -D__MINGW_USE_VC2005_COMPAT, time_t is an
-+  dnl alias of __time64_t.
-+  dnl And when compiling with -D_USE_32BIT_TIME_T, time_t is an alias of
-+  dnl __time32_t.
-+  AC_CACHE_CHECK([for 64-bit time_t], [gl_cv_type_time_t_64],
-+    [AC_COMPILE_IFELSE(
-+       [AC_LANG_SOURCE([gl_YEAR2038_TEST_INCLUDES])],
-+       [gl_cv_type_time_t_64=yes], [gl_cv_type_time_t_64=no])
-+    ])
-+  if test "$gl_cv_type_time_t_64" = no; then
-+    AC_CACHE_CHECK([for 64-bit time_t with _TIME_BITS=64],
-+      [gl_cv_type_time_t_bits_macro],
-+      [AC_COMPILE_IFELSE(
-+         [AC_LANG_SOURCE([[#define _TIME_BITS 64
-+                           #define _FILE_OFFSET_BITS 64
-+                           ]gl_YEAR2038_TEST_INCLUDES])],
-+         [gl_cv_type_time_t_bits_macro=yes],
-+         [gl_cv_type_time_t_bits_macro=no])
-+      ])
-+    if test "$gl_cv_type_time_t_bits_macro" = yes; then
-+      AC_DEFINE([_TIME_BITS], [64],
-+        [Number of bits in a timestamp, on hosts where this is settable.])
-+      dnl AC_SYS_LARGFILE also defines this; it's OK if we do too.
-+      AC_DEFINE([_FILE_OFFSET_BITS], [64],
-+        [Number of bits in a file offset, on hosts where this is settable.])
-+      gl_cv_type_time_t_64=yes
-+    fi
-+  fi
-+  if test $gl_cv_type_time_t_64 = no; then
-+    AC_COMPILE_IFELSE(
-+      [AC_LANG_SOURCE(
-+         [[#ifdef _USE_32BIT_TIME_T
-+             int ok;
-+           #else
-+             error fail
-+           #endif
-+         ]])],
-+      [AC_MSG_FAILURE([This package requires a 64-bit 'time_t' type. Remove _USE_32BIT_TIME_T from the compiler flags.])],
-+      [# If not cross-compiling and $1 says we should check,
-+       # and 'touch' works with a large timestamp, then evidently 64-bit time_t
-+       # is desired and supported, so fail and ask the builder to fix the
-+       # problem.  Otherwise, just warn the builder.
-+       m4_ifval([$1],
-+         [if test $cross_compiling = no \
-+             && TZ=UTC0 touch -t 210602070628.16 conftest.time 2>/dev/null; then
-+            rm -f conftest.time
-+            AC_MSG_FAILURE([This package requires a 64-bit 'time_t' type, which your system appears to support. You might try configuring with 'CPPFLAGS="-m64" LDFLAGS="-m64"'. To build with a 32-bit time_t anyway (not recommended), configure with '--disable-year2038'.])
-+          fi])
-+       if test "$gl_warned_about_64_bit_time_t" != yes; then
-+         AC_MSG_WARN([This package requires a 64-bit 'time_t' type if there is any way to access timestamps outside the year range 1901-2038 on your platform. Perhaps you should configure with 'CPPFLAGS="-m64" LDFLAGS="-m64"'?])
-+         gl_warned_about_64_bit_time_t=yes
-+       fi
-+      ])
-+  fi])
-+])
-+
-+AC_DEFUN([gl_YEAR2038],
-+[
-+  gl_YEAR2038_BODY([require-64-bit])
-+])
diff --git a/poky/meta/recipes-extended/texinfo/texinfo/disable-native-tools.patch b/poky/meta/recipes-extended/texinfo/texinfo/disable-native-tools.patch
index ab6f165..3801d73 100644
--- a/poky/meta/recipes-extended/texinfo/texinfo/disable-native-tools.patch
+++ b/poky/meta/recipes-extended/texinfo/texinfo/disable-native-tools.patch
@@ -1,3 +1,8 @@
+From e5d8f6d4a7652ea95c8d069ce9333494f2db868c Mon Sep 17 00:00:00 2001
+From: Joshua Lock <josh@linux.intel.com>
+Date: Fri, 16 Sep 2011 15:35:48 -0700
+Subject: [PATCH] texinfo: several changes to build without zlib and ncurses
+
 We already DEPEND on the native texinfo being present before building so
 there isn't any need to try and build the required native texinfo binaries
 before cross-compiling. This simplifies the recipe somewhat!
@@ -6,11 +11,15 @@
 
 Signed-off-by: Joshua Lock <josh@linux.intel.com>
 
-Index: texinfo-4.13/configure.ac
-===================================================================
---- texinfo-4.13.orig/configure.ac
-+++ texinfo-4.13/configure.ac
-@@ -100,29 +100,7 @@ AC_CANONICAL_BUILD
+---
+ configure.ac | 24 +-----------------------
+ 1 file changed, 1 insertion(+), 23 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 6fcd3a0..c108df7 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -180,29 +180,7 @@ AC_CANONICAL_BUILD
  # $native_tools is also added to SUBDIRS in the main Makefile.am,
  # so that make compiles the native tools first.
  #
diff --git a/poky/meta/recipes-extended/texinfo/texinfo/dont-depend-on-help2man.patch b/poky/meta/recipes-extended/texinfo/texinfo/dont-depend-on-help2man.patch
index 0d6bbaf..825887c 100644
--- a/poky/meta/recipes-extended/texinfo/texinfo/dont-depend-on-help2man.patch
+++ b/poky/meta/recipes-extended/texinfo/texinfo/dont-depend-on-help2man.patch
@@ -1,4 +1,4 @@
-From 63a803ead3656353329a801846a9a3beb7210c46 Mon Sep 17 00:00:00 2001
+From 451a9b9c3874872d575693fc7733fae02690a7d3 Mon Sep 17 00:00:00 2001
 From: Edwin Plauchu <edwin.plauchu.camacho@intel.com>
 Date: Tue, 29 Nov 2016 13:43:24 -0600
 Subject: [PATCH] dont-depend-on-help2man
@@ -14,18 +14,18 @@
  2 files changed, 7 insertions(+), 7 deletions(-)
 
 diff --git a/doc/Makefile.am b/doc/Makefile.am
-index 732833e..041cb9b 100644
+index 407a38c..6b5ff3e 100644
 --- a/doc/Makefile.am
 +++ b/doc/Makefile.am
-@@ -37,7 +37,7 @@ refcard_files = refcard/Makefile refcard/txicmdcheck \
+@@ -55,7 +55,7 @@ refcard_files = refcard/Makefile refcard/txicmdcheck \
  # Include our texinfo.tex, not Automake's.
  EXTRA_DIST = epsf.tex texinfo.tex \
               fdl.texi \
 -	     $(man_MANS) $(TXI_XLATE) \
 +	     $(TXI_XLATE) \
               $(refcard_files) \
+              gendocs.chapter/gendocs_template \
  	     texinfo-tex-test.texi texinfo-tex-test.WIDOWs \
-              texinfo-ja.tex short-sample-ja.texi
 diff --git a/man/Makefile.am b/man/Makefile.am
 index d0cd72c..a19e52a 100644
 --- a/man/Makefile.am
diff --git a/poky/meta/recipes-extended/texinfo/texinfo/link-zip.patch b/poky/meta/recipes-extended/texinfo/texinfo/link-zip.patch
index 15c030c..72d7067 100644
--- a/poky/meta/recipes-extended/texinfo/texinfo/link-zip.patch
+++ b/poky/meta/recipes-extended/texinfo/texinfo/link-zip.patch
@@ -1,4 +1,4 @@
-From c1002138033fcccb2d1abfc41f5c2e46c836f7a0 Mon Sep 17 00:00:00 2001
+From c5050ac84c8a3cc3ff8c7e558f8c2fdb57f410d9 Mon Sep 17 00:00:00 2001
 From: Joshua Lock <josh@linux.intel.com>
 Date: Mon, 29 Jul 2013 15:02:34 -0700
 Subject: [PATCH] install-info uses symbols from zlib so must link against it.
diff --git a/poky/meta/recipes-extended/texinfo/texinfo/use_host_makedoc.patch b/poky/meta/recipes-extended/texinfo/texinfo/use_host_makedoc.patch
index 5b7f32d..c6c9952 100644
--- a/poky/meta/recipes-extended/texinfo/texinfo/use_host_makedoc.patch
+++ b/poky/meta/recipes-extended/texinfo/texinfo/use_host_makedoc.patch
@@ -1,12 +1,21 @@
+From 81ccd162b869c20e450073fa834b5cabbea8e3d4 Mon Sep 17 00:00:00 2001
+From: Saul Wold <sgw@linux.intel.com>
+Date: Mon, 29 Jul 2013 15:02:34 -0700
+Subject: [PATCH] texinfo: Update to 5.1
+
 Upstream-Status: Inappropriate [cross build specific]
 
 Signed-off-by: Saul Wold <sgw@linux.intel.com>
 
-Index: texinfo-5.1/info/Makefile.am
-===================================================================
---- texinfo-5.1.orig/info/Makefile.am
-+++ texinfo-5.1/info/Makefile.am
-@@ -76,7 +76,7 @@ cmd_sources = $(srcdir)/session.c $(srcd
+---
+ info/Makefile.am | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/info/Makefile.am b/info/Makefile.am
+index 35596b1..cae1421 100644
+--- a/info/Makefile.am
++++ b/info/Makefile.am
+@@ -69,7 +69,7 @@ cmd_sources = $(srcdir)/session.c $(srcdir)/echo-area.c $(srcdir)/infodoc.c \
  # more than once.
  funs.h: makedoc$(EXEEXT) $(cmd_sources)
  	rm -f $(generated_sources)
diff --git a/poky/meta/recipes-extended/texinfo/texinfo_6.8.bb b/poky/meta/recipes-extended/texinfo/texinfo_7.0.1.bb
similarity index 93%
rename from poky/meta/recipes-extended/texinfo/texinfo_6.8.bb
rename to poky/meta/recipes-extended/texinfo/texinfo_7.0.1.bb
index 33dcd94..f0f9211 100644
--- a/poky/meta/recipes-extended/texinfo/texinfo_6.8.bb
+++ b/poky/meta/recipes-extended/texinfo/texinfo_7.0.1.bb
@@ -29,14 +29,13 @@
 TARGET_PATCH:class-native = ""
 
 SRC_URI = "${GNU_MIRROR}/texinfo/${BP}.tar.gz \
-           file://0001-gnulib-Update.patch \
            file://disable-native-tools.patch \
            file://link-zip.patch \
            file://dont-depend-on-help2man.patch \
            ${TARGET_PATCH} \
            "
 
-SRC_URI[sha256sum] = "8e09cf753ad1833695d2bac0f57dc3bd6bcbbfbf279450e1ba3bc2d7fb297d08"
+SRC_URI[sha256sum] = "53c01dd34c9bf116866d03aabd38c5cd9ee95ac10043d61aa33dec0d27825d8d"
 
 tex_texinfo = "texmf/tex/texinfo"
 
@@ -62,6 +61,7 @@
 	mkdir -p ${D}${datadir}/${tex_texinfo}
 	install -p -m644 ${S}/doc/texinfo.tex ${S}/doc/txi-??.tex ${D}${datadir}/${tex_texinfo}
 	sed -i -e '1s,#!.*perl,#! ${USRBINPATH}/env perl,' ${D}${bindir}/texi2any ${D}${bindir}/pod2texi
+	sed -i -e 's,${HOSTTOOLS_DIR},,' ${D}${bindir}/texindex
 }
 
 do_install:append:class-native() {
@@ -77,7 +77,7 @@
 
 FILES:${PN} = "${bindir}/makeinfo ${bindir}/texi* ${bindir}/pdftexi2dvi ${bindir}/pod2texi ${datadir}/texinfo"
 RDEPENDS:${PN} = "perl"
-FILES:${PN}-doc = "${infodir}/texinfo* \
+FILES:${PN}-doc = "${infodir}/texi* \
                    ${datadir}/${tex_texinfo} \
                    ${mandir}/man1 ${mandir}/man5"
 
diff --git a/poky/meta/recipes-extended/timezone/timezone.inc b/poky/meta/recipes-extended/timezone/timezone.inc
index d3c78e9..1834665 100644
--- a/poky/meta/recipes-extended/timezone/timezone.inc
+++ b/poky/meta/recipes-extended/timezone/timezone.inc
@@ -6,7 +6,7 @@
 LICENSE = "PD & BSD-3-Clause"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=c679c9d6b02bc2757b3eaf8f53c43fba"
 
-PV = "2022d"
+PV = "2022g"
 
 SRC_URI =" http://www.iana.org/time-zones/repository/releases/tzcode${PV}.tar.gz;name=tzcode \
            http://www.iana.org/time-zones/repository/releases/tzdata${PV}.tar.gz;name=tzdata \
@@ -14,6 +14,5 @@
 
 UPSTREAM_CHECK_URI = "http://www.iana.org/time-zones"
 
-SRC_URI[tzcode.sha256sum] = "d644ba0f938899374ea8cb554e35fb4afa0f7bd7b716c61777cd00500b8759e0"
-SRC_URI[tzdata.sha256sum] = "6ecdbee27fa43dcfa49f3d4fd8bb1dfef54c90da1abcd82c9abcf2dc4f321de0"
-
+SRC_URI[tzcode.sha256sum] = "9610bb0b9656ff404c361a41f3286da53064b5469d84f00c9cb2314c8614da74"
+SRC_URI[tzdata.sha256sum] = "4491db8281ae94a84d939e427bdd83dc389f26764d27d9a5c52d782c16764478"
diff --git a/poky/meta/recipes-extended/xz/xz_5.2.7.bb b/poky/meta/recipes-extended/xz/xz_5.4.0.bb
similarity index 95%
rename from poky/meta/recipes-extended/xz/xz_5.2.7.bb
rename to poky/meta/recipes-extended/xz/xz_5.4.0.bb
index 88ec847..75b7635 100644
--- a/poky/meta/recipes-extended/xz/xz_5.2.7.bb
+++ b/poky/meta/recipes-extended/xz/xz_5.4.0.bb
@@ -25,7 +25,7 @@
                     "
 
 SRC_URI = "https://tukaani.org/xz/xz-${PV}.tar.gz"
-SRC_URI[sha256sum] = "06327c2ddc81e126a6d9a78b0be5014b976a2c0832f492dcfc4755d7facf6d33"
+SRC_URI[sha256sum] = "7471ef5991f690268a8f2be019acec2e0564b7b233ca40035f339fe9a07f830b"
 UPSTREAM_CHECK_REGEX = "xz-(?P<pver>\d+(\.\d+)+)\.tar"
 
 CACHED_CONFIGUREVARS += "gl_cv_posix_shell=/bin/sh"
