Browse Source

Update contrib/libs/libidn to 1.42

robot-contrib 1 year ago
parent
commit
b07d0f5a11

+ 1 - 1
contrib/libs/libidn/AUTHORS

@@ -1,5 +1,5 @@
 Libidn AUTHORS -- Information about the authors.
 Libidn AUTHORS -- Information about the authors.
-Copyright (C) 2002-2022 Simon Josefsson
+Copyright (C) 2002-2024 Simon Josefsson
 See the end for copying conditions.
 See the end for copying conditions.
 
 
 Simon Josefsson <simon@josefsson.org>
 Simon Josefsson <simon@josefsson.org>

+ 111 - 0
contrib/libs/libidn/CONTRIBUTING.md

@@ -0,0 +1,111 @@
+# Contributing to Libidn
+
+This file contains instructions for developers and advanced users that
+wants to build from version controlled sources.
+
+We rely on several tools to build the software, including:
+
+- Make <https://www.gnu.org/software/make/>
+- C compiler <https://www.gnu.org/software/gcc/>
+- Automake <https://www.gnu.org/software/automake/>
+- Autoconf <https://www.gnu.org/software/autoconf/>
+- Libtool <https://www.gnu.org/software/libtool/>
+- Gettext <https://www.gnu.org/software/gettext/>
+- Texinfo <https://www.gnu.org/software/texinfo/>
+- Gperf <https://www.gnu.org/software/gperf/>
+- help2man <https://www.gnu.org/software/help2man/>
+- Gengetopt <https://www.gnu.org/software/gengetopt/>
+- Tar <https://www.gnu.org/software/tar/>
+- Gzip <https://www.gnu.org/software/gzip/>
+- Texlive & epsf <https://tug.org/texlive/> (for PDF manual)
+- GTK-DOC <https://gitlab.gnome.org/GNOME/gtk-doc> (for API manual)
+- Git <https://git-scm.com/>
+- Perl <https://www.cpan.org/src/http://www.cpan.org/>
+- Valgrind <https://valgrind.org/> (optional)
+- OpenJDK (for java port)
+- Mono mcs <https://www.mono-project.com/> (for C# port)
+- fig2dev <https://sourceforge.net/projects/mcj/>
+
+The software is typically distributed with your operating system, and
+the instructions for installing them differ.  Here are some hints:
+
+APT/DPKG-based distributions:
+```
+apt-get install make git autoconf automake libtool gettext autopoint cvs
+apt-get install texinfo texlive texlive-plain-generic texlive-extra-utils
+apt-get install help2man gtk-doc-tools dblatex valgrind gengetopt
+apt-get install transfig mono-mcs gperf default-jdk-headless
+```
+
+DNF/RPM-based distributions:
+```
+dnf install -y make git autoconf automake libtool gettext-devel cvs
+dnf install -y texinfo texinfo-tex texlive
+dnf install -y help2man gtk-doc gengetopt dblatex valgrind
+dnf install -y gperf java-latest-openjdk-devel
+```
+
+On macOS with Xcode and Homebrew:
+```
+brew install autoconf automake libtool gengetopt help2man texinfo fig2dev
+```
+
+To download the version controlled sources:
+
+```
+git clone https://git.savannah.gnu.org/git/libidn.git
+cd libidn
+```
+
+The next step is to import gnulib files, run autoreconf etc:
+
+```
+./bootstrap
+```
+
+If you have a local checkout of gnulib and wants to avoid download
+another copy, you may want to use:
+
+```
+./bootstrap --gnulib-refdir=../gnulib
+```
+
+Then configure the project as you would normally, for example:
+
+```
+./configure --enable-java --enable-gtk-doc-pdf
+```
+
+Then build the project:
+
+```
+make
+make check
+```
+
+To prepare releases you need some additional tools:
+
+- Mingw (to produce Windows binaries)
+- Wine (to self-check Windows binaries)
+- Lcov (to produce coverage HTML pages)
+- Zip (to pack Windows binaries)
+- Clang (to produce clang analysis)
+- Doxygen (to produce doxygen manual)
+- pmccabe (to produce cyclomatic code complexity report)
+- ncftpput (to upload source tarballs)
+
+APT/DPKG-based distributions:
+```
+apt-get install mingw-w64 wine binfmt-support lcov zip
+apt-get install clang doxygen pmccabe ncftp
+```
+
+See README-release on how to make a release.
+
+Happy hacking!
+
+----------------------------------------------------------------------
+Copyright (C) 2009-2024 Simon Josefsson
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.

+ 175 - 0
contrib/libs/libidn/ChangeLog

@@ -1,5 +1,180 @@
+2024-01-13  Simon Josefsson  <simon@josefsson.org>
+
+	version 1.42
+	* NEWS: Record release date.
+
+	doc: Fix NEWS codespell typo.
+
+	tests: Add standalone.sh and improve tst_versions.c.  Run system tests in CI/CD.
+
+	cicd: Silence warnings.
+
+	cicd: Enable UCRT/MINGW jobs.
+
+	doc: Add NEWS entry about Windows fix.
+
+	Silence compiler warnings.
+
+2024-01-13  Francesco Pretto  <ceztko@gmail.com>
+
+	Fix type confusion for Windows.
+
+2024-01-13  Simon Josefsson  <simon@josefsson.org>
+
+	cicd: Fix coverity job.
+
+	maint: Improve compiler warning handling.
+
+	cicd: Avoid duplicate pipeline.
+
+	Bump required gettext version to 0.19.8 for musl-libc.
+
+	cicd: More make -j.
+
+	maint: Fix codespell.
+
+	doc: Rename HACKING to CONTRIBUTING.md and fix markup.
+
+	cicd: Add Windows/arm64/ppc64 jobs.  Fix macOS jobs.
+
+2024-01-01  Simon Josefsson  <simon@josefsson.org>
+
+	cicd: Use standard stage naming.  Some macOS/gcc/clang fixes.
+
+	main: Bump NEWS hash after copyright year change.
+
+	maint: Run 'make my-update-copyright'.
+
+	maint: Don't disable copyright_check.
+
+	Sync bootstrap scripts.
+
+	maint: Update gnulib submodule.
+
+	cicd: Improve macOS testing.
+
+2023-11-12  Simon Josefsson  <simon@josefsson.org>
+
+	cicd: Fix macOS dependencies.
+
+	cicd: Add macOS/gcc + use Trisquel.  Update images and stages.  Use defaults.
+
+	Drop autogen/autopull scripts (use bootstrap --gen/--pull).
+
+	Update gnulib submodule.
+
+2023-11-11  Simon Josefsson  <simon@josefsson.org>
+
+	cicd: Update build-image names.
+
+2023-11-06  Simon Josefsson  <simon@josefsson.org>
+
+	Add NEWS entries.
+
+	Indent code.
+
+	Sync bootstrap scripts.
+
+	Update gnulib.
+
+	cicd: Use stable debian releases.  Fix armcross build failure.
+
+2023-05-07  Tim Rühsen  <tim.ruehsen@gmx.de>
+
+	Merge branch 'rockdaboot/include-config.h-from-tlds.c' into 'master'
+	lib/gen-tld-tables.pl: include config.h
+
+	See merge request libidn/libidn!1
+
+2023-05-07  Tim Rühsen  <tim.ruehsen@gmx.de>
+
+	lib/gen-tld-tables.pl: include config.h
+
+2023-01-01  Simon Josefsson  <simon@josefsson.org>
+
+	maint: Fix syntax-check.
+
+	maint: Run 'make my-update-copyright'.
+
+	Sync bootstrap script.
+
+	Update gnulib git submodule.
+
+2022-11-27  Simon Josefsson  <simon@josefsson.org>
+
+	cicd: Use extends:.test more.  Check with VERBOSE=t.
+
+2022-11-05  Simon Josefsson  <simon@josefsson.org>
+
+	cicd: Test clang-15.
+
+	Update gnulib submodule.
+
+2022-09-06  Simon Josefsson  <simon@josefsson.org>
+
+	maint: Update review-diff rule.
+
+	cicd: Test coverity variables before use.
+
+	Allow coverity scan build to fail (when variables are not set up).
+
+	Update gnulib files.
+
+2022-09-05  Simon Josefsson  <simon@josefsson.org>
+
+	cicd: Add coverity and sast.
+
+2022-08-16  Simon Josefsson  <simon@josefsson.org>
+
+	Use AM_DISTCHECK_CONFIGURE_FLAGS.
+
+	Update gnulib.
+
+2022-08-14  Simon Josefsson  <simon@josefsson.org>
+
+	Sync bootstrap.
+
+	Update gdoc usage.
+
+	Update gnulib files.
+
+	Drop obsolete gdoc bootstrap.  Refresh and move gtk-doc fix into hook.
+
+2022-07-11  Simon Josefsson  <simon@josefsson.org>
+
+	doc: Drop obsolete HTML hacks (we now use gendocs).
+
+	Doc fix of bootstrap M4 hack.
+
+	Reorder diagnostic outputs.
+
+	Drop old bootstrap tarcache stuff.
+
+	configure.ac: Use new iconv summary variable.
+
+	maint: Update gnulib.
+
+2022-07-09  Simon Josefsson  <simon@josefsson.org>
+
+	Use proper variable for iconv diagnostics.  Drop obsolete warning.
+
+2022-06-26  Simon Josefsson  <simon@josefsson.org>
+
+	Update gnulib files.
+
 2022-06-25  Simon Josefsson  <simon@josefsson.org>
 2022-06-25  Simon Josefsson  <simon@josefsson.org>
 
 
+	doc: Improve release steps.
+
+	Bump LT_REVISION.
+
+	Bump STRINGPREP_VERSION.
+
+	maint: post-release administrivia
+	* NEWS: Add header line for next release.
+	* .prev-version: Record previous version.
+	* cfg.mk (old_NEWS_hash): Auto-update.
+
 	version 1.41
 	version 1.41
 	* NEWS: Record release date.
 	* NEWS: Record release date.
 
 

+ 237 - 240
contrib/libs/libidn/INSTALL

@@ -1,177 +1,177 @@
 Installation Instructions
 Installation Instructions
 *************************
 *************************
 
 
-   Copyright (C) 1994-1996, 1999-2002, 2004-2017, 2020-2022 Free
-Software Foundation, Inc.
-
-   Copying and distribution of this file, with or without modification,
-are permitted in any medium without royalty provided the copyright
-notice and this notice are preserved.  This file is offered as-is,
-without warranty of any kind.
-
 Basic Installation
 Basic Installation
 ==================
 ==================
 
 
-   Briefly, the shell command './configure && make && make install'
-should configure, build, and install this package.  The following
-more-detailed instructions are generic; see the 'README' file for
-instructions specific to this package.  Some packages provide this
-'INSTALL' file but do not implement all of the features documented
-below.  The lack of an optional feature in a given package is not
-necessarily a bug.  More recommendations for GNU packages can be found
-in *note Makefile Conventions: (standards)Makefile Conventions.
-
-   The 'configure' shell script attempts to guess correct values for
+   The following shell commands:
+
+     test -f configure || ./bootstrap
+     ./configure
+     make
+     make install
+
+should configure, build, and install this package.  The first line,
+which bootstraps, is intended for developers; when building from
+distribution tarballs it does nothing and can be skipped.
+
+   The following more-detailed instructions are generic; see the
+‘README’ file for instructions specific to this package.  Some packages
+provide this ‘INSTALL’ file but do not implement all of the features
+documented below.  The lack of an optional feature in a given package is
+not necessarily a bug.  More recommendations for GNU packages can be
+found in the GNU Coding Standards.
+
+   Many packages have scripts meant for developers instead of ordinary
+builders, as they may use developer tools that are less commonly
+installed, or they may access the network, which has privacy
+implications.  If the ‘bootstrap’ shell script exists, it attempts to
+build the ‘configure’ shell script and related files, possibly using
+developer tools or the network.  Because the output of ‘bootstrap’ is
+system-independent, it is normally run by a package developer so that
+its output can be put into the distribution tarball and ordinary
+builders and users need not run ‘bootstrap’.  Some packages have
+commands like ‘./autopull.sh’ and ‘./autogen.sh’ that you can run
+instead of ‘./bootstrap’, for more fine-grained control over
+bootstrapping.
+
+   The ‘configure’ shell script attempts to guess correct values for
 various system-dependent variables used during compilation.  It uses
 various system-dependent variables used during compilation.  It uses
-those values to create a 'Makefile' in each directory of the package.
-It may also create one or more '.h' files containing system-dependent
-definitions.  Finally, it creates a shell script 'config.status' that
+those values to create a ‘Makefile’ in each directory of the package.
+It may also create one or more ‘.h’ files containing system-dependent
+definitions.  Finally, it creates a shell script ‘config.status’ that
 you can run in the future to recreate the current configuration, and a
 you can run in the future to recreate the current configuration, and a
-file 'config.log' containing compiler output (useful mainly for
-debugging 'configure').
+file ‘config.log’ containing output useful for debugging ‘configure’.
 
 
-   It can also use an optional file (typically called 'config.cache' and
-enabled with '--cache-file=config.cache' or simply '-C') that saves the
+   It can also use an optional file (typically called ‘config.cache’ and
+enabled with ‘--cache-file=config.cache’ or simply ‘-C’) that saves the
 results of its tests to speed up reconfiguring.  Caching is disabled by
 results of its tests to speed up reconfiguring.  Caching is disabled by
 default to prevent problems with accidental use of stale cache files.
 default to prevent problems with accidental use of stale cache files.
 
 
    If you need to do unusual things to compile the package, please try
    If you need to do unusual things to compile the package, please try
-to figure out how 'configure' could check whether to do them, and mail
-diffs or instructions to the address given in the 'README' so they can
+to figure out how ‘configure’ could check whether to do them, and mail
+diffs or instructions to the address given in the ‘README’ so they can
 be considered for the next release.  If you are using the cache, and at
 be considered for the next release.  If you are using the cache, and at
-some point 'config.cache' contains results you don't want to keep, you
+some point ‘config.cache’ contains results you don’t want to keep, you
 may remove or edit it.
 may remove or edit it.
 
 
-   The file 'configure.ac' (or 'configure.in') is used to create
-'configure' by a program called 'autoconf'.  You need 'configure.ac' if
-you want to change it or regenerate 'configure' using a newer version of
-'autoconf'.
+   The ‘autoconf’ program generates ‘configure’ from the file
+‘configure.ac’.  Normally you should edit ‘configure.ac’ instead of
+editing ‘configure’ directly.
 
 
    The simplest way to compile this package is:
    The simplest way to compile this package is:
 
 
-  1. 'cd' to the directory containing the package's source code and type
-     './configure' to configure the package for your system.
+  1. ‘cd’ to the directory containing the package’s source code.
+
+  2. If this is a developer checkout and file ‘configure’ does not yet
+     exist, type ‘./bootstrap’ to create it.  You may need special
+     developer tools and network access to bootstrap, and the network
+     access may have privacy implications.
 
 
-     Running 'configure' might take a while.  While running, it prints
-     some messages telling which features it is checking for.
+  3. Type ‘./configure’ to configure the package for your system.  This
+     might take a while.  While running, ‘configure’ prints messages
+     telling which features it is checking for.
 
 
-  2. Type 'make' to compile the package.
+  4. Type ‘make’ to compile the package.
 
 
-  3. Optionally, type 'make check' to run any self-tests that come with
+  5. Optionally, type ‘make check’ to run any self-tests that come with
      the package, generally using the just-built uninstalled binaries.
      the package, generally using the just-built uninstalled binaries.
 
 
-  4. Type 'make install' to install the programs and any data files and
+  6. Type ‘make install’ to install the programs and any data files and
      documentation.  When installing into a prefix owned by root, it is
      documentation.  When installing into a prefix owned by root, it is
      recommended that the package be configured and built as a regular
      recommended that the package be configured and built as a regular
-     user, and only the 'make install' phase executed with root
+     user, and only the ‘make install’ phase executed with root
      privileges.
      privileges.
 
 
-  5. Optionally, type 'make installcheck' to repeat any self-tests, but
+  7. Optionally, type ‘make installcheck’ to repeat any self-tests, but
      this time using the binaries in their final installed location.
      this time using the binaries in their final installed location.
      This target does not install anything.  Running this target as a
      This target does not install anything.  Running this target as a
-     regular user, particularly if the prior 'make install' required
+     regular user, particularly if the prior ‘make install’ required
      root privileges, verifies that the installation completed
      root privileges, verifies that the installation completed
      correctly.
      correctly.
 
 
-  6. You can remove the program binaries and object files from the
-     source code directory by typing 'make clean'.  To also remove the
-     files that 'configure' created (so you can compile the package for
-     a different kind of computer), type 'make distclean'.  There is
-     also a 'make maintainer-clean' target, but that is intended mainly
-     for the package's developers.  If you use it, you may have to get
-     all sorts of other programs in order to regenerate files that came
-     with the distribution.
-
-  7. Often, you can also type 'make uninstall' to remove the installed
-     files again.  In practice, not all packages have tested that
-     uninstallation works correctly, even though it is required by the
-     GNU Coding Standards.
-
-  8. Some packages, particularly those that use Automake, provide 'make
-     distcheck', which can by used by developers to test that all other
-     targets like 'make install' and 'make uninstall' work correctly.
-     This target is generally not run by end users.
+  8. You can remove the program binaries and object files from the
+     source code directory by typing ‘make clean’.  To also remove the
+     files that ‘configure’ created (so you can compile the package for
+     a different kind of computer), type ‘make distclean’.  There is
+     also a ‘make maintainer-clean’ target, but that is intended mainly
+     for the package’s developers.  If you use it, you may have to
+     bootstrap again.
+
+  9. If the package follows the GNU Coding Standards, you can type ‘make
+     uninstall’ to remove the installed files.
 
 
 Compilers and Options
 Compilers and Options
 =====================
 =====================
 
 
    Some systems require unusual options for compilation or linking that
    Some systems require unusual options for compilation or linking that
-the 'configure' script does not know about.  Run './configure --help'
+the ‘configure’ script does not know about.  Run ‘./configure --help’
 for details on some of the pertinent environment variables.
 for details on some of the pertinent environment variables.
 
 
-   You can give 'configure' initial values for configuration parameters
+   You can give ‘configure’ initial values for configuration parameters
 by setting variables in the command line or in the environment.  Here is
 by setting variables in the command line or in the environment.  Here is
 an example:
 an example:
 
 
-     ./configure CC=c99 CFLAGS=-g LIBS=-lposix
+     ./configure CC=gcc CFLAGS=-g LIBS=-lposix
 
 
-   *Note Defining Variables::, for more details.
+   See “Defining Variables” for more details.
 
 
 Compiling For Multiple Architectures
 Compiling For Multiple Architectures
 ====================================
 ====================================
 
 
    You can compile the package for more than one kind of computer at the
    You can compile the package for more than one kind of computer at the
-same time, by placing the object files for each architecture in their
-own directory.  To do this, you can use GNU 'make'.  'cd' to the
-directory where you want the object files and executables to go and run
-the 'configure' script.  'configure' automatically checks for the source
-code in the directory that 'configure' is in and in '..'.  This is known
-as a "VPATH" build.
-
-   With a non-GNU 'make', it is safer to compile the package for one
-architecture at a time in the source code directory.  After you have
-installed the package for one architecture, use 'make distclean' before
-reconfiguring for another architecture.
-
-   On MacOS X 10.5 and later systems, you can create libraries and
-executables that work on multiple system types--known as "fat" or
-"universal" binaries--by specifying multiple '-arch' options to the
-compiler but only a single '-arch' option to the preprocessor.  Like
-this:
-
-     ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
-                 CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
-                 CPP="gcc -E" CXXCPP="g++ -E"
-
-   This is not guaranteed to produce working output in all cases, you
-may have to build one architecture at a time and combine the results
-using the 'lipo' tool if you have problems.
+same time, by placing the object files for each system in their own
+directory.  To do this, you can use GNU ‘make’.  ‘cd’ to the directory
+where you want the object files and executables to go and run the
+‘configure’ script.  ‘configure’ automatically checks for the source
+code in the directory that ‘configure’ is in and in ‘..’.  This is known
+as a “VPATH” build.
+
+   With a non-GNU ‘make’, it is safer to compile the package for one
+system at a time in the source code directory.  After you have installed
+the package for one system, use ‘make distclean’ before reconfiguring
+for another system.
+
+   Some platforms, notably macOS, support “fat” or “universal” binaries,
+where a single binary can execute on different architectures.  On these
+platforms you can configure and compile just once, with options specific
+to that platform.
 
 
 Installation Names
 Installation Names
 ==================
 ==================
 
 
-   By default, 'make install' installs the package's commands under
-'/usr/local/bin', include files under '/usr/local/include', etc.  You
-can specify an installation prefix other than '/usr/local' by giving
-'configure' the option '--prefix=PREFIX', where PREFIX must be an
+   By default, ‘make install’ installs the package’s commands under
+‘/usr/local/bin’, include files under ‘/usr/local/include’, etc.  You
+can specify an installation prefix other than ‘/usr/local’ by giving
+‘configure’ the option ‘--prefix=PREFIX’, where PREFIX must be an
 absolute file name.
 absolute file name.
 
 
    You can specify separate installation prefixes for
    You can specify separate installation prefixes for
 architecture-specific files and architecture-independent files.  If you
 architecture-specific files and architecture-independent files.  If you
-pass the option '--exec-prefix=PREFIX' to 'configure', the package uses
+pass the option ‘--exec-prefix=PREFIX’ to ‘configure’, the package uses
 PREFIX as the prefix for installing programs and libraries.
 PREFIX as the prefix for installing programs and libraries.
 Documentation and other data files still use the regular prefix.
 Documentation and other data files still use the regular prefix.
 
 
    In addition, if you use an unusual directory layout you can give
    In addition, if you use an unusual directory layout you can give
-options like '--bindir=DIR' to specify different values for particular
-kinds of files.  Run 'configure --help' for a list of the directories
+options like ‘--bindir=DIR’ to specify different values for particular
+kinds of files.  Run ‘configure --help’ for a list of the directories
 you can set and what kinds of files go in them.  In general, the default
 you can set and what kinds of files go in them.  In general, the default
-for these options is expressed in terms of '${prefix}', so that
-specifying just '--prefix' will affect all of the other directory
+for these options is expressed in terms of ‘${prefix}’, so that
+specifying just ‘--prefix’ will affect all of the other directory
 specifications that were not explicitly provided.
 specifications that were not explicitly provided.
 
 
    The most portable way to affect installation locations is to pass the
    The most portable way to affect installation locations is to pass the
-correct locations to 'configure'; however, many packages provide one or
+correct locations to ‘configure’; however, many packages provide one or
 both of the following shortcuts of passing variable assignments to the
 both of the following shortcuts of passing variable assignments to the
-'make install' command line to change installation locations without
+‘make install’ command line to change installation locations without
 having to reconfigure or recompile.
 having to reconfigure or recompile.
 
 
    The first method involves providing an override variable for each
    The first method involves providing an override variable for each
-affected directory.  For example, 'make install
-prefix=/alternate/directory' will choose an alternate location for all
+affected directory.  For example, make install
+prefix=/alternate/directory will choose an alternate location for all
 directory configuration variables that were expressed in terms of
 directory configuration variables that were expressed in terms of
-'${prefix}'.  Any directories that were specified during 'configure',
-but not in terms of '${prefix}', must each be overridden at install time
+‘${prefix}’.  Any directories that were specified during ‘configure’,
+but not in terms of ‘${prefix}’, must each be overridden at install time
 for the entire installation to be relocated.  The approach of makefile
 for the entire installation to be relocated.  The approach of makefile
 variable overrides for each directory variable is required by the GNU
 variable overrides for each directory variable is required by the GNU
 Coding Standards, and ideally causes no recompilation.  However, some
 Coding Standards, and ideally causes no recompilation.  However, some
@@ -179,190 +179,187 @@ platforms have known limitations with the semantics of shared libraries
 that end up requiring recompilation when using this method, particularly
 that end up requiring recompilation when using this method, particularly
 noticeable in packages that use GNU Libtool.
 noticeable in packages that use GNU Libtool.
 
 
-   The second method involves providing the 'DESTDIR' variable.  For
-example, 'make install DESTDIR=/alternate/directory' will prepend
-'/alternate/directory' before all installation names.  The approach of
-'DESTDIR' overrides is not required by the GNU Coding Standards, and
+   The second method involves providing the ‘DESTDIR’ variable.  For
+example, ‘make install DESTDIR=/alternate/directory’ will prepend
+‘/alternate/directory’ before all installation names.  The approach of
+‘DESTDIR’ overrides is not required by the GNU Coding Standards, and
 does not work on platforms that have drive letters.  On the other hand,
 does not work on platforms that have drive letters.  On the other hand,
 it does better at avoiding recompilation issues, and works well even
 it does better at avoiding recompilation issues, and works well even
-when some directory options were not specified in terms of '${prefix}'
-at 'configure' time.
+when some directory options were not specified in terms of ‘${prefix}’
+at ‘configure’ time.
 
 
 Optional Features
 Optional Features
 =================
 =================
 
 
    If the package supports it, you can cause programs to be installed
    If the package supports it, you can cause programs to be installed
-with an extra prefix or suffix on their names by giving 'configure' the
-option '--program-prefix=PREFIX' or '--program-suffix=SUFFIX'.
+with an extra prefix or suffix on their names by giving ‘configure’ the
+option ‘--program-prefix=PREFIX’ or ‘--program-suffix=SUFFIX’.
 
 
-   Some packages pay attention to '--enable-FEATURE' options to
-'configure', where FEATURE indicates an optional part of the package.
-They may also pay attention to '--with-PACKAGE' options, where PACKAGE
-is something like 'gnu-as' or 'x' (for the X Window System).  The
-'README' should mention any '--enable-' and '--with-' options that the
-package recognizes.
-
-   For packages that use the X Window System, 'configure' can usually
-find the X include and library files automatically, but if it doesn't,
-you can use the 'configure' options '--x-includes=DIR' and
-'--x-libraries=DIR' to specify their locations.
+   Some packages pay attention to ‘--enable-FEATURE’ and
+‘--disable-FEATURE’ options to ‘configure’, where FEATURE indicates an
+optional part of the package.  They may also pay attention to
+‘--with-PACKAGE’ and ‘--without-PACKAGE’ options, where PACKAGE is
+something like ‘gnu-ld’.  ‘./configure --help’ should mention the
+‘--enable-...’ and ‘--with-...’ options that the package recognizes.
 
 
    Some packages offer the ability to configure how verbose the
    Some packages offer the ability to configure how verbose the
-execution of 'make' will be.  For these packages, running './configure
---enable-silent-rules' sets the default to minimal output, which can be
-overridden with 'make V=1'; while running './configure
---disable-silent-rules' sets the default to verbose, which can be
-overridden with 'make V=0'.
-
-Particular systems
-==================
-
-   On HP-UX, the default C compiler is not ANSI C compatible.  If GNU CC
-is not installed, it is recommended to use the following options in
-order to use an ANSI C compiler:
-
-     ./configure CC="cc -Ae -D_XOPEN_SOURCE=500"
-
-and if that doesn't work, install pre-built binaries of GCC for HP-UX.
-
-   HP-UX 'make' updates targets which have the same timestamps as their
-prerequisites, which makes it generally unusable when shipped generated
-files such as 'configure' are involved.  Use GNU 'make' instead.
-
-   On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
-parse its '<wchar.h>' header file.  The option '-nodtk' can be used as a
-workaround.  If GNU CC is not installed, it is therefore recommended to
-try
-
-     ./configure CC="cc"
-
-and if that doesn't work, try
-
-     ./configure CC="cc -nodtk"
-
-   On Solaris, don't put '/usr/ucb' early in your 'PATH'.  This
-directory contains several dysfunctional programs; working variants of
-these programs are available in '/usr/bin'.  So, if you need '/usr/ucb'
-in your 'PATH', put it _after_ '/usr/bin'.
-
-   On Haiku, software installed for all users goes in '/boot/common',
-not '/usr/local'.  It is recommended to use the following options:
-
-     ./configure --prefix=/boot/common
-
-Specifying the System Type
-==========================
-
-   There may be some features 'configure' cannot figure out
-automatically, but needs to determine by the type of machine the package
-will run on.  Usually, assuming the package is built to be run on the
-_same_ architectures, 'configure' can figure that out, but if it prints
-a message saying it cannot guess the machine type, give it the
-'--build=TYPE' option.  TYPE can either be a short name for the system
-type, such as 'sun4', or a canonical name which has the form:
-
-     CPU-COMPANY-SYSTEM
-
-where SYSTEM can have one of these forms:
-
-     OS
-     KERNEL-OS
-
-   See the file 'config.sub' for the possible values of each field.  If
-'config.sub' isn't included in this package, then this package doesn't
-need to know the machine type.
-
-   If you are _building_ compiler tools for cross-compiling, you should
-use the option '--target=TYPE' to select the type of system they will
-produce code for.
-
-   If you want to _use_ a cross compiler, that generates code for a
-platform different from the build platform, you should specify the
-"host" platform (i.e., that on which the generated programs will
-eventually be run) with '--host=TYPE'.
+execution of ‘make’ will be.  For these packages, running ‘./configure
+--enable-silent-rules’ sets the default to minimal output, which can be
+overridden with ‘make V=1’; while running ‘./configure
+--disable-silent-rules’ sets the default to verbose, which can be
+overridden with ‘make V=0’.
+
+Specifying a System Type
+========================
+
+   By default ‘configure’ builds for the current system.  To create
+binaries that can run on a different system type, specify a
+‘--host=TYPE’ option along with compiler variables that specify how to
+generate object code for TYPE.  For example, to create binaries intended
+to run on a 64-bit ARM processor:
+
+     ./configure --host=aarch64-linux-gnu \
+        CC=aarch64-linux-gnu-gcc \
+        CXX=aarch64-linux-gnu-g++
+
+If done on a machine that can execute these binaries (e.g., via
+‘qemu-aarch64’, ‘$QEMU_LD_PREFIX’, and Linux’s ‘binfmt_misc’
+capability), the build behaves like a native build.  Otherwise it is a
+cross-build: ‘configure’ will make cross-compilation guesses instead of
+running test programs, and ‘make check’ will not work.
+
+   A system type can either be a short name like ‘mingw64’, or a
+canonical name like ‘x86_64-pc-linux-gnu’.  Canonical names have the
+form CPU-COMPANY-SYSTEM where SYSTEM is either OS or KERNEL-OS.  To
+canonicalize and validate a system type, you can run the command
+‘config.sub’, which is often squirreled away in a subdirectory like
+‘build-aux’.  For example:
+
+     $ build-aux/config.sub arm64-linux
+     aarch64-unknown-linux-gnu
+     $ build-aux/config.sub riscv-lnx
+     Invalid configuration 'riscv-lnx': OS 'lnx' not recognized
+
+You can look at the ‘config.sub’ file to see which types are recognized.
+If the file is absent, this package does not need the system type.
+
+   If ‘configure’ fails with the diagnostic “cannot guess build type”.
+‘config.sub’ did not recognize your system’s type.  In this case, first
+fetch the newest versions of these files from the GNU config package
+(https://savannah.gnu.org/projects/config).  If that fixes things,
+please report it to the maintainers of the package containing
+‘configure’.  Otherwise, you can try the configure option ‘--build=TYPE’
+where TYPE comes close to your system type; also, please report the
+problem to <config-patches@gnu.org>.
+
+   For more details about configuring system types, see the Autoconf
+documentation.
 
 
 Sharing Defaults
 Sharing Defaults
 ================
 ================
 
 
-   If you want to set default values for 'configure' scripts to share,
-you can create a site shell script called 'config.site' that gives
-default values for variables like 'CC', 'cache_file', and 'prefix'.
-'configure' looks for 'PREFIX/share/config.site' if it exists, then
-'PREFIX/etc/config.site' if it exists.  Or, you can set the
-'CONFIG_SITE' environment variable to the location of the site script.
-A warning: not all 'configure' scripts look for a site script.
+   If you want to set default values for ‘configure’ scripts to share,
+you can create a site shell script called ‘config.site’ that gives
+default values for variables like ‘CC’, ‘cache_file’, and ‘prefix’.
+‘configure’ looks for ‘PREFIX/share/config.site’ if it exists, then
+‘PREFIX/etc/config.site’ if it exists.  Or, you can set the
+‘CONFIG_SITE’ environment variable to the location of the site script.
+A warning: not all ‘configure’ scripts look for a site script.
 
 
 Defining Variables
 Defining Variables
 ==================
 ==================
 
 
    Variables not defined in a site shell script can be set in the
    Variables not defined in a site shell script can be set in the
-environment passed to 'configure'.  However, some packages may run
+environment passed to ‘configure’.  However, some packages may run
 configure again during the build, and the customized values of these
 configure again during the build, and the customized values of these
 variables may be lost.  In order to avoid this problem, you should set
 variables may be lost.  In order to avoid this problem, you should set
-them in the 'configure' command line, using 'VAR=value'.  For example:
+them in the ‘configure’ command line, using ‘VAR=value’.  For example:
 
 
      ./configure CC=/usr/local2/bin/gcc
      ./configure CC=/usr/local2/bin/gcc
 
 
-causes the specified 'gcc' to be used as the C compiler (unless it is
+causes the specified ‘gcc’ to be used as the C compiler (unless it is
 overridden in the site shell script).
 overridden in the site shell script).
 
 
-Unfortunately, this technique does not work for 'CONFIG_SHELL' due to an
+Unfortunately, this technique does not work for ‘CONFIG_SHELL’ due to an
 Autoconf limitation.  Until the limitation is lifted, you can use this
 Autoconf limitation.  Until the limitation is lifted, you can use this
 workaround:
 workaround:
 
 
      CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash
      CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash
 
 
-'configure' Invocation
+‘configure’ Invocation
 ======================
 ======================
 
 
-   'configure' recognizes the following options to control how it
+   ‘configure’ recognizes the following options to control how it
 operates.
 operates.
 
 
-'--help'
-'-h'
-     Print a summary of all of the options to 'configure', and exit.
+‘--help’
+‘-h’
+     Print a summary of all of the options to ‘configure’, and exit.
 
 
-'--help=short'
-'--help=recursive'
-     Print a summary of the options unique to this package's
-     'configure', and exit.  The 'short' variant lists options used only
-     in the top level, while the 'recursive' variant lists options also
+‘--help=short’
+‘--help=recursive’
+     Print a summary of the options unique to this packages
+     ‘configure’, and exit.  The ‘short’ variant lists options used only
+     in the top level, while the ‘recursive’ variant lists options also
      present in any nested packages.
      present in any nested packages.
 
 
-'--version'
-'-V'
-     Print the version of Autoconf used to generate the 'configure'
+‘--version’
+‘-V’
+     Print the version of Autoconf used to generate the ‘configure’
      script, and exit.
      script, and exit.
 
 
-'--cache-file=FILE'
+‘--cache-file=FILE’
      Enable the cache: use and save the results of the tests in FILE,
      Enable the cache: use and save the results of the tests in FILE,
-     traditionally 'config.cache'.  FILE defaults to '/dev/null' to
+     traditionally ‘config.cache’.  FILE defaults to ‘/dev/null’ to
      disable caching.
      disable caching.
 
 
-'--config-cache'
-'-C'
-     Alias for '--cache-file=config.cache'.
-
-'--quiet'
-'--silent'
-'-q'
-     Do not print messages saying which checks are being made.  To
-     suppress all normal output, redirect it to '/dev/null' (any error
-     messages will still be shown).
+‘--config-cache’
+‘-C’
+     Alias for ‘--cache-file=config.cache’.
 
 
-'--srcdir=DIR'
-     Look for the package's source code in directory DIR.  Usually
-     'configure' can determine that directory automatically.
+‘--srcdir=DIR’
+     Look for the package’s source code in directory DIR.  Usually
+     ‘configure’ can determine that directory automatically.
 
 
-'--prefix=DIR'
-     Use DIR as the installation prefix.  *note Installation Names:: for
+‘--prefix=DIR’
+     Use DIR as the installation prefix.  See “Installation Names” for
      more details, including other options available for fine-tuning the
      more details, including other options available for fine-tuning the
      installation locations.
      installation locations.
 
 
-'--no-create'
-'-n'
+‘--host=TYPE’
+     Build binaries for system TYPE.  See “Specifying a System Type”.
+
+‘--enable-FEATURE’
+‘--disable-FEATURE’
+     Enable or disable the optional FEATURE.  See “Optional Features”.
+
+‘--with-PACKAGE’
+‘--without-PACKAGE’
+     Use or omit PACKAGE when building.  See “Optional Features”.
+
+‘--quiet’
+‘--silent’
+‘-q’
+     Do not print messages saying which checks are being made.  To
+     suppress all normal output, redirect it to ‘/dev/null’ (any error
+     messages will still be shown).
+
+‘--no-create’
+‘-n’
      Run the configure checks, but stop before creating any output
      Run the configure checks, but stop before creating any output
      files.
      files.
 
 
-'configure' also accepts some other, not widely useful, options.  Run
-'configure --help' for more details.
+‘configure’ also recognizes several environment variables, and accepts
+some other, less widely useful, options.  Run ‘configure --help’ for
+more details.
+
+Copyright notice
+================
+
+   Copyright © 1994–1996, 1999–2002, 2004–2017, 2020–2023 Free Software
+Foundation, Inc.
+
+   Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.  This file is offered as-is,
+without warranty of any kind.

+ 43 - 1
contrib/libs/libidn/NEWS

@@ -1,5 +1,47 @@
 Libidn NEWS -- History of user-visible changes.                 -*- outline -*-
 Libidn NEWS -- History of user-visible changes.                 -*- outline -*-
 
 
+* Noteworthy changes in release 1.42 (2024-01-13) [stable]
+
+** Bump required gettext version to 0.19.8 for musl-libc.
+
+** Compiler warning improvements.
+As before, compiler warnings are enabled by default.  You may disable
+them using ./configure --disable-gcc-warnings or turn them into fatal
+errors using ./configure --enable-gcc-warnings=error to add -Werror
+and sensible -Wno-error='s.  Based on gnulib's manywarnings, see
+<https://www.gnu.org/software/gnulib//manual/html_node/manywarnings.html>.
+
+** Fix type confusion on LLP64/Windows platforms.
+While libidn has worked using cygwin libc, it has never worked on
+ucrt/msvcrt libc.  Report and tiny patch by Francesco Pretto in
+<https://lists.gnu.org/archive/html/help-libidn/2022-02/msg00000.html>.
+
+** tests: Added script tests/standalone.sh suitable for integrators.
+The main purpose is to test a system-installed libidn, suitable for
+distributor checking (a'la Debian's autopkgtest/debci).  It may also
+be used to test a newly built libidn outside the usual 'make check'
+infrastructure.  To check that your system libidn is working, invoke
+the script with `srcdir` as an environment variable indicating where
+it can be find the source code for libidn's tests/ directory (it will
+use the directory name where the script is by default):
+
+tests/standalone.sh
+
+To check that a newly built static libidn behaves, invoke:
+
+env STANDALONE_CFLAGS="-Ilib lib/.libs/libidn.a" tests/standalone.sh
+
+To check that a newly built shared libidn behaves, invoke:
+
+env srcdir=tests STANDALONE_CFLAGS="-Ilib -Wl,-rpath lib/.libs lib/.libs/libidn.so" tests/standalone.sh
+
+If the libidn under testing is too old and has known bugs, that should
+cause tests to fail, which is intentional.
+
+** Updated translations.
+
+** Update gnulib files and build fixes.
+
 * Noteworthy changes in release 1.41 (2022-06-25) [stable]
 * Noteworthy changes in release 1.41 (2022-06-25) [stable]
 
 
 ** Bump LT_REVISION for new release.
 ** Bump LT_REVISION for new release.
@@ -1687,7 +1729,7 @@ used is included.
 ** Initial release
 ** Initial release
 
 
 ----------------------------------------------------------------------
 ----------------------------------------------------------------------
-Copyright (C) 2002-2022 Simon Josefsson
+Copyright (C) 2002-2024 Simon Josefsson
 Copying and distribution of this file, with or without modification,
 Copying and distribution of this file, with or without modification,
 are permitted in any medium without royalty provided the copyright
 are permitted in any medium without royalty provided the copyright
 notice and this notice are preserved.
 notice and this notice are preserved.

+ 4 - 3
contrib/libs/libidn/README

@@ -1,5 +1,5 @@
 Libidn README -- Important introductory notes.
 Libidn README -- Important introductory notes.
-Copyright (C) 2002-2022 Simon Josefsson
+Copyright (C) 2002-2024 Simon Josefsson
 See the end for copying conditions.
 See the end for copying conditions.
 
 
 Libidn is a package for internationalized string handling based on the
 Libidn is a package for internationalized string handling based on the
@@ -13,8 +13,9 @@ the historic IDNA2003 behaviour or to use Stringprep profiles.  Please
 try to migrate to libidn2 wherever possible.
 try to migrate to libidn2 wherever possible.
 
 
 If you obtained this file as part of a "git clone", then see the
 If you obtained this file as part of a "git clone", then see the
-HACKING file.  If this file came to you as part of a tar archive, then
-see the file INSTALL for compilation and installation instructions.
+CONTRIBUTING.md file.  If this file came to you as part of a tar
+archive, then see the file INSTALL for compilation and installation
+instructions.
 
 
 If you need help to use Libidn, or wish to help others, you are
 If you need help to use Libidn, or wish to help others, you are
 invited to join our mailing list help-libidn@gnu.org, see
 invited to join our mailing list help-libidn@gnu.org, see

+ 359 - 139
contrib/libs/libidn/config-linux.h

@@ -1,6 +1,10 @@
 /* config.h.  Generated from config.h.in by configure.  */
 /* config.h.  Generated from config.h.in by configure.  */
 /* config.h.in.  Generated from configure.ac by autoheader.  */
 /* config.h.in.  Generated from configure.ac by autoheader.  */
 
 
+/* Witness that <config.h> has been included.  */
+#define _GL_CONFIG_H_INCLUDED 1
+
+
 /* Define to the number of bits in type 'ptrdiff_t'. */
 /* Define to the number of bits in type 'ptrdiff_t'. */
 /* #undef BITSIZEOF_PTRDIFF_T */
 /* #undef BITSIZEOF_PTRDIFF_T */
 
 
@@ -115,6 +119,9 @@
 /* Define to 1 when the gnulib module getopt-posix should be tested. */
 /* Define to 1 when the gnulib module getopt-posix should be tested. */
 #define GNULIB_TEST_GETOPT_POSIX 1
 #define GNULIB_TEST_GETOPT_POSIX 1
 
 
+/* Define to 1 when the gnulib module getprogname should be tested. */
+#define GNULIB_TEST_GETPROGNAME 1
+
 /* Define to 1 when the gnulib module open should be tested. */
 /* Define to 1 when the gnulib module open should be tested. */
 #define GNULIB_TEST_OPEN 1
 #define GNULIB_TEST_OPEN 1
 
 
@@ -174,6 +181,12 @@
 /* Define to 1 if you have the <crtdefs.h> header file. */
 /* Define to 1 if you have the <crtdefs.h> header file. */
 /* #undef HAVE_CRTDEFS_H */
 /* #undef HAVE_CRTDEFS_H */
 
 
+/* Define to 1 if bool, true and false work as per C2023. */
+/* #undef HAVE_C_BOOL */
+
+/* Define to 1 if the static_assert keyword works. */
+/* #undef HAVE_C_STATIC_ASSERT */
+
 /* Define to 1 if C supports variable-length arrays. */
 /* Define to 1 if C supports variable-length arrays. */
 #define HAVE_C_VARARRAYS 1
 #define HAVE_C_VARARRAYS 1
 
 
@@ -217,6 +230,10 @@
    don't. */
    don't. */
 #define HAVE_DECL_GETLINE 1
 #define HAVE_DECL_GETLINE 1
 
 
+/* Define to 1 if you have the declaration of `getw', and to 0 if you don't.
+   */
+#define HAVE_DECL_GETW 1
+
 /* Define to 1 if you have the declaration of `program_invocation_name', and
 /* Define to 1 if you have the declaration of `program_invocation_name', and
    to 0 if you don't. */
    to 0 if you don't. */
 #define HAVE_DECL_PROGRAM_INVOCATION_NAME 1
 #define HAVE_DECL_PROGRAM_INVOCATION_NAME 1
@@ -225,6 +242,10 @@
    and to 0 if you don't. */
    and to 0 if you don't. */
 #define HAVE_DECL_PROGRAM_INVOCATION_SHORT_NAME 1
 #define HAVE_DECL_PROGRAM_INVOCATION_SHORT_NAME 1
 
 
+/* Define to 1 if you have the declaration of `putw', and to 0 if you don't.
+   */
+#define HAVE_DECL_PUTW 1
+
 /* Define to 1 if you have the declaration of `strerror_r', and to 0 if you
 /* Define to 1 if you have the declaration of `strerror_r', and to 0 if you
    don't. */
    don't. */
 #define HAVE_DECL_STRERROR_R 1
 #define HAVE_DECL_STRERROR_R 1
@@ -240,6 +261,12 @@
 /* Define to 1 if you have the <dlfcn.h> header file. */
 /* Define to 1 if you have the <dlfcn.h> header file. */
 #define HAVE_DLFCN_H 1
 #define HAVE_DLFCN_H 1
 
 
+/* Define to 1 if you have the `error' function. */
+#define HAVE_ERROR 1
+
+/* Define to 1 if you have the <error.h> header file. */
+#define HAVE_ERROR_H 1
+
 /* Define to 1 if you have the `fcntl' function. */
 /* Define to 1 if you have the `fcntl' function. */
 #define HAVE_FCNTL 1
 #define HAVE_FCNTL 1
 
 
@@ -264,6 +291,9 @@
 /* Define to 1 if you have the `getexecname' function. */
 /* Define to 1 if you have the `getexecname' function. */
 /* #undef HAVE_GETEXECNAME */
 /* #undef HAVE_GETEXECNAME */
 
 
+/* Define to 1 if you have the `getline' function. */
+#define HAVE_GETLINE 1
+
 /* Define to 1 if you have the <getopt.h> header file. */
 /* Define to 1 if you have the <getopt.h> header file. */
 #define HAVE_GETOPT_H 1
 #define HAVE_GETOPT_H 1
 
 
@@ -327,6 +357,12 @@
 /* Define to 1 if 'wint_t' is a signed integer type. */
 /* Define to 1 if 'wint_t' is a signed integer type. */
 /* #undef HAVE_SIGNED_WINT_T */
 /* #undef HAVE_SIGNED_WINT_T */
 
 
+/* Define to 1 if you have the <stdbool.h> header file. */
+#define HAVE_STDBOOL_H 1
+
+/* Define to 1 if you have the <stdckdint.h> header file. */
+/* #undef HAVE_STDCKDINT_H */
+
 /* Define to 1 if you have the <stdint.h> header file. */
 /* Define to 1 if you have the <stdint.h> header file. */
 #define HAVE_STDINT_H 1
 #define HAVE_STDINT_H 1
 
 
@@ -399,6 +435,9 @@
 /* Define to 1 if you have the <unistd.h> header file. */
 /* Define to 1 if you have the <unistd.h> header file. */
 #define HAVE_UNISTD_H 1
 #define HAVE_UNISTD_H 1
 
 
+/* Define to 1 if you have the <unistring/woe32dll.h> header file. */
+/* #undef HAVE_UNISTRING_WOE32DLL_H */
+
 /* Define to 1 if the system has the type 'unsigned long long int'. */
 /* Define to 1 if the system has the type 'unsigned long long int'. */
 #define HAVE_UNSIGNED_LONG_LONG_INT 1
 #define HAVE_UNSIGNED_LONG_LONG_INT 1
 
 
@@ -427,9 +466,6 @@
 /* Define to 1 if O_NOFOLLOW works. */
 /* Define to 1 if O_NOFOLLOW works. */
 #define HAVE_WORKING_O_NOFOLLOW 1
 #define HAVE_WORKING_O_NOFOLLOW 1
 
 
-/* Define to 1 if the system has the type `_Bool'. */
-#define HAVE__BOOL 1
-
 /* Define to 1 if you have the `_set_invalid_parameter_handler' function. */
 /* Define to 1 if you have the `_set_invalid_parameter_handler' function. */
 /* #undef HAVE__SET_INVALID_PARAMETER_HANDLER */
 /* #undef HAVE__SET_INVALID_PARAMETER_HANDLER */
 
 
@@ -492,7 +528,8 @@
 # define _GL_EXTERN_INLINE_STDHEADER_BUG
 # define _GL_EXTERN_INLINE_STDHEADER_BUG
 #endif
 #endif
 #if ((__GNUC__ \
 #if ((__GNUC__ \
-      ? defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ \
+      ? (defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ \
+         && !defined __PCC__) \
       : (199901L <= __STDC_VERSION__ \
       : (199901L <= __STDC_VERSION__ \
          && !defined __HP_cc \
          && !defined __HP_cc \
          && !defined __PGI \
          && !defined __PGI \
@@ -502,6 +539,7 @@
 # define _GL_EXTERN_INLINE extern inline
 # define _GL_EXTERN_INLINE extern inline
 # define _GL_EXTERN_INLINE_IN_USE
 # define _GL_EXTERN_INLINE_IN_USE
 #elif (2 < __GNUC__ + (7 <= __GNUC_MINOR__) && !defined __STRICT_ANSI__ \
 #elif (2 < __GNUC__ + (7 <= __GNUC_MINOR__) && !defined __STRICT_ANSI__ \
+       && !defined __PCC__ \
        && !defined _GL_EXTERN_INLINE_STDHEADER_BUG)
        && !defined _GL_EXTERN_INLINE_STDHEADER_BUG)
 # if defined __GNUC_GNU_INLINE__ && __GNUC_GNU_INLINE__
 # if defined __GNUC_GNU_INLINE__ && __GNUC_GNU_INLINE__
    /* __gnu_inline__ suppresses a GCC 4.2 diagnostic.  */
    /* __gnu_inline__ suppresses a GCC 4.2 diagnostic.  */
@@ -563,6 +601,9 @@
 #endif
 #endif
 
 
 
 
+/* Define to 1 on musl libc. */
+/* #undef MUSL_LIBC */
+
 /* Define to 1 if open() fails to recognize a trailing slash. */
 /* Define to 1 if open() fails to recognize a trailing slash. */
 /* #undef OPEN_TRAILING_SLASH_BUG */
 /* #undef OPEN_TRAILING_SLASH_BUG */
 
 
@@ -585,7 +626,7 @@
 /* #undef PACKAGE_PACKAGER_VERSION */
 /* #undef PACKAGE_PACKAGER_VERSION */
 
 
 /* Define to the full name and version of this package. */
 /* Define to the full name and version of this package. */
-#define PACKAGE_STRING "GNU Libidn 1.41"
+#define PACKAGE_STRING "GNU Libidn 1.42"
 
 
 /* Define to the one symbol short name of this package. */
 /* Define to the one symbol short name of this package. */
 #define PACKAGE_TARNAME "libidn"
 #define PACKAGE_TARNAME "libidn"
@@ -594,7 +635,7 @@
 #define PACKAGE_URL "https://www.gnu.org/software/libidn/"
 #define PACKAGE_URL "https://www.gnu.org/software/libidn/"
 
 
 /* Define to the version of this package. */
 /* Define to the version of this package. */
-#define PACKAGE_VERSION "1.41"
+#define PACKAGE_VERSION "1.42"
 
 
 /* Define to the type that is the result of default argument promotions of
 /* Define to the type that is the result of default argument promotions of
    type mode_t. */
    type mode_t. */
@@ -703,11 +744,15 @@
 #ifndef __STDC_WANT_IEC_60559_DFP_EXT__
 #ifndef __STDC_WANT_IEC_60559_DFP_EXT__
 # define __STDC_WANT_IEC_60559_DFP_EXT__ 1
 # define __STDC_WANT_IEC_60559_DFP_EXT__ 1
 #endif
 #endif
+/* Enable extensions specified by C23 Annex F.  */
+#ifndef __STDC_WANT_IEC_60559_EXT__
+# define __STDC_WANT_IEC_60559_EXT__ 1
+#endif
 /* Enable extensions specified by ISO/IEC TS 18661-4:2015.  */
 /* Enable extensions specified by ISO/IEC TS 18661-4:2015.  */
 #ifndef __STDC_WANT_IEC_60559_FUNCS_EXT__
 #ifndef __STDC_WANT_IEC_60559_FUNCS_EXT__
 # define __STDC_WANT_IEC_60559_FUNCS_EXT__ 1
 # define __STDC_WANT_IEC_60559_FUNCS_EXT__ 1
 #endif
 #endif
-/* Enable extensions specified by ISO/IEC TS 18661-3:2015.  */
+/* Enable extensions specified by C23 Annex H and ISO/IEC TS 18661-3:2015.  */
 #ifndef __STDC_WANT_IEC_60559_TYPES_EXT__
 #ifndef __STDC_WANT_IEC_60559_TYPES_EXT__
 # define __STDC_WANT_IEC_60559_TYPES_EXT__ 1
 # define __STDC_WANT_IEC_60559_TYPES_EXT__ 1
 #endif
 #endif
@@ -731,7 +776,7 @@
 
 
 
 
 /* Version number of package */
 /* Version number of package */
-#define VERSION "1.41"
+#define VERSION "1.42"
 
 
 /* Define to l, ll, u, ul, ull, etc., as suitable for constants of type
 /* Define to l, ll, u, ul, ull, etc., as suitable for constants of type
    'wchar_t'. */
    'wchar_t'. */
@@ -759,7 +804,7 @@
 /* Define to enable the declarations of ISO C 11 types and functions. */
 /* Define to enable the declarations of ISO C 11 types and functions. */
 /* #undef _ISOC11_SOURCE */
 /* #undef _ISOC11_SOURCE */
 
 
-/* Define for large files, on AIX-style hosts. */
+/* Define to 1 on platforms where this makes off_t a 64-bit type. */
 /* #undef _LARGE_FILES */
 /* #undef _LARGE_FILES */
 
 
 /* The _Noreturn keyword of C11.  */
 /* The _Noreturn keyword of C11.  */
@@ -775,6 +820,11 @@
        AIX system header files and several gnulib header files use precisely
        AIX system header files and several gnulib header files use precisely
        this syntax with 'extern'.  */
        this syntax with 'extern'.  */
 #  define _Noreturn [[noreturn]]
 #  define _Noreturn [[noreturn]]
+# elif (defined __clang__ && __clang_major__ < 16 \
+        && defined _GL_WORK_AROUND_LLVM_BUG_59792)
+   /* Compile with -D_GL_WORK_AROUND_LLVM_BUG_59792 to work around
+      that rare LLVM bug, though you may get many false-alarm warnings.  */
+#  define _Noreturn
 # elif ((!defined __cplusplus || defined __clang__) \
 # elif ((!defined __cplusplus || defined __clang__) \
         && (201112 <= (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) \
         && (201112 <= (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) \
             || (!defined __STRICT_ANSI__ \
             || (!defined __STRICT_ANSI__ \
@@ -793,7 +843,7 @@
 #endif
 #endif
 
 
 
 
-/* Number of bits in a timestamp, on hosts where this is settable. */
+/* Number of bits in time_t, on hosts where this is settable. */
 /* #undef _TIME_BITS */
 /* #undef _TIME_BITS */
 
 
 /* For standard stat data types on VMS. */
 /* For standard stat data types on VMS. */
@@ -803,7 +853,7 @@
    used. */
    used. */
 /* #undef __GETOPT_PREFIX */
 /* #undef __GETOPT_PREFIX */
 
 
-/* For 64-bit time_t on 32-bit mingw. */
+/* Define to 1 on platforms where this makes time_t a 64-bit type. */
 /* #undef __MINGW_USE_VC2005_COMPAT */
 /* #undef __MINGW_USE_VC2005_COMPAT */
 
 
 /* Define to 1 if the system <stdint.h> predates C++11. */
 /* Define to 1 if the system <stdint.h> predates C++11. */
@@ -848,7 +898,7 @@
      && (!defined __clang_minor__ \
      && (!defined __clang_minor__ \
          || (defined __apple_build_version__ \
          || (defined __apple_build_version__ \
              ? 6000000 <= __apple_build_version__ \
              ? 6000000 <= __apple_build_version__ \
-             : 3 < __clang_major__ + (5 <= __clang_minor__))))
+             : 5 <= __clang_major__)))
 # define _GL_HAS_ATTRIBUTE(attr) __has_attribute (__##attr##__)
 # define _GL_HAS_ATTRIBUTE(attr) __has_attribute (__##attr##__)
 #else
 #else
 # define _GL_HAS_ATTRIBUTE(attr) _GL_ATTR_##attr
 # define _GL_HAS_ATTRIBUTE(attr) _GL_ATTR_##attr
@@ -882,16 +932,30 @@
 # define _GL_ATTR_warn_unused_result _GL_GNUC_PREREQ (3, 4)
 # define _GL_ATTR_warn_unused_result _GL_GNUC_PREREQ (3, 4)
 #endif
 #endif
 
 
-#ifdef __has_c_attribute
-# if ((defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) <= 201710 \
-      && _GL_GNUC_PREREQ (4, 6))
-#  pragma GCC diagnostic ignored "-Wpedantic"
-# endif
-# define _GL_HAS_C_ATTRIBUTE(attr) __has_c_attribute (__##attr##__)
+/* Use __has_c_attribute if available.  However, do not use with
+   pre-C23 GCC, which can issue false positives if -Wpedantic.  */
+#if (defined __has_c_attribute \
+     && ! (_GL_GNUC_PREREQ (4, 6) \
+           && (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) <= 201710))
+# define _GL_HAVE___HAS_C_ATTRIBUTE 1
 #else
 #else
-# define _GL_HAS_C_ATTRIBUTE(attr) 0
+# define _GL_HAVE___HAS_C_ATTRIBUTE 0
 #endif
 #endif
 
 
+/* Define if, in a function declaration, the attributes in bracket syntax
+   [[...]] must come before the attributes in __attribute__((...)) syntax.
+   If this is defined, it is best to avoid the bracket syntax, so that the
+   various _GL_ATTRIBUTE_* can be cumulated on the same declaration in any
+   order.  */
+#ifdef __cplusplus
+# if defined __clang__
+#  define _GL_BRACKET_BEFORE_ATTRIBUTE 1
+# endif
+#else
+# if defined __GNUC__ && !defined __clang__
+#  define _GL_BRACKET_BEFORE_ATTRIBUTE 1
+# endif
+#endif
 
 
 /* _GL_ATTRIBUTE_ALLOC_SIZE ((N)) declares that the Nth argument of the function
 /* _GL_ATTRIBUTE_ALLOC_SIZE ((N)) declares that the Nth argument of the function
    is the size of the returned memory block.
    is the size of the returned memory block.
@@ -899,29 +963,35 @@
    by the Nth argument of the function is the size of the returned memory block.
    by the Nth argument of the function is the size of the returned memory block.
  */
  */
 /* Applies to: function, pointer to function, function types.  */
 /* Applies to: function, pointer to function, function types.  */
-#if _GL_HAS_ATTRIBUTE (alloc_size)
-# define _GL_ATTRIBUTE_ALLOC_SIZE(args) __attribute__ ((__alloc_size__ args))
-#else
-# define _GL_ATTRIBUTE_ALLOC_SIZE(args)
+#ifndef _GL_ATTRIBUTE_ALLOC_SIZE
+# if _GL_HAS_ATTRIBUTE (alloc_size)
+#  define _GL_ATTRIBUTE_ALLOC_SIZE(args) __attribute__ ((__alloc_size__ args))
+# else
+#  define _GL_ATTRIBUTE_ALLOC_SIZE(args)
+# endif
 #endif
 #endif
 
 
 /* _GL_ATTRIBUTE_ALWAYS_INLINE tells that the compiler should always inline the
 /* _GL_ATTRIBUTE_ALWAYS_INLINE tells that the compiler should always inline the
    function and report an error if it cannot do so.  */
    function and report an error if it cannot do so.  */
 /* Applies to: function.  */
 /* Applies to: function.  */
-#if _GL_HAS_ATTRIBUTE (always_inline)
-# define _GL_ATTRIBUTE_ALWAYS_INLINE __attribute__ ((__always_inline__))
-#else
-# define _GL_ATTRIBUTE_ALWAYS_INLINE
+#ifndef _GL_ATTRIBUTE_ALWAYS_INLINE
+# if _GL_HAS_ATTRIBUTE (always_inline)
+#  define _GL_ATTRIBUTE_ALWAYS_INLINE __attribute__ ((__always_inline__))
+# else
+#  define _GL_ATTRIBUTE_ALWAYS_INLINE
+# endif
 #endif
 #endif
 
 
 /* _GL_ATTRIBUTE_ARTIFICIAL declares that the function is not important to show
 /* _GL_ATTRIBUTE_ARTIFICIAL declares that the function is not important to show
     in stack traces when debugging.  The compiler should omit the function from
     in stack traces when debugging.  The compiler should omit the function from
     stack traces.  */
     stack traces.  */
 /* Applies to: function.  */
 /* Applies to: function.  */
-#if _GL_HAS_ATTRIBUTE (artificial)
-# define _GL_ATTRIBUTE_ARTIFICIAL __attribute__ ((__artificial__))
-#else
-# define _GL_ATTRIBUTE_ARTIFICIAL
+#ifndef _GL_ATTRIBUTE_ARTIFICIAL
+# if _GL_HAS_ATTRIBUTE (artificial)
+#  define _GL_ATTRIBUTE_ARTIFICIAL __attribute__ ((__artificial__))
+# else
+#  define _GL_ATTRIBUTE_ARTIFICIAL
+# endif
 #endif
 #endif
 
 
 /* _GL_ATTRIBUTE_COLD declares that the function is rarely executed.  */
 /* _GL_ATTRIBUTE_COLD declares that the function is rarely executed.  */
@@ -929,14 +999,16 @@
 /* Avoid __attribute__ ((cold)) on MinGW; see thread starting at
 /* Avoid __attribute__ ((cold)) on MinGW; see thread starting at
    <https://lists.gnu.org/r/emacs-devel/2019-04/msg01152.html>.
    <https://lists.gnu.org/r/emacs-devel/2019-04/msg01152.html>.
    Also, Oracle Studio 12.6 requires 'cold' not '__cold__'.  */
    Also, Oracle Studio 12.6 requires 'cold' not '__cold__'.  */
-#if _GL_HAS_ATTRIBUTE (cold) && !defined __MINGW32__
-# ifndef __SUNPRO_C
-#  define _GL_ATTRIBUTE_COLD __attribute__ ((__cold__))
+#ifndef _GL_ATTRIBUTE_COLD
+# if _GL_HAS_ATTRIBUTE (cold) && !defined __MINGW32__
+#  ifndef __SUNPRO_C
+#   define _GL_ATTRIBUTE_COLD __attribute__ ((__cold__))
+#  else
+#   define _GL_ATTRIBUTE_COLD __attribute__ ((cold))
+#  endif
 # else
 # else
-#  define _GL_ATTRIBUTE_COLD __attribute__ ((cold))
+#  define _GL_ATTRIBUTE_COLD
 # endif
 # endif
-#else
-# define _GL_ATTRIBUTE_COLD
 #endif
 #endif
 
 
 /* _GL_ATTRIBUTE_CONST declares that it is OK for a compiler to omit duplicate
 /* _GL_ATTRIBUTE_CONST declares that it is OK for a compiler to omit duplicate
@@ -946,10 +1018,12 @@
    forever, and does not call longjmp.
    forever, and does not call longjmp.
    (This attribute is stricter than _GL_ATTRIBUTE_PURE.)  */
    (This attribute is stricter than _GL_ATTRIBUTE_PURE.)  */
 /* Applies to: functions.  */
 /* Applies to: functions.  */
-#if _GL_HAS_ATTRIBUTE (const)
-# define _GL_ATTRIBUTE_CONST __attribute__ ((__const__))
-#else
-# define _GL_ATTRIBUTE_CONST
+#ifndef _GL_ATTRIBUTE_CONST
+# if _GL_HAS_ATTRIBUTE (const)
+#  define _GL_ATTRIBUTE_CONST __attribute__ ((__const__))
+# else
+#  define _GL_ATTRIBUTE_CONST
+# endif
 #endif
 #endif
 
 
 /* _GL_ATTRIBUTE_DEALLOC (F, I) declares that the function returns pointers
 /* _GL_ATTRIBUTE_DEALLOC (F, I) declares that the function returns pointers
@@ -958,16 +1032,25 @@
    _GL_ATTRIBUTE_DEALLOC_FREE declares that the function returns pointers that
    _GL_ATTRIBUTE_DEALLOC_FREE declares that the function returns pointers that
    can be freed via 'free'; it can be used only after declaring 'free'.  */
    can be freed via 'free'; it can be used only after declaring 'free'.  */
 /* Applies to: functions.  Cannot be used on inline functions.  */
 /* Applies to: functions.  Cannot be used on inline functions.  */
-#if _GL_GNUC_PREREQ (11, 0)
-# define _GL_ATTRIBUTE_DEALLOC(f, i) __attribute__ ((__malloc__ (f, i)))
-#else
-# define _GL_ATTRIBUTE_DEALLOC(f, i)
+#ifndef _GL_ATTRIBUTE_DEALLOC
+# if _GL_GNUC_PREREQ (11, 0)
+#  define _GL_ATTRIBUTE_DEALLOC(f, i) __attribute__ ((__malloc__ (f, i)))
+# else
+#  define _GL_ATTRIBUTE_DEALLOC(f, i)
+# endif
 #endif
 #endif
 /* If gnulib's <string.h> or <wchar.h> has already defined this macro, continue
 /* If gnulib's <string.h> or <wchar.h> has already defined this macro, continue
    to use this earlier definition, since <stdlib.h> may not have been included
    to use this earlier definition, since <stdlib.h> may not have been included
    yet.  */
    yet.  */
 #ifndef _GL_ATTRIBUTE_DEALLOC_FREE
 #ifndef _GL_ATTRIBUTE_DEALLOC_FREE
-# define _GL_ATTRIBUTE_DEALLOC_FREE _GL_ATTRIBUTE_DEALLOC (free, 1)
+# if defined __cplusplus && defined __GNUC__ && !defined __clang__
+/* Work around GCC bug <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108231> */
+#  define _GL_ATTRIBUTE_DEALLOC_FREE \
+     _GL_ATTRIBUTE_DEALLOC ((void (*) (void *)) free, 1)
+# else
+#  define _GL_ATTRIBUTE_DEALLOC_FREE \
+     _GL_ATTRIBUTE_DEALLOC (free, 1)
+# endif
 #endif
 #endif
 
 
 /* _GL_ATTRIBUTE_DEPRECATED: Declares that an entity is deprecated.
 /* _GL_ATTRIBUTE_DEPRECATED: Declares that an entity is deprecated.
@@ -978,12 +1061,20 @@
      - enumeration, enumeration item,
      - enumeration, enumeration item,
      - typedef,
      - typedef,
    in C++ also: namespace, class, template specialization.  */
    in C++ also: namespace, class, template specialization.  */
-#if _GL_HAS_C_ATTRIBUTE (deprecated)
-# define _GL_ATTRIBUTE_DEPRECATED [[__deprecated__]]
-#elif _GL_HAS_ATTRIBUTE (deprecated)
-# define _GL_ATTRIBUTE_DEPRECATED __attribute__ ((__deprecated__))
-#else
-# define _GL_ATTRIBUTE_DEPRECATED
+#ifndef _GL_ATTRIBUTE_DEPRECATED
+# ifndef _GL_BRACKET_BEFORE_ATTRIBUTE
+#  if _GL_HAVE___HAS_C_ATTRIBUTE
+#   if __has_c_attribute (__deprecated__)
+#    define _GL_ATTRIBUTE_DEPRECATED [[__deprecated__]]
+#   endif
+#  endif
+# endif
+# if !defined _GL_ATTRIBUTE_DEPRECATED && _GL_HAS_ATTRIBUTE (deprecated)
+#  define _GL_ATTRIBUTE_DEPRECATED __attribute__ ((__deprecated__))
+# endif
+# ifndef _GL_ATTRIBUTE_DEPRECATED
+#  define _GL_ATTRIBUTE_DEPRECATED
+# endif
 #endif
 #endif
 
 
 /* _GL_ATTRIBUTE_ERROR(msg) requests an error if a function is called and
 /* _GL_ATTRIBUTE_ERROR(msg) requests an error if a function is called and
@@ -991,24 +1082,28 @@
    _GL_ATTRIBUTE_WARNING(msg) requests a warning if a function is called and
    _GL_ATTRIBUTE_WARNING(msg) requests a warning if a function is called and
    the function call is not optimized away.  */
    the function call is not optimized away.  */
 /* Applies to: functions.  */
 /* Applies to: functions.  */
-#if _GL_HAS_ATTRIBUTE (error)
-# define _GL_ATTRIBUTE_ERROR(msg) __attribute__ ((__error__ (msg)))
-# define _GL_ATTRIBUTE_WARNING(msg) __attribute__ ((__warning__ (msg)))
-#elif _GL_HAS_ATTRIBUTE (diagnose_if)
-# define _GL_ATTRIBUTE_ERROR(msg) __attribute__ ((__diagnose_if__ (1, msg, "error")))
-# define _GL_ATTRIBUTE_WARNING(msg) __attribute__ ((__diagnose_if__ (1, msg, "warning")))
-#else
-# define _GL_ATTRIBUTE_ERROR(msg)
-# define _GL_ATTRIBUTE_WARNING(msg)
+#if !(defined _GL_ATTRIBUTE_ERROR && defined _GL_ATTRIBUTE_WARNING)
+# if _GL_HAS_ATTRIBUTE (error)
+#  define _GL_ATTRIBUTE_ERROR(msg) __attribute__ ((__error__ (msg)))
+#  define _GL_ATTRIBUTE_WARNING(msg) __attribute__ ((__warning__ (msg)))
+# elif _GL_HAS_ATTRIBUTE (diagnose_if)
+#  define _GL_ATTRIBUTE_ERROR(msg) __attribute__ ((__diagnose_if__ (1, msg, "error")))
+#  define _GL_ATTRIBUTE_WARNING(msg) __attribute__ ((__diagnose_if__ (1, msg, "warning")))
+# else
+#  define _GL_ATTRIBUTE_ERROR(msg)
+#  define _GL_ATTRIBUTE_WARNING(msg)
+# endif
 #endif
 #endif
 
 
 /* _GL_ATTRIBUTE_EXTERNALLY_VISIBLE declares that the entity should remain
 /* _GL_ATTRIBUTE_EXTERNALLY_VISIBLE declares that the entity should remain
    visible to debuggers etc., even with '-fwhole-program'.  */
    visible to debuggers etc., even with '-fwhole-program'.  */
 /* Applies to: functions, variables.  */
 /* Applies to: functions, variables.  */
-#if _GL_HAS_ATTRIBUTE (externally_visible)
-# define _GL_ATTRIBUTE_EXTERNALLY_VISIBLE __attribute__ ((externally_visible))
-#else
-# define _GL_ATTRIBUTE_EXTERNALLY_VISIBLE
+#ifndef _GL_ATTRIBUTE_EXTERNALLY_VISIBLE
+# if _GL_HAS_ATTRIBUTE (externally_visible)
+#  define _GL_ATTRIBUTE_EXTERNALLY_VISIBLE __attribute__ ((externally_visible))
+# else
+#  define _GL_ATTRIBUTE_EXTERNALLY_VISIBLE
+# endif
 #endif
 #endif
 
 
 /* _GL_ATTRIBUTE_FALLTHROUGH declares that it is not a programming mistake if
 /* _GL_ATTRIBUTE_FALLTHROUGH declares that it is not a programming mistake if
@@ -1016,12 +1111,18 @@
    'default' label.  The compiler should not warn in this case.  */
    'default' label.  The compiler should not warn in this case.  */
 /* Applies to: Empty statement (;), inside a 'switch' statement.  */
 /* Applies to: Empty statement (;), inside a 'switch' statement.  */
 /* Always expands to something.  */
 /* Always expands to something.  */
-#if _GL_HAS_C_ATTRIBUTE (fallthrough)
-# define _GL_ATTRIBUTE_FALLTHROUGH [[__fallthrough__]]
-#elif _GL_HAS_ATTRIBUTE (fallthrough)
-# define _GL_ATTRIBUTE_FALLTHROUGH __attribute__ ((__fallthrough__))
-#else
-# define _GL_ATTRIBUTE_FALLTHROUGH ((void) 0)
+#ifndef _GL_ATTRIBUTE_FALLTHROUGH
+# if _GL_HAVE___HAS_C_ATTRIBUTE
+#  if __has_c_attribute (__fallthrough__)
+#   define _GL_ATTRIBUTE_FALLTHROUGH [[__fallthrough__]]
+#  endif
+# endif
+# if !defined _GL_ATTRIBUTE_FALLTHROUGH && _GL_HAS_ATTRIBUTE (fallthrough)
+#  define _GL_ATTRIBUTE_FALLTHROUGH __attribute__ ((__fallthrough__))
+# endif
+# ifndef _GL_ATTRIBUTE_FALLTHROUGH
+#  define _GL_ATTRIBUTE_FALLTHROUGH ((void) 0)
+# endif
 #endif
 #endif
 
 
 /* _GL_ATTRIBUTE_FORMAT ((ARCHETYPE, STRING-INDEX, FIRST-TO-CHECK))
 /* _GL_ATTRIBUTE_FORMAT ((ARCHETYPE, STRING-INDEX, FIRST-TO-CHECK))
@@ -1035,10 +1136,12 @@
    If FIRST-TO-CHECK is not 0, arguments starting at FIRST-TO_CHECK
    If FIRST-TO-CHECK is not 0, arguments starting at FIRST-TO_CHECK
    are suitable for the format string.  */
    are suitable for the format string.  */
 /* Applies to: functions.  */
 /* Applies to: functions.  */
-#if _GL_HAS_ATTRIBUTE (format)
-# define _GL_ATTRIBUTE_FORMAT(spec) __attribute__ ((__format__ spec))
-#else
-# define _GL_ATTRIBUTE_FORMAT(spec)
+#ifndef _GL_ATTRIBUTE_FORMAT
+# if _GL_HAS_ATTRIBUTE (format)
+#  define _GL_ATTRIBUTE_FORMAT(spec) __attribute__ ((__format__ spec))
+# else
+#  define _GL_ATTRIBUTE_FORMAT(spec)
+# endif
 #endif
 #endif
 
 
 /* _GL_ATTRIBUTE_LEAF declares that if the function is called from some other
 /* _GL_ATTRIBUTE_LEAF declares that if the function is called from some other
@@ -1046,19 +1149,23 @@
    exception handling.  This declaration lets the compiler optimize that unit
    exception handling.  This declaration lets the compiler optimize that unit
    more aggressively.  */
    more aggressively.  */
 /* Applies to: functions.  */
 /* Applies to: functions.  */
-#if _GL_HAS_ATTRIBUTE (leaf)
-# define _GL_ATTRIBUTE_LEAF __attribute__ ((__leaf__))
-#else
-# define _GL_ATTRIBUTE_LEAF
+#ifndef _GL_ATTRIBUTE_LEAF
+# if _GL_HAS_ATTRIBUTE (leaf)
+#  define _GL_ATTRIBUTE_LEAF __attribute__ ((__leaf__))
+# else
+#  define _GL_ATTRIBUTE_LEAF
+# endif
 #endif
 #endif
 
 
 /* _GL_ATTRIBUTE_MALLOC declares that the function returns a pointer to freshly
 /* _GL_ATTRIBUTE_MALLOC declares that the function returns a pointer to freshly
    allocated memory.  */
    allocated memory.  */
 /* Applies to: functions.  */
 /* Applies to: functions.  */
-#if _GL_HAS_ATTRIBUTE (malloc)
-# define _GL_ATTRIBUTE_MALLOC __attribute__ ((__malloc__))
-#else
-# define _GL_ATTRIBUTE_MALLOC
+#ifndef _GL_ATTRIBUTE_MALLOC
+# if _GL_HAS_ATTRIBUTE (malloc)
+#  define _GL_ATTRIBUTE_MALLOC __attribute__ ((__malloc__))
+# else
+#  define _GL_ATTRIBUTE_MALLOC
+# endif
 #endif
 #endif
 
 
 /* _GL_ATTRIBUTE_MAY_ALIAS declares that pointers to the type may point to the
 /* _GL_ATTRIBUTE_MAY_ALIAS declares that pointers to the type may point to the
@@ -1066,10 +1173,12 @@
    strict aliasing optimization.  */
    strict aliasing optimization.  */
 /* Applies to: types.  */
 /* Applies to: types.  */
 /* Oracle Studio 12.6 mishandles may_alias despite __has_attribute OK.  */
 /* Oracle Studio 12.6 mishandles may_alias despite __has_attribute OK.  */
-#if _GL_HAS_ATTRIBUTE (may_alias) && !defined __SUNPRO_C
-# define _GL_ATTRIBUTE_MAY_ALIAS __attribute__ ((__may_alias__))
-#else
-# define _GL_ATTRIBUTE_MAY_ALIAS
+#ifndef _GL_ATTRIBUTE_MAY_ALIAS
+# if _GL_HAS_ATTRIBUTE (may_alias) && !defined __SUNPRO_C
+#  define _GL_ATTRIBUTE_MAY_ALIAS __attribute__ ((__may_alias__))
+# else
+#  define _GL_ATTRIBUTE_MAY_ALIAS
+# endif
 #endif
 #endif
 
 
 /* _GL_ATTRIBUTE_MAYBE_UNUSED declares that it is not a programming mistake if
 /* _GL_ATTRIBUTE_MAYBE_UNUSED declares that it is not a programming mistake if
@@ -1081,15 +1190,29 @@
      - enumeration, enumeration item,
      - enumeration, enumeration item,
      - typedef,
      - typedef,
    in C++ also: class.  */
    in C++ also: class.  */
-/* In C++ and C2x, this is spelled [[__maybe_unused__]].
+/* In C++ and C23, this is spelled [[__maybe_unused__]].
    GCC's syntax is __attribute__ ((__unused__)).
    GCC's syntax is __attribute__ ((__unused__)).
-   clang supports both syntaxes.  */
-#if _GL_HAS_C_ATTRIBUTE (maybe_unused)
-# define _GL_ATTRIBUTE_MAYBE_UNUSED [[__maybe_unused__]]
-#else
-# define _GL_ATTRIBUTE_MAYBE_UNUSED _GL_ATTRIBUTE_UNUSED
+   clang supports both syntaxes.  Except that with clang ≥ 6, < 10, in C++ mode,
+   __has_c_attribute (__maybe_unused__) yields true but the use of
+   [[__maybe_unused__]] nevertheless produces a warning.  */
+#ifndef _GL_ATTRIBUTE_MAYBE_UNUSED
+# ifndef _GL_BRACKET_BEFORE_ATTRIBUTE
+#  if defined __clang__ && defined __cplusplus
+#   if !defined __apple_build_version__ && __clang_major__ >= 10
+#    define _GL_ATTRIBUTE_MAYBE_UNUSED [[__maybe_unused__]]
+#   endif
+#  elif _GL_HAVE___HAS_C_ATTRIBUTE
+#   if __has_c_attribute (__maybe_unused__)
+#    define _GL_ATTRIBUTE_MAYBE_UNUSED [[__maybe_unused__]]
+#   endif
+#  endif
+# endif
+# ifndef _GL_ATTRIBUTE_MAYBE_UNUSED
+#  define _GL_ATTRIBUTE_MAYBE_UNUSED _GL_ATTRIBUTE_UNUSED
+# endif
 #endif
 #endif
-/* Alternative spelling of this macro, for convenience.  */
+/* Alternative spelling of this macro, for convenience and for
+   compatibility with glibc/include/libc-symbols.h.  */
 #define _GL_UNUSED _GL_ATTRIBUTE_MAYBE_UNUSED
 #define _GL_UNUSED _GL_ATTRIBUTE_MAYBE_UNUSED
 /* Earlier spellings of this macro.  */
 /* Earlier spellings of this macro.  */
 #define _UNUSED_PARAMETER_ _GL_ATTRIBUTE_MAYBE_UNUSED
 #define _UNUSED_PARAMETER_ _GL_ATTRIBUTE_MAYBE_UNUSED
@@ -1098,21 +1221,40 @@
    discard the return value.  The compiler may warn if the caller does not use
    discard the return value.  The compiler may warn if the caller does not use
    the return value, unless the caller uses something like ignore_value.  */
    the return value, unless the caller uses something like ignore_value.  */
 /* Applies to: function, enumeration, class.  */
 /* Applies to: function, enumeration, class.  */
-#if _GL_HAS_C_ATTRIBUTE (nodiscard)
-# define _GL_ATTRIBUTE_NODISCARD [[__nodiscard__]]
-#elif _GL_HAS_ATTRIBUTE (warn_unused_result)
-# define _GL_ATTRIBUTE_NODISCARD __attribute__ ((__warn_unused_result__))
-#else
-# define _GL_ATTRIBUTE_NODISCARD
+#ifndef _GL_ATTRIBUTE_NODISCARD
+# ifndef _GL_BRACKET_BEFORE_ATTRIBUTE
+#  if defined __clang__ && defined __cplusplus
+  /* With clang up to 15.0.6 (at least), in C++ mode, [[__nodiscard__]] produces
+     a warning.
+     The 1000 below means a yet unknown threshold.  When clang++ version X
+     starts supporting [[__nodiscard__]] without warning about it, you can
+     replace the 1000 with X.  */
+#   if __clang_major__ >= 1000
+#    define _GL_ATTRIBUTE_NODISCARD [[__nodiscard__]]
+#   endif
+#  elif _GL_HAVE___HAS_C_ATTRIBUTE
+#   if __has_c_attribute (__nodiscard__)
+#    define _GL_ATTRIBUTE_NODISCARD [[__nodiscard__]]
+#   endif
+#  endif
+# endif
+# if !defined _GL_ATTRIBUTE_NODISCARD && _GL_HAS_ATTRIBUTE (warn_unused_result)
+#  define _GL_ATTRIBUTE_NODISCARD __attribute__ ((__warn_unused_result__))
+# endif
+# ifndef _GL_ATTRIBUTE_NODISCARD
+#  define _GL_ATTRIBUTE_NODISCARD
+# endif
 #endif
 #endif
 
 
 /* _GL_ATTRIBUTE_NOINLINE tells that the compiler should not inline the
 /* _GL_ATTRIBUTE_NOINLINE tells that the compiler should not inline the
    function.  */
    function.  */
 /* Applies to: functions.  */
 /* Applies to: functions.  */
-#if _GL_HAS_ATTRIBUTE (noinline)
-# define _GL_ATTRIBUTE_NOINLINE __attribute__ ((__noinline__))
-#else
-# define _GL_ATTRIBUTE_NOINLINE
+#ifndef _GL_ATTRIBUTE_NOINLINE
+# if _GL_HAS_ATTRIBUTE (noinline)
+#  define _GL_ATTRIBUTE_NOINLINE __attribute__ ((__noinline__))
+# else
+#  define _GL_ATTRIBUTE_NOINLINE
+# endif
 #endif
 #endif
 
 
 /* _GL_ATTRIBUTE_NONNULL ((N1, N2,...)) declares that the arguments N1, N2,...
 /* _GL_ATTRIBUTE_NONNULL ((N1, N2,...)) declares that the arguments N1, N2,...
@@ -1120,20 +1262,24 @@
    _GL_ATTRIBUTE_NONNULL () declares that all pointer arguments must not be
    _GL_ATTRIBUTE_NONNULL () declares that all pointer arguments must not be
    null.  */
    null.  */
 /* Applies to: functions.  */
 /* Applies to: functions.  */
-#if _GL_HAS_ATTRIBUTE (nonnull)
-# define _GL_ATTRIBUTE_NONNULL(args) __attribute__ ((__nonnull__ args))
-#else
-# define _GL_ATTRIBUTE_NONNULL(args)
+#ifndef _GL_ATTRIBUTE_NONNULL
+# if _GL_HAS_ATTRIBUTE (nonnull)
+#  define _GL_ATTRIBUTE_NONNULL(args) __attribute__ ((__nonnull__ args))
+# else
+#  define _GL_ATTRIBUTE_NONNULL(args)
+# endif
 #endif
 #endif
 
 
 /* _GL_ATTRIBUTE_NONSTRING declares that the contents of a character array is
 /* _GL_ATTRIBUTE_NONSTRING declares that the contents of a character array is
    not meant to be NUL-terminated.  */
    not meant to be NUL-terminated.  */
 /* Applies to: struct/union members and variables that are arrays of element
 /* Applies to: struct/union members and variables that are arrays of element
    type '[[un]signed] char'.  */
    type '[[un]signed] char'.  */
-#if _GL_HAS_ATTRIBUTE (nonstring)
-# define _GL_ATTRIBUTE_NONSTRING __attribute__ ((__nonstring__))
-#else
-# define _GL_ATTRIBUTE_NONSTRING
+#ifndef _GL_ATTRIBUTE_NONSTRING
+# if _GL_HAS_ATTRIBUTE (nonstring)
+#  define _GL_ATTRIBUTE_NONSTRING __attribute__ ((__nonstring__))
+# else
+#  define _GL_ATTRIBUTE_NONSTRING
+# endif
 #endif
 #endif
 
 
 /* There is no _GL_ATTRIBUTE_NORETURN; use _Noreturn instead.  */
 /* There is no _GL_ATTRIBUTE_NORETURN; use _Noreturn instead.  */
@@ -1141,10 +1287,26 @@
 /* _GL_ATTRIBUTE_NOTHROW declares that the function does not throw exceptions.
 /* _GL_ATTRIBUTE_NOTHROW declares that the function does not throw exceptions.
  */
  */
 /* Applies to: functions.  */
 /* Applies to: functions.  */
-#if _GL_HAS_ATTRIBUTE (nothrow) && !defined __cplusplus
-# define _GL_ATTRIBUTE_NOTHROW __attribute__ ((__nothrow__))
-#else
-# define _GL_ATTRIBUTE_NOTHROW
+/* After a function's parameter list, this attribute must come first, before
+   other attributes.  */
+#ifndef _GL_ATTRIBUTE_NOTHROW
+# if defined __cplusplus
+#  if _GL_GNUC_PREREQ (2, 8) || __clang_major >= 4
+#   if __cplusplus >= 201103L
+#    define _GL_ATTRIBUTE_NOTHROW noexcept (true)
+#   else
+#    define _GL_ATTRIBUTE_NOTHROW throw ()
+#   endif
+#  else
+#   define _GL_ATTRIBUTE_NOTHROW
+#  endif
+# else
+#  if _GL_HAS_ATTRIBUTE (nothrow)
+#   define _GL_ATTRIBUTE_NOTHROW __attribute__ ((__nothrow__))
+#  else
+#   define _GL_ATTRIBUTE_NOTHROW
+#  endif
+# endif
 #endif
 #endif
 
 
 /* _GL_ATTRIBUTE_PACKED declares:
 /* _GL_ATTRIBUTE_PACKED declares:
@@ -1153,10 +1315,12 @@
    minimizing the memory required.  */
    minimizing the memory required.  */
 /* Applies to: struct members, struct, union,
 /* Applies to: struct members, struct, union,
    in C++ also: class.  */
    in C++ also: class.  */
-#if _GL_HAS_ATTRIBUTE (packed)
-# define _GL_ATTRIBUTE_PACKED __attribute__ ((__packed__))
-#else
-# define _GL_ATTRIBUTE_PACKED
+#ifndef _GL_ATTRIBUTE_PACKED
+# if _GL_HAS_ATTRIBUTE (packed)
+#  define _GL_ATTRIBUTE_PACKED __attribute__ ((__packed__))
+# else
+#  define _GL_ATTRIBUTE_PACKED
+# endif
 #endif
 #endif
 
 
 /* _GL_ATTRIBUTE_PURE declares that It is OK for a compiler to omit duplicate
 /* _GL_ATTRIBUTE_PURE declares that It is OK for a compiler to omit duplicate
@@ -1166,19 +1330,23 @@
    observable state, and always returns exactly once.
    observable state, and always returns exactly once.
    (This attribute is looser than _GL_ATTRIBUTE_CONST.)  */
    (This attribute is looser than _GL_ATTRIBUTE_CONST.)  */
 /* Applies to: functions.  */
 /* Applies to: functions.  */
-#if _GL_HAS_ATTRIBUTE (pure)
-# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__))
-#else
-# define _GL_ATTRIBUTE_PURE
+#ifndef _GL_ATTRIBUTE_PURE
+# if _GL_HAS_ATTRIBUTE (pure)
+#  define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__))
+# else
+#  define _GL_ATTRIBUTE_PURE
+# endif
 #endif
 #endif
 
 
 /* _GL_ATTRIBUTE_RETURNS_NONNULL declares that the function's return value is
 /* _GL_ATTRIBUTE_RETURNS_NONNULL declares that the function's return value is
    a non-NULL pointer.  */
    a non-NULL pointer.  */
 /* Applies to: functions.  */
 /* Applies to: functions.  */
-#if _GL_HAS_ATTRIBUTE (returns_nonnull)
-# define _GL_ATTRIBUTE_RETURNS_NONNULL __attribute__ ((__returns_nonnull__))
-#else
-# define _GL_ATTRIBUTE_RETURNS_NONNULL
+#ifndef _GL_ATTRIBUTE_RETURNS_NONNULL
+# if _GL_HAS_ATTRIBUTE (returns_nonnull)
+#  define _GL_ATTRIBUTE_RETURNS_NONNULL __attribute__ ((__returns_nonnull__))
+# else
+#  define _GL_ATTRIBUTE_RETURNS_NONNULL
+# endif
 #endif
 #endif
 
 
 /* _GL_ATTRIBUTE_SENTINEL(pos) declares that the variadic function expects a
 /* _GL_ATTRIBUTE_SENTINEL(pos) declares that the variadic function expects a
@@ -1186,17 +1354,21 @@
    _GL_ATTRIBUTE_SENTINEL () - The last argument is NULL (requires C99).
    _GL_ATTRIBUTE_SENTINEL () - The last argument is NULL (requires C99).
    _GL_ATTRIBUTE_SENTINEL ((N)) - The (N+1)st argument from the end is NULL.  */
    _GL_ATTRIBUTE_SENTINEL ((N)) - The (N+1)st argument from the end is NULL.  */
 /* Applies to: functions.  */
 /* Applies to: functions.  */
-#if _GL_HAS_ATTRIBUTE (sentinel)
-# define _GL_ATTRIBUTE_SENTINEL(pos) __attribute__ ((__sentinel__ pos))
-#else
-# define _GL_ATTRIBUTE_SENTINEL(pos)
+#ifndef _GL_ATTRIBUTE_SENTINEL
+# if _GL_HAS_ATTRIBUTE (sentinel)
+#  define _GL_ATTRIBUTE_SENTINEL(pos) __attribute__ ((__sentinel__ pos))
+# else
+#  define _GL_ATTRIBUTE_SENTINEL(pos)
+# endif
 #endif
 #endif
 
 
 /* A helper macro.  Don't use it directly.  */
 /* A helper macro.  Don't use it directly.  */
-#if _GL_HAS_ATTRIBUTE (unused)
-# define _GL_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
-#else
-# define _GL_ATTRIBUTE_UNUSED
+#ifndef _GL_ATTRIBUTE_UNUSED
+# if _GL_HAS_ATTRIBUTE (unused)
+#  define _GL_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
+# else
+#  define _GL_ATTRIBUTE_UNUSED
+# endif
 #endif
 #endif
 
 
 
 
@@ -1206,10 +1378,24 @@
 /* Applies to: label (both in C and C++).  */
 /* Applies to: label (both in C and C++).  */
 /* Note that g++ < 4.5 does not support the '__attribute__ ((__unused__)) ;'
 /* Note that g++ < 4.5 does not support the '__attribute__ ((__unused__)) ;'
    syntax.  But clang does.  */
    syntax.  But clang does.  */
-#if !(defined __cplusplus && !_GL_GNUC_PREREQ (4, 5)) || defined __clang__
-# define _GL_UNUSED_LABEL _GL_ATTRIBUTE_UNUSED
+#ifndef _GL_UNUSED_LABEL
+# if !(defined __cplusplus && !_GL_GNUC_PREREQ (4, 5)) || defined __clang__
+#  define _GL_UNUSED_LABEL _GL_ATTRIBUTE_UNUSED
+# else
+#  define _GL_UNUSED_LABEL
+# endif
+#endif
+
+
+/* In C++, there is the concept of "language linkage", that encompasses
+    name mangling and function calling conventions.
+    The following macros start and end a block of "C" linkage.  */
+#ifdef __cplusplus
+# define _GL_BEGIN_C_LINKAGE extern "C" {
+# define _GL_END_C_LINKAGE }
 #else
 #else
-# define _GL_UNUSED_LABEL
+# define _GL_BEGIN_C_LINKAGE
+# define _GL_END_C_LINKAGE
 #endif
 #endif
 
 
 
 
@@ -1292,3 +1478,37 @@
 
 
 /* Define as a macro for copying va_list variables. */
 /* Define as a macro for copying va_list variables. */
 /* #undef va_copy */
 /* #undef va_copy */
+
+#ifndef HAVE_C_BOOL
+# if !defined __cplusplus && !defined __bool_true_false_are_defined
+#  if HAVE_STDBOOL_H
+#   include <stdbool.h>
+#  else
+#   if defined __SUNPRO_C
+#    error "<stdbool.h> is not usable with this configuration. To make it usable, add -D_STDC_C99= to $CC."
+#   else
+#    error "<stdbool.h> does not exist on this platform. Use gnulib module 'stdbool-c99' instead of gnulib module 'stdbool'."
+#   endif
+#  endif
+# endif
+# if !true
+#  define true (!false)
+# endif
+#endif
+
+#if (!defined HAVE_C_STATIC_ASSERT && !defined assert \
+     && (!defined __cplusplus \
+         || (__cpp_static_assert < 201411 \
+             && __GNUG__ < 6 && __clang_major__ < 6)))
+ #include <assert.h>
+ #undef/**/assert
+ #ifdef __sgi
+  #undef/**/__ASSERT_H__
+ #endif
+ /* Solaris 11.4 <assert.h> defines static_assert as a macro with 2 arguments.
+    We need it also to be invocable with a single argument.  */
+ #if defined __sun && (__STDC_VERSION__ - 0 >= 201112L) && !defined __cplusplus
+  #undef/**/static_assert
+  #define static_assert _Static_assert
+ #endif
+#endif

+ 1 - 1
contrib/libs/libidn/gl/alloca.h

@@ -1,7 +1,7 @@
 /* DO NOT EDIT! GENERATED AUTOMATICALLY! */
 /* DO NOT EDIT! GENERATED AUTOMATICALLY! */
 /* Memory allocation on the stack.
 /* Memory allocation on the stack.
 
 
-   Copyright (C) 1995, 1999, 2001-2004, 2006-2022 Free Software Foundation,
+   Copyright (C) 1995, 1999, 2001-2004, 2006-2024 Free Software Foundation,
    Inc.
    Inc.
 
 
    This file is free software: you can redistribute it and/or modify
    This file is free software: you can redistribute it and/or modify

+ 1 - 2
contrib/libs/libidn/gl/basename-lgpl.c

@@ -1,6 +1,6 @@
 /* basename.c -- return the last element in a file name
 /* basename.c -- return the last element in a file name
 
 
-   Copyright (C) 1990, 1998-2001, 2003-2006, 2009-2022 Free Software
+   Copyright (C) 1990, 1998-2001, 2003-2006, 2009-2024 Free Software
    Foundation, Inc.
    Foundation, Inc.
 
 
    This file is free software: you can redistribute it and/or modify
    This file is free software: you can redistribute it and/or modify
@@ -21,7 +21,6 @@
 /* Specification.  */
 /* Specification.  */
 #include "basename-lgpl.h"
 #include "basename-lgpl.h"
 
 
-#include <stdbool.h>
 #include <string.h>
 #include <string.h>
 
 
 #include "filename.h"
 #include "filename.h"

+ 6 - 1
contrib/libs/libidn/gl/basename-lgpl.h

@@ -1,6 +1,6 @@
 /* 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-2022 Free Software Foundation,
+   Copyright (C) 1998, 2001, 2003-2006, 2009-2024 Free Software Foundation,
    Inc.
    Inc.
 
 
    This file is free software: you can redistribute it and/or modify
    This file is free software: you can redistribute it and/or modify
@@ -19,6 +19,11 @@
 #ifndef _BASENAME_LGPL_H
 #ifndef _BASENAME_LGPL_H
 #define _BASENAME_LGPL_H
 #define _BASENAME_LGPL_H
 
 
+/* This file uses _GL_ATTRIBUTE_PURE.  */
+#if !_GL_CONFIG_H_INCLUDED
+ #error "Please include config.h first."
+#endif
+
 #include <stddef.h>
 #include <stddef.h>
 
 
 #ifndef DOUBLE_SLASH_IS_DISTINCT_ROOT
 #ifndef DOUBLE_SLASH_IS_DISTINCT_ROOT

Some files were not shown because too many files changed in this diff