]> git.eshelyaron.com Git - emacs.git/commitdiff
Update from Gnulib by running admin/merge-gnulib
authorPaul Eggert <eggert@cs.ucla.edu>
Mon, 23 Dec 2024 21:55:59 +0000 (13:55 -0800)
committerEshel Yaron <me@eshelyaron.com>
Fri, 27 Dec 2024 15:45:06 +0000 (16:45 +0100)
(cherry picked from commit cf5e58a14dedabd65dee297ee2a2abb05cd4449d)

14 files changed:
doc/misc/texinfo.tex
lib/endian.c
lib/intprops-internal.h
lib/limits.in.h
lib/signal.in.h
lib/stdbit.c
lib/stdbit.in.h
lib/stdio.in.h
lib/stdlib.c
lib/stdlib.in.h
lib/string.in.h
lib/unistd.c
m4/stdint.m4
m4/stdlib_h.m4

index c336124c9f9162e2b0a87d7df7e01f6fe371673b..456696f4c9e7913b06a314a91f81d0170ac7bf00 100644 (file)
@@ -3,7 +3,7 @@
 % Load plain if necessary, i.e., if running under initex.
 \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
 %
-\def\texinfoversion{2024-02-15.11}
+\def\texinfoversion{2024-11-04.20}
 %
 % Copyright 1985, 1986, 1988, 1990-2024 Free Software Foundation, Inc.
 %
@@ -951,7 +951,11 @@ where each line of input produces a line of output.}
 \let\setfilename=\comment
 
 % @bye.
-\outer\def\bye{\chappager\pagelabels\tracingstats=1\ptexend}
+\outer\def\bye{%
+  \chappager\pagelabels
+  % possibly set in \printindex
+  \ifx\byeerror\relax\else\errmessage{\byeerror}\fi
+  \tracingstats=1\ptexend}
 
 
 \message{pdf,}
@@ -3126,11 +3130,12 @@ end
 % at the end of the line, or no break at all here.
 %   Changing the value of the penalty and/or the amount of stretch affects how
 % preferable one choice is over the other.
+%   Check test cases in doc/texinfo-tex-test.texi before making any changes.
 \def\urefallowbreak{%
   \penalty0\relax
-  \hskip 0pt plus 2 em\relax
+  \hskip 0pt plus 3 em\relax
   \penalty1000\relax
-  \hskip 0pt plus -2 em\relax
+  \hskip 0pt plus -3 em\relax
 }
 
 \urefbreakstyle after
@@ -5438,6 +5443,9 @@ $$%
   \closein 1
 \endgroup}
 
+% Checked in @bye
+\let\byeerror\relax
+
 % If the index file starts with a backslash, forgo reading the index
 % file altogether.  If somebody upgrades texinfo.tex they may still have
 % old index files using \ as the escape character.  Reading this would
@@ -5446,7 +5454,9 @@ $$%
   \ifflagclear{txiindexescapeisbackslash}{%
     \uccode`\~=`\\ \uppercase{\if\noexpand~}\noexpand#1
       \ifflagclear{txiskipindexfileswithbackslash}{%
-\errmessage{%
+        % Delay the error message until the very end to give a chance
+        % for the whole index to be output as input for texindex.
+        \global\def\byeerror{%
 ERROR: A sorted index file in an obsolete format was skipped.
 To fix this problem, please upgrade your version of 'texi2dvi'
 or 'texi2pdf' to that at <https://ftp.gnu.org/gnu/texinfo>.
@@ -5567,7 +5577,7 @@ might help (with 'rm \jobname.?? \jobname.??s')%
 % \entry typesets a paragraph consisting of the text (#1), dot leaders, and
 % then page number (#2) flushed to the right margin.  It is used for index
 % and table of contents entries.  The paragraph is indented by \leftskip.
-%
+% If \tocnodetarget is set, link text to the referenced node.
 \def\entry{%
   \begingroup
     %
@@ -5608,7 +5618,13 @@ might help (with 'rm \jobname.?? \jobname.??s')%
     \global\setbox\boxA=\hbox\bgroup
       \ifpdforxetex
         \iflinkentrytext
-          \pdflinkpage{#1}{\unhbox\boxA}%
+          \ifx\tocnodetarget\empty
+            \unhbox\boxA
+          \else
+            \startxreflink{\tocnodetarget}{}%
+            \unhbox\boxA
+            \endlink
+          \fi
         \else
           \unhbox\boxA
         \fi
@@ -5625,11 +5641,18 @@ might help (with 'rm \jobname.?? \jobname.??s')%
         %
         \null\nobreak\indexdotfill % Have leaders before the page number.
         %
+        \hskip\skip\thinshrinkable
         \ifpdforxetex
-          \pdfgettoks#1.%
-          \hskip\skip\thinshrinkable\the\toksA
+          \ifx\tocnodetarget\empty
+            \pdfgettoks#1.%
+            \the\toksA
+          \else
+            % Should just be a single page number in toc
+            \startxreflink{\tocnodetarget}{}%
+            #1\endlink
+          \fi
         \else
-          \hskip\skip\thinshrinkable #1%
+          #1%
         \fi
       \fi
     \egroup % end \boxA
@@ -6892,7 +6915,7 @@ might help (with 'rm \jobname.?? \jobname.??s')%
   \vskip 0pt plus 5\baselineskip
   \penalty-300
   \vskip 0pt plus -5\baselineskip
-  \dochapentry{#1}{\numeralbox}{}%
+  \dochapentry{#1}{\numeralbox}{#3}{}%
 }
 %
 % Parts, in the short toc.
@@ -6905,12 +6928,12 @@ might help (with 'rm \jobname.?? \jobname.??s')%
 % Chapters, in the main contents.
 \def\numchapentry#1#2#3#4{%
   \retrievesecnowidth\secnowidthchap{#2}%
-  \dochapentry{#1}{#2}{#4}%
+  \dochapentry{#1}{#2}{#3}{#4}%
 }
 
 % Chapters, in the short toc.
 \def\shortchapentry#1#2#3#4{%
-  \tocentry{#1}{\shortchaplabel{#2}}{#4}%
+  \tocentry{#1}{\shortchaplabel{#2}}{#3}{#4}%
 }
 
 % Appendices, in the main contents.
@@ -6923,79 +6946,77 @@ might help (with 'rm \jobname.?? \jobname.??s')%
 %
 \def\appentry#1#2#3#4{%
   \retrievesecnowidth\secnowidthchap{#2}%
-  \dochapentry{\appendixbox{#2}\hskip.7em#1}{}{#4}%
+  \dochapentry{\appendixbox{#2}\hskip.7em#1}{}{#3}{#4}%
 }
 
 % Unnumbered chapters.
-\def\unnchapentry#1#2#3#4{\dochapentry{#1}{}{#4}}
-\def\shortunnchapentry#1#2#3#4{\tocentry{#1}{}{#4}}
+\def\unnchapentry#1#2#3#4{\dochapentry{#1}{}{#3}{#4}}
+\def\shortunnchapentry#1#2#3#4{\tocentry{#1}{}{#3}{#4}}
 
 % Sections.
-\def\numsecentry#1#2#3#4{\dosecentry{#1}{#2}{#4}}
-
 \def\numsecentry#1#2#3#4{%
   \retrievesecnowidth\secnowidthsec{#2}%
-  \dosecentry{#1}{#2}{#4}%
+  \dosecentry{#1}{#2}{#3}{#4}%
 }
 \let\appsecentry=\numsecentry
 \def\unnsecentry#1#2#3#4{%
   \retrievesecnowidth\secnowidthsec{#2}%
-  \dosecentry{#1}{}{#4}%
+  \dosecentry{#1}{}{#3}{#4}%
 }
 
 % Subsections.
 \def\numsubsecentry#1#2#3#4{%
   \retrievesecnowidth\secnowidthssec{#2}%
-  \dosubsecentry{#1}{#2}{#4}%
+  \dosubsecentry{#1}{#2}{#3}{#4}%
 }
 \let\appsubsecentry=\numsubsecentry
 \def\unnsubsecentry#1#2#3#4{%
   \retrievesecnowidth\secnowidthssec{#2}%
-  \dosubsecentry{#1}{}{#4}%
+  \dosubsecentry{#1}{}{#3}{#4}%
 }
 
 % And subsubsections.
-\def\numsubsubsecentry#1#2#3#4{\dosubsubsecentry{#1}{#2}{#4}}
+\def\numsubsubsecentry#1#2#3#4{\dosubsubsecentry{#1}{#2}{#3}{#4}}
 \let\appsubsubsecentry=\numsubsubsecentry
-\def\unnsubsubsecentry#1#2#3#4{\dosubsubsecentry{#1}{}{#4}}
+\def\unnsubsubsecentry#1#2#3#4{\dosubsubsecentry{#1}{}{#3}{#4}}
 
 % This parameter controls the indentation of the various levels.
 % Same as \defaultparindent.
 \newdimen\tocindent \tocindent = 15pt
 
 % Now for the actual typesetting. In all these, #1 is the text, #2 is
-% a section number if present, and #3 is the page number.
+% a section number if present, #3 is the node, and #4 is the page number.
 %
 % If the toc has to be broken over pages, we want it to be at chapters
 % if at all possible; hence the \penalty.
-\def\dochapentry#1#2#3{%
+\def\dochapentry#1#2#3#4{%
    \penalty-300 \vskip1\baselineskip plus.33\baselineskip minus.25\baselineskip
    \begingroup
      % Move the page numbers slightly to the right
      \advance\entryrightmargin by -0.05em
      \chapentryfonts
      \extrasecnoskip=0.4em % separate chapter number more
-     \tocentry{#1}{#2}{#3}%
+     \tocentry{#1}{#2}{#3}{#4}%
    \endgroup
    \nobreak\vskip .25\baselineskip plus.1\baselineskip
 }
 
-\def\dosecentry#1#2#3{\begingroup
+\def\dosecentry#1#2#3#4{\begingroup
   \secnowidth=\secnowidthchap
   \secentryfonts \leftskip=\tocindent
-  \tocentry{#1}{#2}{#3}%
+  \tocentry{#1}{#2}{#3}{#4}%
 \endgroup}
 
-\def\dosubsecentry#1#2#3{\begingroup
+\def\dosubsecentry#1#2#3#4{\begingroup
   \secnowidth=\secnowidthsec
   \subsecentryfonts \leftskip=2\tocindent
-  \tocentry{#1}{#2}{#3}%
+  \tocentry{#1}{#2}{#3}{#4}%
 \endgroup}
 
-\def\dosubsubsecentry#1#2#3{\begingroup
+\def\dosubsubsecentry#1#2#3#4{\begingroup
   \secnowidth=\secnowidthssec
   \subsubsecentryfonts \leftskip=3\tocindent
-  \tocentry{#1}{#2}{#3}%
+  \tocentry{#1}{#2}{#3}{#4}%
 \endgroup}
 
 % Used for the maximum width of a section number so we can align
@@ -7005,12 +7026,15 @@ might help (with 'rm \jobname.?? \jobname.??s')%
 \newdimen\extrasecnoskip
 \extrasecnoskip=0pt
 
-% \tocentry{TITLE}{SEC NO}{PAGE}
+\let\tocnodetarget\empty
+
+% \tocentry{TITLE}{SEC NO}{NODE}{PAGE}
 %
-\def\tocentry#1#2#3{%
+\def\tocentry#1#2#3#4{%
+  \def\tocnodetarget{#3}%
   \def\secno{#2}%
   \ifx\empty\secno
-    \entry{#1}{#3}%
+    \entry{#1}{#4}%
   \else
     \ifdim 0pt=\secnowidth
       \setbox0=\hbox{#2\hskip\labelspace\hskip\extrasecnoskip}%
@@ -7021,7 +7045,7 @@ might help (with 'rm \jobname.?? \jobname.??s')%
         #2\hskip\labelspace\hskip\extrasecnoskip\hfill}%
     \fi
     \entrycontskip=\wd0
-    \entry{\box0 #1}{#3}%
+    \entry{\box0 #1}{#4}%
   \fi
 }
 \newdimen\labelspace
@@ -10515,6 +10539,16 @@ directory should work if nowhere else does.}
   \catcode"#1=\other
 }
 
+% Suppress ligature creation from adjacent characters.
+\ifx\luatexversion\thisisundefined
+  \def\nolig{{}}
+\else
+  % Braces do not suppress ligature creation in LuaTeX, e.g. in of{}fice
+  % to suppress the "ff" ligature.  Using a kern appears to be the only
+  % workaround.
+  \def\nolig{\kern0pt{}}
+\fi
+
 % https://en.wikipedia.org/wiki/Plane_(Unicode)#Basic_M
 % U+0000..U+007F = https://en.wikipedia.org/wiki/Basic_Latin_(Unicode_block)
 % U+0080..U+00FF = https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)
@@ -11132,8 +11166,8 @@ directory should work if nowhere else does.}
   % Punctuation
   \DeclareUnicodeCharacter{2013}{--}%
   \DeclareUnicodeCharacter{2014}{---}%
-  \DeclareUnicodeCharacter{2018}{\quoteleft{}}%
-  \DeclareUnicodeCharacter{2019}{\quoteright{}}%
+  \DeclareUnicodeCharacter{2018}{\quoteleft\nolig}%
+  \DeclareUnicodeCharacter{2019}{\quoteright\nolig}%
   \DeclareUnicodeCharacter{201A}{\quotesinglbase{}}%
   \DeclareUnicodeCharacter{201C}{\quotedblleft{}}%
   \DeclareUnicodeCharacter{201D}{\quotedblright{}}%
@@ -11168,7 +11202,7 @@ directory should work if nowhere else does.}
   \DeclareUnicodeCharacter{2287}{\ensuremath\supseteq}%
   %
   \DeclareUnicodeCharacter{2016}{\ensuremath\Vert}%
-  \DeclareUnicodeCharacter{2032}{\ensuremath\prime}%
+  \DeclareUnicodeCharacter{2032}{\ensuremath{^\prime}}%
   \DeclareUnicodeCharacter{210F}{\ensuremath\hbar}%
   \DeclareUnicodeCharacter{2111}{\ensuremath\Im}%
   \DeclareUnicodeCharacter{2113}{\ensuremath\ell}%
index 3e7e56f523d54521cd5319a761e706abea6916a5..089f5f7825e83e33b578ed7d554d2f514ff078bf 100644 (file)
@@ -17,7 +17,7 @@
 
 /* Written by Collin Funk.  */
 
+#define _GL_ENDIAN_INLINE _GL_EXTERN_INLINE
 #include <config.h>
 
-#define _GL_ENDIAN_INLINE _GL_EXTERN_INLINE
 #include <endian.h>
index c8cc0e20194db34f40353b1818f3c9e7529487f4..0b7e1f539aa7f182115670fcd97acc72b603f0c2 100644 (file)
 
 /* Does the __typeof__ keyword work?  This could be done by
    'configure', but for now it's easier to do it by hand.  */
-#if (2 <= __GNUC__ \
-     || (4 <= __clang_major__) \
-     || (1210 <= __IBMC__ && defined __IBM__TYPEOF__) \
-     || (0x5110 <= __SUNPRO_C && !__STDC__))
+#if ((defined __GNUC__ && 2 <= __GNUC__) \
+     || (defined __clang_major__ && 4 <= __clang_major__) \
+     || (defined __IBMC__ && 1210 <= __IBMC__ && defined __IBM__TYPEOF__) \
+     || (defined __SUNPRO_C && 0x5110 <= __SUNPRO_C && !__STDC__) \
+     || (defined _MSC_VER && 1939 <= _MSC_VER))
 # define _GL_HAVE___TYPEOF__ 1
 #else
 # define _GL_HAVE___TYPEOF__ 0
index c65eb4c1cfeac2eabd4f778a656912ac4a2ceb14..3347e369fb5f14dfdbc0407af9879a0bae189efc 100644 (file)
@@ -20,7 +20,7 @@
 #endif
 @PRAGMA_COLUMNS@
 
-#if defined _GL_ALREADY_INCLUDING_LIMITS_H
+#if defined _@GUARD_PREFIX@_ALREADY_INCLUDING_LIMITS_H
 /* Special invocation convention:
    On Haiku/x86_64, we have a sequence of nested includes
    <limits.h> -> <syslimits.h> -> <limits.h>.
 
 #ifndef _@GUARD_PREFIX@_LIMITS_H
 
-# define _GL_ALREADY_INCLUDING_LIMITS_H
+# define _@GUARD_PREFIX@_ALREADY_INCLUDING_LIMITS_H
 
 /* The include_next requires a split double-inclusion guard.  */
 # @INCLUDE_NEXT@ @NEXT_LIMITS_H@
 
-# undef _GL_ALREADY_INCLUDING_LIMITS_H
+# undef _@GUARD_PREFIX@_ALREADY_INCLUDING_LIMITS_H
 
 #ifndef _@GUARD_PREFIX@_LIMITS_H
 #define _@GUARD_PREFIX@_LIMITS_H
index 6239b90adf3a9c026e280f24f10aa8fb98adac7b..18c88f0c1d718aca7bc452d9731aab1a35a7814e 100644 (file)
@@ -20,7 +20,7 @@
 #endif
 @PRAGMA_COLUMNS@
 
-#if defined __need_sig_atomic_t || defined __need_sigset_t || defined _GL_ALREADY_INCLUDING_SIGNAL_H || (defined _SIGNAL_H && !defined __SIZEOF_PTHREAD_MUTEX_T)
+#if defined __need_sig_atomic_t || defined __need_sigset_t || defined _@GUARD_PREFIX@_ALREADY_INCLUDING_SIGNAL_H || (defined _SIGNAL_H && !defined __SIZEOF_PTHREAD_MUTEX_T)
 /* Special invocation convention:
    - Inside glibc header files.
    - On glibc systems we have a sequence of nested includes
@@ -39,7 +39,7 @@
 
 #ifndef _@GUARD_PREFIX@_SIGNAL_H
 
-#define _GL_ALREADY_INCLUDING_SIGNAL_H
+#define _@GUARD_PREFIX@_ALREADY_INCLUDING_SIGNAL_H
 
 /* Define pid_t, uid_t.
    Also, mingw defines sigset_t not in <signal.h>, but in <sys/types.h>.
@@ -50,7 +50,7 @@
 /* The include_next requires a split double-inclusion guard.  */
 #@INCLUDE_NEXT@ @NEXT_SIGNAL_H@
 
-#undef _GL_ALREADY_INCLUDING_SIGNAL_H
+#undef _@GUARD_PREFIX@_ALREADY_INCLUDING_SIGNAL_H
 
 #ifndef _@GUARD_PREFIX@_SIGNAL_H
 #define _@GUARD_PREFIX@_SIGNAL_H
index 4801e74d2819f76f84278297d7df0a638fa7ff09..b9c52698e91ffcf8fccc7ac67b214d546e7348fd 100644 (file)
@@ -17,7 +17,7 @@
 
 /* Written by Paul Eggert.  */
 
+#define _GL_STDBIT_INLINE _GL_EXTERN_INLINE
 #include <config.h>
 
-#define _GL_STDBIT_INLINE _GL_EXTERN_INLINE
 #include <stdbit.h>
index 20b9f4f46621b687df2872d418316e6d269595c1..91d237d7ad090aac8f2fd5c878bb12dc4f3b1b5a 100644 (file)
@@ -77,7 +77,8 @@ _GL_INLINE_HEADER_BEGIN
 #if ((defined __GNUC__ && 2 <= __GNUC__) \
      || (defined __clang_major__ && 4 <= __clang_major__) \
      || (defined __IBMC__ && 1210 <= __IBMC__ && defined __IBM__TYPEOF__) \
-     || (defined __SUNPRO_C && 0x5110 <= __SUNPRO_C && !__STDC__))
+     || (defined __SUNPRO_C && 0x5110 <= __SUNPRO_C && !__STDC__) \
+     || (defined _MSC_VER && 1939 <= _MSC_VER))
 # define _GL_STDBIT_TYPEOF_CAST(a, b) ((__typeof__ (a)) (b))
 #elif 202311 <= __STDC_VERSION__
 # define _GL_STDBIT_TYPEOF_CAST(a, b) ((typeof (a)) (b))
index e77798d9b257e4b812238a31457932131799c601..ed260d308b052ba51c022e82b7fd6c335d0afb3c 100644 (file)
@@ -20,7 +20,7 @@
 #endif
 @PRAGMA_COLUMNS@
 
-#if defined __need_FILE || defined __need___FILE || defined _GL_ALREADY_INCLUDING_STDIO_H
+#if defined __need_FILE || defined __need___FILE || defined _@GUARD_PREFIX@_ALREADY_INCLUDING_STDIO_H || defined _GL_SKIP_GNULIB_STDIO_H
 /* Special invocation convention:
    - Inside glibc header files.
    - On OSF/1 5.1 we have a sequence of nested includes
 # endif
 #endif
 
-#define _GL_ALREADY_INCLUDING_STDIO_H
+#define _@GUARD_PREFIX@_ALREADY_INCLUDING_STDIO_H
 
 /* The include_next requires a split double-inclusion guard.  */
 #@INCLUDE_NEXT@ @NEXT_STDIO_H@
 
-#undef _GL_ALREADY_INCLUDING_STDIO_H
+#undef _@GUARD_PREFIX@_ALREADY_INCLUDING_STDIO_H
 
 #ifdef _GL_DEFINED__POSIX_C_SOURCE
 # undef _GL_DEFINED__POSIX_C_SOURCE
index 521d64627dc5da8e6e861fc6005e83ea30e9004d..6f70fa4bbda7b5d2a5526aa92dd6c7817243d15c 100644 (file)
@@ -15,7 +15,7 @@
    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_STDLIB_INLINE _GL_EXTERN_INLINE
 #include <config.h>
 
-#define _GL_STDLIB_INLINE _GL_EXTERN_INLINE
 #include <stdlib.h>
index adbef69131bde20a22dc307684d901db73f844d0..14f45cc21e5c3352efb8e14449e5e554278d4386 100644 (file)
@@ -746,15 +746,20 @@ _GL_WARN_ON_USE (malloc, "malloc is not POSIX compliant everywhere - "
 # endif
 #endif
 
-/* Return maximum number of bytes of a multibyte character.  */
+/* Return maximum number of bytes in a multibyte character in the
+   current locale.  */
 #if @REPLACE_MB_CUR_MAX@
 # if !GNULIB_defined_MB_CUR_MAX
-_GL_STDLIB_INLINE int
+_GL_STDLIB_INLINE size_t
 gl_MB_CUR_MAX (void)
 {
+#  if 0 < @REPLACE_MB_CUR_MAX@
+  return @REPLACE_MB_CUR_MAX@;
+#  else
   /* Turn the value 3 to the value 4, as needed for the UTF-8 encoding.  */
   int gl_mb_cur_max = MB_CUR_MAX;
   return gl_mb_cur_max == 3 ? 4 : gl_mb_cur_max;
+#  endif
 }
 #  undef MB_CUR_MAX
 #  define MB_CUR_MAX gl_MB_CUR_MAX ()
index f5a6d8b3267a27f0404a9d19d3a70cec7de907a4..72cd7566e653ec78d4d2f85f17fa8b8fc9957339 100644 (file)
@@ -20,7 +20,7 @@
 #endif
 @PRAGMA_COLUMNS@
 
-#if defined _GL_ALREADY_INCLUDING_STRING_H
+#if defined _@GUARD_PREFIX@_ALREADY_INCLUDING_STRING_H
 /* Special invocation convention:
    - On OS X/NetBSD we have a sequence of nested includes
        <string.h> -> <strings.h> -> "string.h"
 
 #ifndef _@GUARD_PREFIX@_STRING_H
 
-#define _GL_ALREADY_INCLUDING_STRING_H
+#define _@GUARD_PREFIX@_ALREADY_INCLUDING_STRING_H
 
 /* The include_next requires a split double-inclusion guard.  */
 #@INCLUDE_NEXT@ @NEXT_STRING_H@
 
-#undef _GL_ALREADY_INCLUDING_STRING_H
+#undef _@GUARD_PREFIX@_ALREADY_INCLUDING_STRING_H
 
 #ifndef _@GUARD_PREFIX@_STRING_H
 #define _@GUARD_PREFIX@_STRING_H
index f3b3f7bd2fe7ebbe5660d2d1266b7701ceb17aaa..b25112eb91e280ba238c411118ee67b964b29bae 100644 (file)
@@ -15,8 +15,8 @@
    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_UNISTD_INLINE _GL_EXTERN_INLINE
 #include <config.h>
 
-#define _GL_UNISTD_INLINE _GL_EXTERN_INLINE
 #include <unistd.h>
 typedef int dummy;
index 0a078e64d58d35b883bbcfcbf998fe9ec7806ad3..1f3062a8900839ffd0124b4136d4fe9f9e4efd11 100644 (file)
@@ -1,5 +1,5 @@
 # stdint.m4
-# serial 63
+# serial 64
 dnl Copyright (C) 2001-2024 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -158,7 +158,7 @@ uintmax_t j = UINTMAX_MAX;
         || defined __clang__)
 int k = _Generic (SIZE_MAX, size_t: 0);
 #elif (2 <= __GNUC__ || 4 <= __clang_major__ || defined __IBM__TYPEOF__ \
-       || (0x5110 <= __SUNPRO_C && !__STDC__))
+       || (0x5110 <= __SUNPRO_C && !__STDC__) || 1939 <= _MSC_VER)
 extern size_t k;
 extern __typeof__ (SIZE_MAX) k;
 #endif
index 87b63ff54e3551f756b7596410263c2aa29cf887..ba56a9480b33c9c253a2e677f2e15f1c567ab7ca 100644 (file)
@@ -1,5 +1,5 @@
 # stdlib_h.m4
-# serial 82
+# serial 84
 dnl Copyright (C) 2007-2024 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -41,20 +41,21 @@ AC_DEFUN_ONCE([gl_STDLIB_H],
   AC_REQUIRE([gt_LOCALE_EN_UTF8])
   AC_CACHE_CHECK([whether MB_CUR_MAX is correct],
     [gl_cv_macro_MB_CUR_MAX_good],
-    [
-      dnl Initial guess, used when cross-compiling or when no suitable locale
-      dnl is present.
-changequote(,)dnl
-      case "$host_os" in
-                           # Guess no on Solaris and Haiku.
-        solaris* | haiku*) gl_cv_macro_MB_CUR_MAX_good="guessing no" ;;
-                           # Guess yes otherwise.
-        *)                 gl_cv_macro_MB_CUR_MAX_good="guessing yes" ;;
-      esac
-changequote([,])dnl
-      if test "$LOCALE_EN_UTF8" != none; then
-        AC_RUN_IFELSE(
-          [AC_LANG_SOURCE([[
+    [AC_LINK_IFELSE(
+       [AC_LANG_PROGRAM([[#include <stdlib.h>
+                        ]],
+                        [[return !!MB_CUR_MAX;]])
+       ],
+       [dnl Initial guess, used when cross-compiling or when no suitable locale
+        dnl is present.
+        # Guess no on Solaris and Haiku, yes otherwise.
+        AS_CASE([$host_os],
+          [solaris* | haiku*],
+            [gl_cv_macro_MB_CUR_MAX_good="guessing no"],
+            [gl_cv_macro_MB_CUR_MAX_good="guessing yes"])
+        if test "$LOCALE_EN_UTF8" != none; then
+          AC_RUN_IFELSE(
+            [AC_LANG_SOURCE([[
 #include <locale.h>
 #include <stdlib.h>
 int main ()
@@ -67,15 +68,21 @@ int main ()
     }
   return result;
 }]])],
-          [gl_cv_macro_MB_CUR_MAX_good=yes],
-          [gl_cv_macro_MB_CUR_MAX_good=no],
-          [:])
-      fi
+            [gl_cv_macro_MB_CUR_MAX_good=yes],
+            [gl_cv_macro_MB_CUR_MAX_good=no],
+            [:])
+        fi
+       ],
+       [gl_cv_macro_MB_CUR_MAX_good="link failed - so no"])
     ])
-  case "$gl_cv_macro_MB_CUR_MAX_good" in
-    *yes) ;;
-    *) REPLACE_MB_CUR_MAX=1 ;;
-  esac
+  AS_CASE([$gl_cv_macro_MB_CUR_MAX_good],
+    [*yes],
+      [],
+    ["link failed - so no"],
+      [# 4 suffices as a workaround in Android NDK 16,
+       # the only known platform with the bug.
+       REPLACE_MB_CUR_MAX=4],
+      [REPLACE_MB_CUR_MAX="(-1)"])
 
   AC_CHECK_DECLS_ONCE([ecvt])
   if test $ac_cv_have_decl_ecvt = no; then