aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xadmin/merge-gnulib2
-rw-r--r--doc/misc/texinfo.tex232
-rw-r--r--lib/gnulib.mk.in12
-rw-r--r--lib/stdio.in.h11
-rw-r--r--lib/time.in.h14
-rw-r--r--m4/gnulib-comp.m42
-rw-r--r--m4/time_h.m44
7 files changed, 198 insertions, 79 deletions
diff --git a/admin/merge-gnulib b/admin/merge-gnulib
index 4e84e1a2c8d..8065a9267d0 100755
--- a/admin/merge-gnulib
+++ b/admin/merge-gnulib
@@ -46,7 +46,7 @@ GNULIB_MODULES='
46 qcopy-acl readlink readlinkat regex 46 qcopy-acl readlink readlinkat regex
47 sig2str sigdescr_np socklen stat-time std-gnu11 stdbool stddef stdio 47 sig2str sigdescr_np socklen stat-time std-gnu11 stdbool stddef stdio
48 stpcpy stpncpy strnlen strtoimax symlink sys_stat sys_time 48 stpcpy stpncpy strnlen strtoimax symlink sys_stat sys_time
49 tempname time time_r time_rz timegm timer-time timespec-add timespec-sub 49 tempname time-h time_r time_rz timegm timer-time timespec-add timespec-sub
50 update-copyright unlocked-io utimensat 50 update-copyright unlocked-io utimensat
51 vla warnings 51 vla warnings
52' 52'
diff --git a/doc/misc/texinfo.tex b/doc/misc/texinfo.tex
index 3cccf01d958..1ddfef4b878 100644
--- a/doc/misc/texinfo.tex
+++ b/doc/misc/texinfo.tex
@@ -3,7 +3,7 @@
3% Load plain if necessary, i.e., if running under initex. 3% Load plain if necessary, i.e., if running under initex.
4\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi 4\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
5% 5%
6\def\texinfoversion{2023-01-02.21} 6\def\texinfoversion{2023-03-04.12}
7% 7%
8% Copyright 1985, 1986, 1988, 1990-2023 Free Software Foundation, Inc. 8% Copyright 1985, 1986, 1988, 1990-2023 Free Software Foundation, Inc.
9% 9%
@@ -2683,25 +2683,21 @@ end
2683} 2683}
2684\setregularquotes 2684\setregularquotes
2685 2685
2686% Allow an option to not use regular directed right quote/apostrophe 2686% output for ' in @code
2687% (char 0x27), but instead the undirected quote from cmtt (char 0x0d). 2687% in tt font hex 0D (undirected) or 27 (curly right quote)
2688% The undirected quote is ugly, so don't make it the default, but it
2689% works for pasting with more pdf viewers (at least evince), the
2690% lilypond developers report. xpdf does work with the regular 0x27.
2691% 2688%
2692\def\codequoteright{% 2689\def\codequoteright{%
2693 \ifusingtt 2690 \ifusingtt
2694 {\ifflagclear{txicodequoteundirected}% 2691 {\ifflagclear{txicodequoteundirected}%
2695 {\ifflagclear{codequoteundirected}% 2692 {\ifflagclear{codequoteundirected}%
2696 {'}% 2693 {'}%
2697 {\char'15 }}% 2694 {\char"0D }}%
2698 {\char'15 }}% 2695 {\char"0D }}%
2699 {'}% 2696 {'}%
2700} 2697}
2701 2698
2702% and a similar option for the left quote char vs. a grave accent. 2699% output for ` in @code
2703% Modern fonts display ASCII 0x60 as a grave accent, so some people like 2700% in tt font hex 12 (grave accent) or 60 (curly left quote)
2704% the code environments to do likewise.
2705% \relax disables Spanish ligatures ?` and !` of \tt font. 2701% \relax disables Spanish ligatures ?` and !` of \tt font.
2706% 2702%
2707\def\codequoteleft{% 2703\def\codequoteleft{%
@@ -2709,8 +2705,8 @@ end
2709 {\ifflagclear{txicodequotebacktick}% 2705 {\ifflagclear{txicodequotebacktick}%
2710 {\ifflagclear{codequotebacktick}% 2706 {\ifflagclear{codequotebacktick}%
2711 {\relax`}% 2707 {\relax`}%
2712 {\char'22 }}% 2708 {\char"12 }}%
2713 {\char'22 }}% 2709 {\char"12 }}%
2714 {\relax`}% 2710 {\relax`}%
2715} 2711}
2716 2712
@@ -2729,7 +2725,7 @@ end
2729 \errmessage{Unknown @codequoteundirected value `\temp', must be on|off}% 2725 \errmessage{Unknown @codequoteundirected value `\temp', must be on|off}%
2730 \fi\fi 2726 \fi\fi
2731} 2727}
2732% 2728
2733\parseargdef\codequotebacktick{% 2729\parseargdef\codequotebacktick{%
2734 \def\temp{#1}% 2730 \def\temp{#1}%
2735 \ifx\temp\onword 2731 \ifx\temp\onword
@@ -2744,6 +2740,11 @@ end
2744 \fi\fi 2740 \fi\fi
2745} 2741}
2746 2742
2743% Turn them on by default
2744\let\SETtxicodequoteundirected = t
2745\let\SETtxicodequotebacktick = t
2746
2747
2747% [Knuth] pp. 380,381,391, disable Spanish ligatures ?` and !` of \tt font. 2748% [Knuth] pp. 380,381,391, disable Spanish ligatures ?` and !` of \tt font.
2748\def\noligaturesquoteleft{\relax\lq} 2749\def\noligaturesquoteleft{\relax\lq}
2749 2750
@@ -2929,10 +2930,6 @@ end
2929 \let-\dashnobreak 2930 \let-\dashnobreak
2930 \let_\realunder 2931 \let_\realunder
2931 \fi 2932 \fi
2932 % Given -foo (with a single dash), we do not want to allow a break
2933 % after the hyphen.
2934 \global\let\codedashprev=\codedash
2935 %
2936 \codex 2933 \codex
2937 } 2934 }
2938 % 2935 %
@@ -2942,21 +2939,30 @@ end
2942 % 2939 %
2943 % Now, output a discretionary to allow a line break, unless 2940 % Now, output a discretionary to allow a line break, unless
2944 % (a) the next character is a -, or 2941 % (a) the next character is a -, or
2945 % (b) the preceding character is a -. 2942 % (b) the preceding character is a -, or
2943 % (c) we are at the start of the string.
2944 % In both cases (b) and (c), \codedashnobreak should be set to \codedash.
2945 %
2946 % E.g., given --posix, we do not want to allow a break after either -. 2946 % E.g., given --posix, we do not want to allow a break after either -.
2947 % Given --foo-bar, we do want to allow a break between the - and the b. 2947 % Given --foo-bar, we do want to allow a break between the - and the b.
2948 \ifx\next\codedash \else 2948 \ifx\next\codedash \else
2949 \ifx\codedashprev\codedash 2949 \ifx\codedashnobreak\codedash
2950 \else \discretionary{}{}{}\fi 2950 \else \discretionary{}{}{}\fi
2951 \fi 2951 \fi
2952 % we need the space after the = for the case when \next itself is a 2952 % we need the space after the = for the case when \next itself is a
2953 % space token; it would get swallowed otherwise. As in @code{- a}. 2953 % space token; it would get swallowed otherwise. As in @code{- a}.
2954 \global\let\codedashprev= \next 2954 \global\let\codedashnobreak= \next
2955 } 2955 }
2956} 2956}
2957\def\normaldash{-} 2957\def\normaldash{-}
2958% 2958%
2959\def\codex #1{\tclose{#1}\endgroup} 2959\def\codex #1{\tclose{%
2960 % Given -foo (with a single dash), we do not want to allow a break
2961 % after the -. \codedashnobreak is set to the first character in
2962 % @code.
2963 \futurelet\codedashnobreak\relax
2964 #1%
2965}\endgroup}
2960 2966
2961\def\codeunder{% 2967\def\codeunder{%
2962 % this is all so @math{@code{var_name}+1} can work. In math mode, _ 2968 % this is all so @math{@code{var_name}+1} can work. In math mode, _
@@ -3950,33 +3956,23 @@ $$%
3950 3956
3951\def\HEADINGSoff{{\globaldefs=1 \headingsoff}} % global setting 3957\def\HEADINGSoff{{\globaldefs=1 \headingsoff}} % global setting
3952 3958
3953% When we turn headings on, set the page number to 1. 3959% Set the page number to 1.
3954\def\pageone{ 3960\def\pageone{
3955 \global\pageno=1 3961 \global\pageno=1
3956 \global\arabiccount = \pagecount 3962 \global\arabiccount = \pagecount
3957} 3963}
3958 3964
3959% For double-sided printing, put current file name in lower left corner,
3960% chapter name on inside top of right hand pages, document
3961% title on inside top of left hand pages, and page numbers on outside top
3962% edge of all pages.
3963\def\HEADINGSdouble{%
3964\pageone
3965\HEADINGSdoublex
3966}
3967\let\contentsalignmacro = \chappager 3965\let\contentsalignmacro = \chappager
3968 3966
3969% For single-sided printing, chapter title goes across top left of page,
3970% page number on top right.
3971\def\HEADINGSsingle{%
3972\pageone
3973\HEADINGSsinglex
3974}
3975% \def\HEADINGSon{\HEADINGSdouble} % defined by \CHAPPAGon 3967% \def\HEADINGSon{\HEADINGSdouble} % defined by \CHAPPAGon
3976 3968
3977\def\HEADINGSafter{\let\HEADINGShook=\HEADINGSdoublex} 3969% For double-sided printing, put current file name in lower left corner,
3970% chapter name on inside top of right hand pages, document
3971% title on inside top of left hand pages, and page numbers on outside top
3972% edge of all pages.
3973\def\HEADINGSafter{\let\HEADINGShook=\HEADINGSdouble}
3978\let\HEADINGSdoubleafter=\HEADINGSafter 3974\let\HEADINGSdoubleafter=\HEADINGSafter
3979\def\HEADINGSdoublex{% 3975\def\HEADINGSdouble{%
3980\global\evenfootline={\hfil} 3976\global\evenfootline={\hfil}
3981\global\oddfootline={\hfil} 3977\global\oddfootline={\hfil}
3982\global\evenheadline={\line{\folio\hfil\thistitle}} 3978\global\evenheadline={\line{\folio\hfil\thistitle}}
@@ -3986,8 +3982,10 @@ $$%
3986\global\let\contentsalignmacro = \chapoddpage 3982\global\let\contentsalignmacro = \chapoddpage
3987} 3983}
3988 3984
3989\def\HEADINGSsingleafter{\let\HEADINGShook=\HEADINGSsinglex} 3985% For single-sided printing, chapter title goes across top left of page,
3990\def\HEADINGSsinglex{% 3986% page number on top right.
3987\def\HEADINGSsingleafter{\let\HEADINGShook=\HEADINGSsingle}
3988\def\HEADINGSsingle{%
3991\global\evenfootline={\hfil} 3989\global\evenfootline={\hfil}
3992\global\oddfootline={\hfil} 3990\global\oddfootline={\hfil}
3993\global\evenheadline={\line{\thischapter\hfil\folio}} 3991\global\evenheadline={\line{\thischapter\hfil\folio}}
@@ -3999,7 +3997,6 @@ $$%
3999 3997
4000% for @setchapternewpage off 3998% for @setchapternewpage off
4001\def\HEADINGSsinglechapoff{% 3999\def\HEADINGSsinglechapoff{%
4002\pageone
4003\global\evenfootline={\hfil} 4000\global\evenfootline={\hfil}
4004\global\oddfootline={\hfil} 4001\global\oddfootline={\hfil}
4005\global\evenheadline={\line{\thischapter\hfil\folio}} 4002\global\evenheadline={\line{\thischapter\hfil\folio}}
@@ -4105,6 +4102,7 @@ $$%
4105 \nobreak\kern\dimen0 4102 \nobreak\kern\dimen0
4106 \endgroup 4103 \endgroup
4107 \itemxneedsnegativevskiptrue 4104 \itemxneedsnegativevskiptrue
4105 \penalty 10021 % for \indexpar
4108 \fi 4106 \fi
4109} 4107}
4110 4108
@@ -4221,6 +4219,7 @@ $$%
4221 % We can be in inner vertical mode in a footnote, although an 4219 % We can be in inner vertical mode in a footnote, although an
4222 % @itemize looks awful there. 4220 % @itemize looks awful there.
4223 }% 4221 }%
4222 \penalty 10021 % for \indexpar
4224 \flushcr 4223 \flushcr
4225} 4224}
4226 4225
@@ -4725,13 +4724,11 @@ $$%
4725% except not \outer, so it can be used within macros and \if's. 4724% except not \outer, so it can be used within macros and \if's.
4726\edef\newwrite{\makecsname{ptexnewwrite}} 4725\edef\newwrite{\makecsname{ptexnewwrite}}
4727 4726
4728% \newindex {foo} defines an index named IX. 4727% \newindex {IX} defines an index named IX.
4729% It automatically defines \IXindex such that 4728% It automatically defines \IXindex such that
4730% \IXindex ...rest of line... puts an entry in the index IX. 4729% \IXindex ...rest of line... puts an entry in the index IX.
4731% It also defines \IXindfile to be the number of the output channel for 4730% It also defines \IXindfile to be the number of the output channel for
4732% the file that accumulates this index. The file's extension is IX. 4731% the file that accumulates this index. The file's extension is IX.
4733% The name of an index should be no more than 2 characters long
4734% for the sake of vms.
4735% 4732%
4736\def\newindex#1{% 4733\def\newindex#1{%
4737 \expandafter\chardef\csname#1indfile\endcsname=0 4734 \expandafter\chardef\csname#1indfile\endcsname=0
@@ -4787,11 +4784,17 @@ $$%
4787% and it is the two-letter name of the index. 4784% and it is the two-letter name of the index.
4788 4785
4789\def\doindex#1{\edef\indexname{#1}\parsearg\doindexxxx} 4786\def\doindex#1{\edef\indexname{#1}\parsearg\doindexxxx}
4790\def\doindexxxx #1{\doind{\indexname}{#1}} 4787\def\doindexxxx #1{\indexpar\doind{\indexname}{#1}}
4791 4788
4792% like the previous two, but they put @code around the argument. 4789% like the previous two, but they put @code around the argument.
4793\def\docodeindex#1{\edef\indexname{#1}\parsearg\docodeindexxxx} 4790\def\docodeindex#1{\edef\indexname{#1}\parsearg\docodeindexxxx}
4794\def\docodeindexxxx #1{\docind{\indexname}{#1}} 4791\def\docodeindexxxx #1{\indexpar\docind{\indexname}{#1}}
4792
4793% End any open paragraph, unless we are immediately after @item in
4794% @itemize or @enumerate.
4795\def\indexpar{%
4796\ifnum\lastpenalty=10021 \else\endgraf\fi
4797}
4795 4798
4796 4799
4797% \definedummyword defines \#1 as \string\#1\space, thus effectively 4800% \definedummyword defines \#1 as \string\#1\space, thus effectively
@@ -4989,7 +4992,7 @@ $$%
4989 \commondummyword\ampchar {\normalamp}% 4992 \commondummyword\ampchar {\normalamp}%
4990 \commondummyword\atchar {\@}% 4993 \commondummyword\atchar {\@}%
4991 \commondummyword\arrow {->}% 4994 \commondummyword\arrow {->}%
4992 \commondummyword\backslashchar {}% 4995 \commondummyword\backslashchar {\realbackslash}%
4993 \commondummyword\bullet {bullet}% 4996 \commondummyword\bullet {bullet}%
4994 \commondummyword\comma {,}% 4997 \commondummyword\comma {,}%
4995 \commondummyword\copyright {copyright}% 4998 \commondummyword\copyright {copyright}%
@@ -5089,9 +5092,6 @@ $$%
5089 % 5092 %
5090 % We need to get rid of all macros, leaving only the arguments (if present). 5093 % We need to get rid of all macros, leaving only the arguments (if present).
5091 % Of course this is not nearly correct, but it is the best we can do for now. 5094 % Of course this is not nearly correct, but it is the best we can do for now.
5092 % makeinfo does not expand macros in the argument to @deffn, which ends up
5093 % writing an index entry, and texindex isn't prepared for an index sort entry
5094 % that starts with \.
5095 % 5095 %
5096 % Since macro invocations are followed by braces, we can just redefine them 5096 % Since macro invocations are followed by braces, we can just redefine them
5097 % to take a single TeX argument. The case of a macro invocation that 5097 % to take a single TeX argument. The case of a macro invocation that
@@ -5351,7 +5351,9 @@ $$%
5351% ..., ready, GO: 5351% ..., ready, GO:
5352% 5352%
5353\def\safewhatsit#1{\ifhmode 5353\def\safewhatsit#1{\ifhmode
5354 \whatsitpenalty = \lastpenalty
5354 #1% 5355 #1%
5356 \ifnum\whatsitpenalty>9999 \penalty\whatsitpenalty \fi
5355 \else 5357 \else
5356 % \lastskip and \lastpenalty cannot both be nonzero simultaneously. 5358 % \lastskip and \lastpenalty cannot both be nonzero simultaneously.
5357 \whatsitskip = \lastskip 5359 \whatsitskip = \lastskip
@@ -7387,6 +7389,7 @@ might help (with 'rm \jobname.?? \jobname.??s')%
7387\def\setupverb{% 7389\def\setupverb{%
7388 \tt 7390 \tt
7389 \def\par{\leavevmode\endgraf}% 7391 \def\par{\leavevmode\endgraf}%
7392 \parindent = 0pt
7390 \setcodequotes 7393 \setcodequotes
7391 \tabeightspaces 7394 \tabeightspaces
7392 % Respect line breaks, 7395 % Respect line breaks,
@@ -7562,11 +7565,6 @@ might help (with 'rm \jobname.?? \jobname.??s')%
7562 \exdentamount=\defbodyindent 7565 \exdentamount=\defbodyindent
7563} 7566}
7564 7567
7565\newtoks\defidx
7566\newtoks\deftext
7567
7568\def\useindex#1{\defidx={#1}\ignorespaces}
7569
7570% Called as \printdefunline \deffooheader{text} 7568% Called as \printdefunline \deffooheader{text}
7571% 7569%
7572\def\printdefunline#1#2{% 7570\def\printdefunline#1#2{%
@@ -7574,10 +7572,6 @@ might help (with 'rm \jobname.?? \jobname.??s')%
7574 \plainfrenchspacing 7572 \plainfrenchspacing
7575 % call \deffooheader: 7573 % call \deffooheader:
7576 #1#2 \endheader 7574 #1#2 \endheader
7577 % create the index entry
7578 \defcharsdefault
7579 \edef\temp{\noexpand\doind{\the\defidx}{\the\deftext}}%
7580 \temp
7581 % common ending: 7575 % common ending:
7582 \interlinepenalty = 10000 7576 \interlinepenalty = 10000
7583 \advance\rightskip by 0pt plus 1fil\relax 7577 \advance\rightskip by 0pt plus 1fil\relax
@@ -7592,6 +7586,24 @@ might help (with 'rm \jobname.?? \jobname.??s')%
7592 7586
7593\def\Edefun{\endgraf\medbreak} 7587\def\Edefun{\endgraf\medbreak}
7594 7588
7589% @defblock, @defline do not automatically create index entries
7590\envdef\defblock{%
7591 \startdefun
7592}
7593\let\Edefblock\Edefun
7594
7595\def\defline{%
7596 \doingtypefnfalse
7597 \parseargusing\activeparens{\printdefunline\deflineheader}%
7598}
7599\def\deflineheader#1 #2 #3\endheader{%
7600 \defname{#1}{}{#2}\magicamp\defunargs{#3\unskip}%
7601}
7602\def\deftypeline{%
7603 \doingtypefntrue
7604 \parseargusing\activeparens{\printdefunline\deflineheader}%
7605}
7606
7595% \makedefun{deffoo} (\deffooheader parameters) { (\deffooheader expansion) } 7607% \makedefun{deffoo} (\deffooheader parameters) { (\deffooheader expansion) }
7596% 7608%
7597% Define \deffoo, \deffoox \Edeffoo and \deffooheader. 7609% Define \deffoo, \deffoox \Edeffoo and \deffooheader.
@@ -7643,23 +7655,18 @@ might help (with 'rm \jobname.?? \jobname.??s')%
7643 \fi\fi 7655 \fi\fi
7644} 7656}
7645 7657
7646\def\defind#1#2{
7647 \defidx={#1}%
7648 \deftext={#2}%
7649}
7650
7651% Untyped functions: 7658% Untyped functions:
7652 7659
7653% @deffn category name args 7660% @deffn category name args
7654\makedefun{deffn}#1 #2 #3\endheader{% 7661\makedefun{deffn}#1 #2 #3\endheader{%
7655 \defind{fn}{\code{#2}}% 7662 \doind{fn}{\code{#2}}%
7656 \defname{#1}{}{#2}\magicamp\defunargs{#3\unskip}% 7663 \defname{#1}{}{#2}\magicamp\defunargs{#3\unskip}%
7657} 7664}
7658 7665
7659% @defop category class name args 7666% @defop category class name args
7660\makedefun{defop}#1 {\defopheaderx{#1\ \putwordon}} 7667\makedefun{defop}#1 {\defopheaderx{#1\ \putwordon}}
7661\def\defopheaderx#1#2 #3 #4\endheader{% 7668\def\defopheaderx#1#2 #3 #4\endheader{%
7662 \defind{fn}{\code{#3}\space\putwordon\ \code{#2}}% 7669 \doind{fn}{\code{#3}\space\putwordon\ \code{#2}}%
7663 \defname{#1\ \code{#2}}{}{#3}\magicamp\defunargs{#4\unskip}% 7670 \defname{#1\ \code{#2}}{}{#3}\magicamp\defunargs{#4\unskip}%
7664} 7671}
7665 7672
@@ -7667,7 +7674,7 @@ might help (with 'rm \jobname.?? \jobname.??s')%
7667 7674
7668% @deftypefn category type name args 7675% @deftypefn category type name args
7669\makedefun{deftypefn}#1 #2 #3 #4\endheader{% 7676\makedefun{deftypefn}#1 #2 #3 #4\endheader{%
7670 \defind{fn}{\code{#3}}% 7677 \doind{fn}{\code{#3}}%
7671 \doingtypefntrue 7678 \doingtypefntrue
7672 \defname{#1}{#2}{#3}\defunargs{#4\unskip}% 7679 \defname{#1}{#2}{#3}\defunargs{#4\unskip}%
7673} 7680}
@@ -7675,7 +7682,7 @@ might help (with 'rm \jobname.?? \jobname.??s')%
7675% @deftypeop category class type name args 7682% @deftypeop category class type name args
7676\makedefun{deftypeop}#1 {\deftypeopheaderx{#1\ \putwordon}} 7683\makedefun{deftypeop}#1 {\deftypeopheaderx{#1\ \putwordon}}
7677\def\deftypeopheaderx#1#2 #3 #4 #5\endheader{% 7684\def\deftypeopheaderx#1#2 #3 #4 #5\endheader{%
7678 \defind{fn}{\code{#4}\space\putwordon\ \code{#1\ \code{#2}}}% 7685 \doind{fn}{\code{#4}\space\putwordon\ \code{#1\ \code{#2}}}%
7679 \doingtypefntrue 7686 \doingtypefntrue
7680 \defname{#1\ \code{#2}}{#3}{#4}\defunargs{#5\unskip}% 7687 \defname{#1\ \code{#2}}{#3}{#4}\defunargs{#5\unskip}%
7681} 7688}
@@ -7684,14 +7691,14 @@ might help (with 'rm \jobname.?? \jobname.??s')%
7684 7691
7685% @deftypevr category type var args 7692% @deftypevr category type var args
7686\makedefun{deftypevr}#1 #2 #3 #4\endheader{% 7693\makedefun{deftypevr}#1 #2 #3 #4\endheader{%
7687 \defind{vr}{\code{#3}}% 7694 \doind{vr}{\code{#3}}%
7688 \defname{#1}{#2}{#3}\defunargs{#4\unskip}% 7695 \defname{#1}{#2}{#3}\defunargs{#4\unskip}%
7689} 7696}
7690 7697
7691% @deftypecv category class type var args 7698% @deftypecv category class type var args
7692\makedefun{deftypecv}#1 {\deftypecvheaderx{#1\ \putwordof}} 7699\makedefun{deftypecv}#1 {\deftypecvheaderx{#1\ \putwordof}}
7693\def\deftypecvheaderx#1#2 #3 #4 #5\endheader{% 7700\def\deftypecvheaderx#1#2 #3 #4 #5\endheader{%
7694 \defind{vr}{\code{#4}\space\putwordof\ \code{#2}}% 7701 \doind{vr}{\code{#4}\space\putwordof\ \code{#2}}%
7695 \defname{#1\ \code{#2}}{#3}{#4}\defunargs{#5\unskip}% 7702 \defname{#1\ \code{#2}}{#3}{#4}\defunargs{#5\unskip}%
7696} 7703}
7697 7704
@@ -7708,7 +7715,7 @@ might help (with 'rm \jobname.?? \jobname.??s')%
7708 7715
7709% @deftp category name args 7716% @deftp category name args
7710\makedefun{deftp}#1 #2 #3\endheader{% 7717\makedefun{deftp}#1 #2 #3\endheader{%
7711 \defind{tp}{\code{#2}}% 7718 \doind{tp}{\code{#2}}%
7712 \defname{#1}{}{#2}\defunargs{#3\unskip}% 7719 \defname{#1}{}{#2}\defunargs{#3\unskip}%
7713} 7720}
7714 7721
@@ -8580,6 +8587,87 @@ might help (with 'rm \jobname.?? \jobname.??s')%
8580 \fi \macnamexxx} 8587 \fi \macnamexxx}
8581 8588
8582 8589
8590% @linemacro
8591
8592\parseargdef\linemacro{%
8593 \linegetargs#1 \linegetargs
8594 \expandafter\linegetparamlist\argl;%
8595 \begingroup \macrobodyctxt \usembodybackslash
8596 \parselinemacrobody
8597}
8598
8599% Parse the arguments to a @linemacro line. Set \macname to the name
8600% of the macro and \argl to the list of arguments.
8601\def\linegetargs#1 #2\linegetargs{%
8602 \macname={#1}%
8603 \def\argl{#2}%
8604}
8605
8606% Build up \paramlist which will be used as the parameter text for the macro.
8607% At the end it will be like "#1 #2 #3\endlinemacro".
8608\def\linegetparamlist#1;{%
8609 \paramno=0\def\paramlist{}%
8610 \let\hash\relax \let\xeatspaces\relax
8611 \linegetparamlistxxx#1; %
8612}
8613\def\linegetparamlistxxx#1 {%
8614 \if#1;\let\next=\linegetparamlistxxxx
8615 \else \let\next=\linegetparamlistxxx
8616 \advance\paramno by 1
8617 \expandafter\edef\csname macarg.\eatspaces{#1}\endcsname
8618 {\noexpand\xeatspaces{\hash\the\paramno}}%
8619 \edef\paramlist{\paramlist\hash\the\paramno\space}%
8620 \fi\next}
8621\def\linegetparamlistxxxx{%
8622 \ifx\paramlist\empty
8623 \def\paramlist{\hash 1\endlinemacro}%
8624 \else
8625 \expandafter\fixparamlist\paramlist\fixparamlist
8626 \fi
8627}
8628% Replace final space token
8629\def\fixparamlist#1 \fixparamlist{%
8630 \def\paramlist{#1\endlinemacro}%
8631}
8632
8633% Read the body of the macro, replacing backslash-surrounded variables
8634%
8635{\catcode`\ =\other\long\gdef\parselinemacrobody#1@end linemacro{%
8636\let\xeatspaces\relax
8637\xdef\macrobody{#1}%
8638\endgroup
8639\linemacrodef
8640}}
8641
8642% Make the definition
8643\def\linemacrodef{%
8644 \let\hash=##%
8645 \let\xeatspaces\relax
8646 \expandafter\xdef\csname\the\macname\endcsname{%
8647 \bgroup
8648 \noexpand\scanctxt
8649 \noexpand\parsearg
8650 \expandafter\noexpand\csname\the\macname @@\endcsname
8651 }
8652 \expandafter\xdef\csname\the\macname @@\endcsname##1{%
8653 \egroup
8654 \expandafter\noexpand
8655 \csname\the\macname @@@\endcsname##1 \noexpand\endlinemacro
8656 % Note that we append a space to the macro line to terminate the last
8657 % argument in case the final argument is empty. @xeatspaces may be needed
8658 % to remove this space.
8659 }
8660 \expandafter\expandafter
8661 \expandafter\xdef
8662 \expandafter\expandafter\csname\the\macname @@@\endcsname\paramlist{%
8663 \newlinechar=13 % split \macrobody into lines
8664 \let\noexpand\xeatspaces\noexpand\eatspaces
8665 \noexpand\scantokens{\macrobody}%
8666 }
8667}
8668
8669
8670
8583% @alias. 8671% @alias.
8584% We need some trickery to remove the optional spaces around the equal 8672% We need some trickery to remove the optional spaces around the equal
8585% sign. Make them active and then expand them all to nothing. 8673% sign. Make them active and then expand them all to nothing.
diff --git a/lib/gnulib.mk.in b/lib/gnulib.mk.in
index a5be32427b6..ca4df18458c 100644
--- a/lib/gnulib.mk.in
+++ b/lib/gnulib.mk.in
@@ -159,7 +159,7 @@
159# sys_stat \ 159# sys_stat \
160# sys_time \ 160# sys_time \
161# tempname \ 161# tempname \
162# time \ 162# time-h \
163# time_r \ 163# time_r \
164# time_rz \ 164# time_rz \
165# timegm \ 165# timegm \
@@ -722,6 +722,7 @@ GL_GNULIB_SYSTEM_POSIX = @GL_GNULIB_SYSTEM_POSIX@
722GL_GNULIB_TANF = @GL_GNULIB_TANF@ 722GL_GNULIB_TANF = @GL_GNULIB_TANF@
723GL_GNULIB_TANHF = @GL_GNULIB_TANHF@ 723GL_GNULIB_TANHF = @GL_GNULIB_TANHF@
724GL_GNULIB_TANL = @GL_GNULIB_TANL@ 724GL_GNULIB_TANL = @GL_GNULIB_TANL@
725GL_GNULIB_TIME = @GL_GNULIB_TIME@
725GL_GNULIB_TIMEGM = @GL_GNULIB_TIMEGM@ 726GL_GNULIB_TIMEGM = @GL_GNULIB_TIMEGM@
726GL_GNULIB_TIMESPEC_GET = @GL_GNULIB_TIMESPEC_GET@ 727GL_GNULIB_TIMESPEC_GET = @GL_GNULIB_TIMESPEC_GET@
727GL_GNULIB_TIMESPEC_GETRES = @GL_GNULIB_TIMESPEC_GETRES@ 728GL_GNULIB_TIMESPEC_GETRES = @GL_GNULIB_TIMESPEC_GETRES@
@@ -1535,6 +1536,7 @@ REPLACE_SYMLINK = @REPLACE_SYMLINK@
1535REPLACE_SYMLINKAT = @REPLACE_SYMLINKAT@ 1536REPLACE_SYMLINKAT = @REPLACE_SYMLINKAT@
1536REPLACE_TANF = @REPLACE_TANF@ 1537REPLACE_TANF = @REPLACE_TANF@
1537REPLACE_TANHF = @REPLACE_TANHF@ 1538REPLACE_TANHF = @REPLACE_TANHF@
1539REPLACE_TIME = @REPLACE_TIME@
1538REPLACE_TIMEGM = @REPLACE_TIMEGM@ 1540REPLACE_TIMEGM = @REPLACE_TIMEGM@
1539REPLACE_TIMESPEC_GET = @REPLACE_TIMESPEC_GET@ 1541REPLACE_TIMESPEC_GET = @REPLACE_TIMESPEC_GET@
1540REPLACE_TMPFILE = @REPLACE_TMPFILE@ 1542REPLACE_TMPFILE = @REPLACE_TMPFILE@
@@ -4574,8 +4576,8 @@ EXTRA_DIST += tempname.h
4574endif 4576endif
4575## end gnulib module tempname 4577## end gnulib module tempname
4576 4578
4577## begin gnulib module time 4579## begin gnulib module time-h
4578ifeq (,$(OMIT_GNULIB_MODULE_time)) 4580ifeq (,$(OMIT_GNULIB_MODULE_time-h))
4579 4581
4580BUILT_SOURCES += time.h 4582BUILT_SOURCES += time.h
4581 4583
@@ -4594,6 +4596,7 @@ time.h: time.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(
4594 -e 's/@''GNULIB_NANOSLEEP''@/$(GL_GNULIB_NANOSLEEP)/g' \ 4596 -e 's/@''GNULIB_NANOSLEEP''@/$(GL_GNULIB_NANOSLEEP)/g' \
4595 -e 's/@''GNULIB_STRFTIME''@/$(GL_GNULIB_STRFTIME)/g' \ 4597 -e 's/@''GNULIB_STRFTIME''@/$(GL_GNULIB_STRFTIME)/g' \
4596 -e 's/@''GNULIB_STRPTIME''@/$(GL_GNULIB_STRPTIME)/g' \ 4598 -e 's/@''GNULIB_STRPTIME''@/$(GL_GNULIB_STRPTIME)/g' \
4599 -e 's/@''GNULIB_TIME''@/$(GL_GNULIB_TIME)/g' \
4597 -e 's/@''GNULIB_TIMEGM''@/$(GL_GNULIB_TIMEGM)/g' \ 4600 -e 's/@''GNULIB_TIMEGM''@/$(GL_GNULIB_TIMEGM)/g' \
4598 -e 's/@''GNULIB_TIMESPEC_GET''@/$(GL_GNULIB_TIMESPEC_GET)/g' \ 4601 -e 's/@''GNULIB_TIMESPEC_GET''@/$(GL_GNULIB_TIMESPEC_GET)/g' \
4599 -e 's/@''GNULIB_TIMESPEC_GETRES''@/$(GL_GNULIB_TIMESPEC_GETRES)/g' \ 4602 -e 's/@''GNULIB_TIMESPEC_GETRES''@/$(GL_GNULIB_TIMESPEC_GETRES)/g' \
@@ -4615,6 +4618,7 @@ time.h: time.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(
4615 -e 's|@''REPLACE_MKTIME''@|$(REPLACE_MKTIME)|g' \ 4618 -e 's|@''REPLACE_MKTIME''@|$(REPLACE_MKTIME)|g' \
4616 -e 's|@''REPLACE_NANOSLEEP''@|$(REPLACE_NANOSLEEP)|g' \ 4619 -e 's|@''REPLACE_NANOSLEEP''@|$(REPLACE_NANOSLEEP)|g' \
4617 -e 's|@''REPLACE_STRFTIME''@|$(REPLACE_STRFTIME)|g' \ 4620 -e 's|@''REPLACE_STRFTIME''@|$(REPLACE_STRFTIME)|g' \
4621 -e 's|@''REPLACE_TIME''@|$(REPLACE_TIME)|g' \
4618 -e 's|@''REPLACE_TIMEGM''@|$(REPLACE_TIMEGM)|g' \ 4622 -e 's|@''REPLACE_TIMEGM''@|$(REPLACE_TIMEGM)|g' \
4619 -e 's|@''REPLACE_TIMESPEC_GET''@|$(REPLACE_TIMESPEC_GET)|g' \ 4623 -e 's|@''REPLACE_TIMESPEC_GET''@|$(REPLACE_TIMESPEC_GET)|g' \
4620 -e 's|@''REPLACE_TZSET''@|$(REPLACE_TZSET)|g' \ 4624 -e 's|@''REPLACE_TZSET''@|$(REPLACE_TZSET)|g' \
@@ -4633,7 +4637,7 @@ MOSTLYCLEANFILES += time.h time.h-t
4633EXTRA_DIST += time.in.h 4637EXTRA_DIST += time.in.h
4634 4638
4635endif 4639endif
4636## end gnulib module time 4640## end gnulib module time-h
4637 4641
4638## begin gnulib module time_r 4642## begin gnulib module time_r
4639ifeq (,$(OMIT_GNULIB_MODULE_time_r)) 4643ifeq (,$(OMIT_GNULIB_MODULE_time_r))
diff --git a/lib/stdio.in.h b/lib/stdio.in.h
index 3f8ea985335..098f841738c 100644
--- a/lib/stdio.in.h
+++ b/lib/stdio.in.h
@@ -36,6 +36,12 @@
36 36
37#ifndef _@GUARD_PREFIX@_STDIO_H 37#ifndef _@GUARD_PREFIX@_STDIO_H
38 38
39/* Suppress macOS deprecation warnings for sprintf and vsprintf. */
40#if (defined __APPLE__ && defined __MACH__) && !defined _POSIX_C_SOURCE
41# define _POSIX_C_SOURCE 200809L
42# define _GL_DEFINED__POSIX_C_SOURCE
43#endif
44
39#define _GL_ALREADY_INCLUDING_STDIO_H 45#define _GL_ALREADY_INCLUDING_STDIO_H
40 46
41/* The include_next requires a split double-inclusion guard. */ 47/* The include_next requires a split double-inclusion guard. */
@@ -43,6 +49,11 @@
43 49
44#undef _GL_ALREADY_INCLUDING_STDIO_H 50#undef _GL_ALREADY_INCLUDING_STDIO_H
45 51
52#ifdef _GL_DEFINED__POSIX_C_SOURCE
53# undef _GL_DEFINED__POSIX_C_SOURCE
54# undef _POSIX_C_SOURCE
55#endif
56
46#ifndef _@GUARD_PREFIX@_STDIO_H 57#ifndef _@GUARD_PREFIX@_STDIO_H
47#define _@GUARD_PREFIX@_STDIO_H 58#define _@GUARD_PREFIX@_STDIO_H
48 59
diff --git a/lib/time.in.h b/lib/time.in.h
index 87cda21413b..3f9af920e34 100644
--- a/lib/time.in.h
+++ b/lib/time.in.h
@@ -143,6 +143,20 @@ _GL_CXXALIAS_SYS (timespec_getres, int, (struct timespec *ts, int base));
143_GL_CXXALIASWARN (timespec_getres); 143_GL_CXXALIASWARN (timespec_getres);
144# endif 144# endif
145 145
146/* Return the number of seconds that have elapsed since the Epoch. */
147# if @GNULIB_TIME@
148# if @REPLACE_TIME@
149# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
150# define time rpl_time
151# endif
152_GL_FUNCDECL_RPL (time, time_t, (time_t *__tp));
153_GL_CXXALIAS_RPL (time, time_t, (time_t *__tp));
154# else
155_GL_CXXALIAS_SYS (time, time_t, (time_t *__tp));
156# endif
157_GL_CXXALIASWARN (time);
158# endif
159
146/* Sleep for at least RQTP seconds unless interrupted, If interrupted, 160/* Sleep for at least RQTP seconds unless interrupted, If interrupted,
147 return -1 and store the remaining time into RMTP. See 161 return -1 and store the remaining time into RMTP. See
148 <https://pubs.opengroup.org/onlinepubs/9699919799/functions/nanosleep.html>. */ 162 <https://pubs.opengroup.org/onlinepubs/9699919799/functions/nanosleep.html>. */
diff --git a/m4/gnulib-comp.m4 b/m4/gnulib-comp.m4
index 473284753b4..9586b5d6486 100644
--- a/m4/gnulib-comp.m4
+++ b/m4/gnulib-comp.m4
@@ -207,7 +207,7 @@ AC_DEFUN([gl_EARLY],
207 # Code from module sys_time: 207 # Code from module sys_time:
208 # Code from module sys_types: 208 # Code from module sys_types:
209 # Code from module tempname: 209 # Code from module tempname:
210 # Code from module time: 210 # Code from module time-h:
211 # Code from module time_r: 211 # Code from module time_r:
212 # Code from module time_rz: 212 # Code from module time_rz:
213 # Code from module timegm: 213 # Code from module timegm:
diff --git a/m4/time_h.m4 b/m4/time_h.m4
index b74870c3d0e..51d553a2f1a 100644
--- a/m4/time_h.m4
+++ b/m4/time_h.m4
@@ -2,7 +2,7 @@
2 2
3# Copyright (C) 2000-2001, 2003-2007, 2009-2023 Free Software Foundation, Inc. 3# Copyright (C) 2000-2001, 2003-2007, 2009-2023 Free Software Foundation, Inc.
4 4
5# serial 21 5# serial 22
6 6
7# This file is free software; the Free Software Foundation 7# This file is free software; the Free Software Foundation
8# gives unlimited permission to copy and/or distribute it, 8# gives unlimited permission to copy and/or distribute it,
@@ -137,6 +137,7 @@ AC_DEFUN([gl_TIME_H_REQUIRE_DEFAULTS],
137 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_NANOSLEEP]) 137 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_NANOSLEEP])
138 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRFTIME]) 138 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRFTIME])
139 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRPTIME]) 139 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRPTIME])
140 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TIME])
140 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TIMEGM]) 141 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TIMEGM])
141 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TIMESPEC_GET]) 142 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TIMESPEC_GET])
142 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TIMESPEC_GETRES]) 143 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TIMESPEC_GETRES])
@@ -169,6 +170,7 @@ AC_DEFUN([gl_TIME_H_DEFAULTS],
169 REPLACE_MKTIME=GNULIB_PORTCHECK; AC_SUBST([REPLACE_MKTIME]) 170 REPLACE_MKTIME=GNULIB_PORTCHECK; AC_SUBST([REPLACE_MKTIME])
170 REPLACE_NANOSLEEP=GNULIB_PORTCHECK; AC_SUBST([REPLACE_NANOSLEEP]) 171 REPLACE_NANOSLEEP=GNULIB_PORTCHECK; AC_SUBST([REPLACE_NANOSLEEP])
171 REPLACE_STRFTIME=GNULIB_PORTCHECK; AC_SUBST([REPLACE_STRFTIME]) 172 REPLACE_STRFTIME=GNULIB_PORTCHECK; AC_SUBST([REPLACE_STRFTIME])
173 REPLACE_TIME=0; AC_SUBST([REPLACE_TIME])
172 REPLACE_TIMEGM=GNULIB_PORTCHECK; AC_SUBST([REPLACE_TIMEGM]) 174 REPLACE_TIMEGM=GNULIB_PORTCHECK; AC_SUBST([REPLACE_TIMEGM])
173 REPLACE_TIMESPEC_GET=GNULIB_PORTCHECK; AC_SUBST([REPLACE_TIMESPEC_GET]) 175 REPLACE_TIMESPEC_GET=GNULIB_PORTCHECK; AC_SUBST([REPLACE_TIMESPEC_GET])
174 REPLACE_TZSET=GNULIB_PORTCHECK; AC_SUBST([REPLACE_TZSET]) 176 REPLACE_TZSET=GNULIB_PORTCHECK; AC_SUBST([REPLACE_TZSET])