aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xbuild-aux/config.sub4
-rw-r--r--doc/misc/texinfo.tex448
-rw-r--r--lib/_Noreturn.h16
-rw-r--r--lib/gnulib.mk.in1
4 files changed, 317 insertions, 152 deletions
diff --git a/build-aux/config.sub b/build-aux/config.sub
index 3b4c7624b68..a44fd8ae908 100755
--- a/build-aux/config.sub
+++ b/build-aux/config.sub
@@ -822,7 +822,9 @@ case $basic_machine in
822 cpu=m68k 822 cpu=m68k
823 vendor=next 823 vendor=next
824 case $os in 824 case $os in
825 nextstep* ) 825 openstep*)
826 ;;
827 nextstep*)
826 ;; 828 ;;
827 ns2*) 829 ns2*)
828 os=nextstep2 830 os=nextstep2
diff --git a/doc/misc/texinfo.tex b/doc/misc/texinfo.tex
index 667292a96a1..192284cccc1 100644
--- a/doc/misc/texinfo.tex
+++ b/doc/misc/texinfo.tex
@@ -3,7 +3,8 @@
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{2019-03-23.11} 6\def\texinfoversion{2019-03-03.15}
7
7% 8%
8% Copyright 1985, 1986, 1988, 1990-2019 Free Software Foundation, Inc. 9% Copyright 1985, 1986, 1988, 1990-2019 Free Software Foundation, Inc.
9% 10%
@@ -386,8 +387,14 @@
386 % take effect in \write's, yet the group defined by the \vbox ends 387 % take effect in \write's, yet the group defined by the \vbox ends
387 % before the \shipout runs. 388 % before the \shipout runs.
388 % 389 %
389 \atdummies % don't expand commands in the output. 390 \indexdummies % don't expand commands in the output.
390 \turnoffactive 391 \normalturnoffactive % \ in index entries must not stay \, e.g., if
392 % the page break happens to be in the middle of an example.
393 % We don't want .vr (or whatever) entries like this:
394 % \entry{{\indexbackslash }acronym}{32}{\code {\acronym}}
395 % "\acronym" won't work when it's read back in;
396 % it needs to be
397 % {\code {{\backslashcurfont }acronym}
391 \shipout\vbox{% 398 \shipout\vbox{%
392 % Do this early so pdf references go to the beginning of the page. 399 % Do this early so pdf references go to the beginning of the page.
393 \ifpdfmakepagedest \pdfdest name{\the\pageno} xyz\fi 400 \ifpdfmakepagedest \pdfdest name{\the\pageno} xyz\fi
@@ -448,10 +455,11 @@
448 }% 455 }%
449} 456}
450 457
451% First remove any @comment, then any @c comment. Pass the result on to 458% First remove any @comment, then any @c comment. Also remove a @texinfoc
452% \argcheckspaces. 459% comment (see \scanmacro for details). Pass the result on to \argcheckspaces.
453\def\argremovecomment#1\comment#2\ArgTerm{\argremovec #1\c\ArgTerm} 460\def\argremovecomment#1\comment#2\ArgTerm{\argremovec #1\c\ArgTerm}
454\def\argremovec#1\c#2\ArgTerm{\argcheckspaces#1\^^M\ArgTerm} 461\def\argremovec#1\c#2\ArgTerm{\argremovetexinfoc #1\texinfoc\ArgTerm}
462\def\argremovetexinfoc#1\texinfoc#2\ArgTerm{\argcheckspaces#1\^^M\ArgTerm}
455 463
456% Each occurrence of `\^^M' or `<space>\^^M' is replaced by a single space. 464% Each occurrence of `\^^M' or `<space>\^^M' is replaced by a single space.
457% 465%
@@ -1123,16 +1131,6 @@ where each line of input produces a line of output.}
1123 \fi 1131 \fi
1124\fi 1132\fi
1125 1133
1126\newif\ifpdforxetex
1127\pdforxetexfalse
1128\ifpdf
1129 \pdforxetextrue
1130\fi
1131\ifx\XeTeXrevision\thisisundefined\else
1132 \pdforxetextrue
1133\fi
1134
1135
1136% PDF uses PostScript string constants for the names of xref targets, 1134% PDF uses PostScript string constants for the names of xref targets,
1137% for display in the outlines, and in other places. Thus, we have to 1135% for display in the outlines, and in other places. Thus, we have to
1138% double any backslashes. Otherwise, a name like "\node" will be 1136% double any backslashes. Otherwise, a name like "\node" will be
@@ -2846,7 +2844,7 @@ end
2846 2844
2847% @t, explicit typewriter. 2845% @t, explicit typewriter.
2848\def\t#1{% 2846\def\t#1{%
2849 {\tt \plainfrenchspacing #1}% 2847 {\tt \rawbackslash \plainfrenchspacing #1}%
2850 \null 2848 \null
2851} 2849}
2852 2850
@@ -2873,6 +2871,7 @@ end
2873 % Turn off hyphenation. 2871 % Turn off hyphenation.
2874 \nohyphenation 2872 \nohyphenation
2875 % 2873 %
2874 \rawbackslash
2876 \plainfrenchspacing 2875 \plainfrenchspacing
2877 #1% 2876 #1%
2878 }% 2877 }%
@@ -3113,7 +3112,7 @@ end
3113% So now @email is just like @uref, unless we are pdf. 3112% So now @email is just like @uref, unless we are pdf.
3114% 3113%
3115%\def\email#1{\angleleft{\tt #1}\angleright} 3114%\def\email#1{\angleleft{\tt #1}\angleright}
3116\ifpdforxetex 3115\ifpdf
3117 \def\email#1{\doemail#1,,\finish} 3116 \def\email#1{\doemail#1,,\finish}
3118 \def\doemail#1,#2,#3\finish{\begingroup 3117 \def\doemail#1,#2,#3\finish{\begingroup
3119 \unsepspaces 3118 \unsepspaces
@@ -3123,7 +3122,18 @@ end
3123 \endlink 3122 \endlink
3124 \endgroup} 3123 \endgroup}
3125\else 3124\else
3126 \let\email=\uref 3125 \ifx\XeTeXrevision\thisisundefined
3126 \let\email=\uref
3127 \else
3128 \def\email#1{\doemail#1,,\finish}
3129 \def\doemail#1,#2,#3\finish{\begingroup
3130 \unsepspaces
3131 \pdfurl{mailto:#1}%
3132 \setbox0 = \hbox{\ignorespaces #2}%
3133 \ifdim\wd0>0pt\unhbox0\else\code{#1}\fi
3134 \endlink
3135 \endgroup}
3136 \fi
3127\fi 3137\fi
3128 3138
3129% @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always), 3139% @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always),
@@ -4657,6 +4667,19 @@ end
4657 } 4667 }
4658} 4668}
4659 4669
4670% We have this subroutine so that we can handle at least some @value's
4671% properly in indexes (we call \makevalueexpandable in \indexdummies).
4672% The command has to be fully expandable (if the variable is set), since
4673% the result winds up in the index file. This means that if the
4674% variable's value contains other Texinfo commands, it's almost certain
4675% it will fail (although perhaps we could fix that with sufficient work
4676% to do a one-level expansion on the result, instead of complete).
4677%
4678% Unfortunately, this has the consequence that when _ is in the *value*
4679% of an @set, it does not print properly in the roman fonts (get the cmr
4680% dot accent at position 126 instead). No fix comes to mind, and it's
4681% been this way since 2003 or earlier, so just ignore it.
4682%
4660\def\expandablevalue#1{% 4683\def\expandablevalue#1{%
4661 \expandafter\ifx\csname SET#1\endcsname\relax 4684 \expandafter\ifx\csname SET#1\endcsname\relax
4662 {[No value for ``#1'']}% 4685 {[No value for ``#1'']}%
@@ -4685,7 +4708,7 @@ end
4685% if possible, otherwise sort late. 4708% if possible, otherwise sort late.
4686\def\indexnofontsvalue#1{% 4709\def\indexnofontsvalue#1{%
4687 \expandafter\ifx\csname SET#1\endcsname\relax 4710 \expandafter\ifx\csname SET#1\endcsname\relax
4688 ZZZZZZZ% 4711 ZZZZZZZ
4689 \else 4712 \else
4690 \csname SET#1\endcsname 4713 \csname SET#1\endcsname
4691 \fi 4714 \fi
@@ -4835,8 +4858,23 @@ end
4835\def\docodeindexxxx #1{\doind{\indexname}{\code{#1}}} 4858\def\docodeindexxxx #1{\doind{\indexname}{\code{#1}}}
4836 4859
4837 4860
4838% Used for the aux, toc and index files to prevent expansion of Texinfo 4861% Used when writing an index entry out to an index file to prevent
4839% commands. 4862% expansion of Texinfo commands that can appear in an index entry.
4863%
4864\def\indexdummies{%
4865 \escapechar = `\\ % use backslash in output files.
4866 \definedummyletter\@%
4867 \definedummyletter\ %
4868 %
4869 % For texindex which always views { and } as separators.
4870 \def\{{\lbracechar{}}%
4871 \def\}{\rbracechar{}}%
4872 %
4873 % Do the redefinitions.
4874 \definedummies
4875}
4876
4877% Used for the aux and toc files, where @ is the escape character.
4840% 4878%
4841\def\atdummies{% 4879\def\atdummies{%
4842 \definedummyletter\@% 4880 \definedummyletter\@%
@@ -4866,7 +4904,8 @@ end
4866\def\definedummyletter#1{\def#1{\string#1}}% 4904\def\definedummyletter#1{\def#1{\string#1}}%
4867\let\definedummyaccent\definedummyletter 4905\let\definedummyaccent\definedummyletter
4868 4906
4869% Called from \atdummies to prevent the expansion of commands. 4907% Called from \indexdummies and \atdummies, to effectively prevent
4908% the expansion of commands.
4870% 4909%
4871\def\definedummies{% 4910\def\definedummies{%
4872 % 4911 %
@@ -5031,9 +5070,11 @@ end
5031 \commondummyword\xref 5070 \commondummyword\xref
5032} 5071}
5033 5072
5073% This does nothing, but for a time it was recommended to use
5074% \usebracesinindexestrue to be able to use braces in index entries.
5075
5034\let\indexlbrace\relax 5076\let\indexlbrace\relax
5035\let\indexrbrace\relax 5077\let\indexrbrace\relax
5036\let\indexatchar\relax
5037 5078
5038{\catcode`\@=0 5079{\catcode`\@=0
5039\catcode`\\=13 5080\catcode`\\=13
@@ -5067,8 +5108,10 @@ end
5067 } 5108 }
5068 5109
5069 \gdef\indexnonalnumreappear{% 5110 \gdef\indexnonalnumreappear{%
5111 \useindexbackslash
5070 \let-\normaldash 5112 \let-\normaldash
5071 \let<\normalless 5113 \let<\normalless
5114 \def\@{@}%
5072 } 5115 }
5073} 5116}
5074 5117
@@ -5179,6 +5222,8 @@ end
5179 5222
5180 5223
5181 5224
5225\let\SETmarginindex=\relax % put index entries in margin (undocumented)?
5226
5182% #1 is the index name, #2 is the entry text. 5227% #1 is the index name, #2 is the entry text.
5183\def\doind#1#2{% 5228\def\doind#1#2{%
5184 \iflinks 5229 \iflinks
@@ -5210,6 +5255,13 @@ end
5210\fi} 5255\fi}
5211\def\indexisfl{fl} 5256\def\indexisfl{fl}
5212 5257
5258% Output \ as {\indexbackslash}, because \ is an escape character in
5259% the index files.
5260\let\indexbackslash=\relax
5261{\catcode`\@=0 \catcode`\\=\active
5262 @gdef@useindexbackslash{@def\{{@indexbackslash}}}
5263}
5264
5213% Definition for writing index entry sort key. 5265% Definition for writing index entry sort key.
5214{ 5266{
5215\catcode`\-=13 5267\catcode`\-=13
@@ -5221,25 +5273,14 @@ end
5221 \xdef\indexsortkey{#1}\endgroup} 5273 \xdef\indexsortkey{#1}\endgroup}
5222} 5274}
5223 5275
5224\def\indexwriteseealso#1{
5225 \gdef\pagenumbertext{@seealso{#1}}%
5226}
5227
5228% The default definitions
5229\def\sortas#1{}%
5230\def\seealso#1{\i{\putwordSeeAlso}\ #1}% for sorted index file only
5231\def\putwordSeeAlso{see also}
5232
5233% Given index entry text like "aaa @subentry bbb @sortas{ZZZ}": 5276% Given index entry text like "aaa @subentry bbb @sortas{ZZZ}":
5234% * Set \bracedtext to "{aaa}{bbb}" 5277% * Set \bracedtext to "{aaa}{bbb}"
5235% * Set \fullindexsortkey to "aaa @subentry ZZZ" 5278% * Set \fullindexsortkey to "aaa @subentry ZZZ"
5236% * If @seealso occurs, set \pagenumbertext
5237% 5279%
5238\def\splitindexentry#1{% 5280\def\splitindexentry#1{%
5239 \gdef\fullindexsortkey{}% 5281 \gdef\fullindexsortkey{}%
5240 \xdef\bracedtext{}% 5282 \xdef\bracedtext{}%
5241 \def\sep{}% 5283 \def\sep{}%
5242 \def\seealso##1{}%
5243 \expandafter\doindexsegment#1\subentry\finish\subentry 5284 \expandafter\doindexsegment#1\subentry\finish\subentry
5244} 5285}
5245 5286
@@ -5251,6 +5292,7 @@ end
5251 % 5292 %
5252 % Fully expand the segment, throwing away any @sortas directives, and 5293 % Fully expand the segment, throwing away any @sortas directives, and
5253 % trim spaces. 5294 % trim spaces.
5295 \def\sortas##1{}%
5254 \edef\trimmed{\segment}% 5296 \edef\trimmed{\segment}%
5255 \edef\trimmed{\expandafter\eatspaces\expandafter{\trimmed}}% 5297 \edef\trimmed{\expandafter\eatspaces\expandafter{\trimmed}}%
5256 % 5298 %
@@ -5260,20 +5302,16 @@ end
5260 % font commands turned off. 5302 % font commands turned off.
5261 \bgroup 5303 \bgroup
5262 \let\sortas\indexwritesortas 5304 \let\sortas\indexwritesortas
5263 \let\seealso\indexwriteseealso
5264 \indexnofonts 5305 \indexnofonts
5265 % The braces around the commands are recognized by texindex. 5306 % The braces around the commands are recognized by texindex.
5266 \def\lbracechar{{\indexlbrace}}% 5307 \def\lbracechar{{\indexlbrace}}%
5267 \def\rbracechar{{\indexrbrace}}% 5308 \def\rbracechar{{\indexrbrace}}%
5268 \let\{=\lbracechar 5309 \let\{=\lbracechar
5269 \let\}=\rbracechar 5310 \let\}=\rbracechar
5270 \def\@{{\indexatchar}}%
5271 \def\atchar##1{\@}%
5272 % 5311 %
5273 \let\indexsortkey\empty 5312 \let\indexsortkey\empty
5274 \global\let\pagenumbertext\empty
5275 % Execute the segment and throw away the typeset output. This executes 5313 % Execute the segment and throw away the typeset output. This executes
5276 % any @sortas or @seealso commands in this segment. 5314 % any @sortas commands in this segment.
5277 \setbox\dummybox = \hbox{\segment}% 5315 \setbox\dummybox = \hbox{\segment}%
5278 \ifx\indexsortkey\empty{% 5316 \ifx\indexsortkey\empty{%
5279 \indexnonalnumdisappear 5317 \indexnonalnumdisappear
@@ -5294,20 +5332,21 @@ end
5294 \fi 5332 \fi
5295} 5333}
5296\def\isfinish{\finish}% 5334\def\isfinish{\finish}%
5297\newbox\dummybox % used above
5298 5335
5299\let\subentry\relax 5336\let\subentry\relax
5300 5337
5301% Write the entry in \toks0 to the index file. 5338% Write the entry in \toks0 to the index file.
5302% 5339%
5303\def\doindwrite{% 5340\def\doindwrite{%
5304 \maybemarginindex 5341 % Put the index entry in the margin if desired.
5305 % 5342 \ifx\SETmarginindex\relax\else
5306 \atdummies 5343 \insert\margin{\hbox{\vrule height8pt depth3pt width0pt \the\toks0}}%
5344 \fi
5307 % 5345 %
5308 % For texindex which always views { and } as separators. 5346 % Remember, we are within a group.
5309 \def\{{\lbracechar{}}% 5347 \indexdummies % Must do this here, since \bf, etc expand at this stage
5310 \def\}{\rbracechar{}}% 5348 \useindexbackslash % \indexbackslash isn't defined now so it will be output
5349 % as is; and it will print as backslash.
5311 % 5350 %
5312 % Split the entry into primary entry and any subentries, and get the index 5351 % Split the entry into primary entry and any subentries, and get the index
5313 % sort key. 5352 % sort key.
@@ -5321,21 +5360,11 @@ end
5321 % 5360 %
5322 \edef\temp{% 5361 \edef\temp{%
5323 \write\writeto{% 5362 \write\writeto{%
5324 \string\entry{\fullindexsortkey}% 5363 \string\entry{\fullindexsortkey}{\noexpand\folio}\bracedtext}%
5325 {\ifx\pagenumbertext\empty\noexpand\folio\else\pagenumbertext\fi}%
5326 \bracedtext}%
5327 }% 5364 }%
5328 \temp 5365 \temp
5329} 5366}
5330 5367\newbox\dummybox % used above
5331% Put the index entry in the margin if desired (undocumented).
5332\def\maybemarginindex{%
5333 \ifx\SETmarginindex\relax\else
5334 \insert\margin{\hbox{\vrule height8pt depth3pt width0pt \relax\indextext}}%
5335 \fi
5336}
5337\let\SETmarginindex=\relax
5338
5339 5368
5340% Take care of unwanted page breaks/skips around a whatsit: 5369% Take care of unwanted page breaks/skips around a whatsit:
5341% 5370%
@@ -5423,14 +5452,9 @@ end
5423% \entry {topic}{pagelist} 5452% \entry {topic}{pagelist}
5424% for a topic that is used without subtopics 5453% for a topic that is used without subtopics
5425% \primary {topic} 5454% \primary {topic}
5426% \entry {topic}{}
5427% for the beginning of a topic that is used with subtopics 5455% for the beginning of a topic that is used with subtopics
5428% \secondary {subtopic}{pagelist} 5456% \secondary {subtopic}{pagelist}
5429% for each subtopic. 5457% for each subtopic.
5430% \secondary {subtopic}{}
5431% for a subtopic with sub-subtopics
5432% \tertiary {subtopic}{subsubtopic}{pagelist}
5433% for each sub-subtopic.
5434 5458
5435% Define the user-accessible indexing commands 5459% Define the user-accessible indexing commands
5436% @findex, @vindex, @kindex, @cindex. 5460% @findex, @vindex, @kindex, @cindex.
@@ -5455,10 +5479,14 @@ end
5455 \plainfrenchspacing 5479 \plainfrenchspacing
5456 \everypar = {}% don't want the \kern\-parindent from indentation suppression. 5480 \everypar = {}% don't want the \kern\-parindent from indentation suppression.
5457 % 5481 %
5482 % See if the index file exists and is nonempty.
5483 % Change catcode of @ here so that if the index file contains
5484 % \initial {@}
5485 % as its first line, TeX doesn't complain about mismatched braces
5486 % (because it thinks @} is a control sequence).
5487 \catcode`\@ = 12
5458 % See comment in \requireopenindexfile. 5488 % See comment in \requireopenindexfile.
5459 \def\indexname{#1}\ifx\indexname\indexisfl\def\indexname{f1}\fi 5489 \def\indexname{#1}\ifx\indexname\indexisfl\def\indexname{f1}\fi
5460 %
5461 % See if the index file exists and is nonempty.
5462 \openin 1 \jobname.\indexname s 5490 \openin 1 \jobname.\indexname s
5463 \ifeof 1 5491 \ifeof 1
5464 % \enddoublecolumns gets confused if there is no text in the index, 5492 % \enddoublecolumns gets confused if there is no text in the index,
@@ -5468,6 +5496,8 @@ end
5468 \putwordIndexNonexistent 5496 \putwordIndexNonexistent
5469 \typeout{No file \jobname.\indexname s.}% 5497 \typeout{No file \jobname.\indexname s.}%
5470 \else 5498 \else
5499 \catcode`\\ = 0
5500 %
5471 % If the index file exists but is empty, then \openin leaves \ifeof 5501 % If the index file exists but is empty, then \openin leaves \ifeof
5472 % false. We have to make TeX try to read something from the file, so 5502 % false. We have to make TeX try to read something from the file, so
5473 % it can discover if there is anything in it. 5503 % it can discover if there is anything in it.
@@ -5475,27 +5505,47 @@ end
5475 \ifeof 1 5505 \ifeof 1
5476 \putwordIndexIsEmpty 5506 \putwordIndexIsEmpty
5477 \else 5507 \else
5478 \expandafter\printindexzz\thisline\relax\relax\finish% 5508 % Index files are almost Texinfo source, but we use \ as the escape
5509 % character. It would be better to use @, but that's too big a change
5510 % to make right now.
5511 \def\indexbackslash{\ttbackslash}%
5512 \let\indexlbrace\{ % Likewise, set these sequences for braces
5513 \let\indexrbrace\} % used in the sort key.
5514 \begindoublecolumns
5515 \let\dotheinsertentrybox\dotheinsertentryboxwithpenalty
5516 %
5517 % Read input from the index file line by line.
5518 \loopdo
5519 \ifeof1 \else
5520 \read 1 to \nextline
5521 \fi
5522 %
5523 \indexinputprocessing
5524 \thisline
5525 %
5526 \ifeof1\else
5527 \let\thisline\nextline
5528 \repeat
5529 %%
5530 \enddoublecolumns
5479 \fi 5531 \fi
5480 \fi 5532 \fi
5481 \closein 1 5533 \closein 1
5482\endgroup} 5534\endgroup}
5535\def\loopdo#1\repeat{\def\body{#1}\loopdoxxx}
5536\def\loopdoxxx{\let\next=\relax\body\let\next=\loopdoxxx\fi\next}
5483 5537
5484% If the index file starts with a backslash, forgo reading the index 5538\def\indexinputprocessing{%
5485% file altogether. If somebody upgrades texinfo.tex they may still have 5539 \ifeof1
5486% old index files using \ as the escape character. Reading this would 5540 \let\firsttoken\relax
5487% at best lead to typesetting garbage, at worst a TeX syntax error.
5488\def\printindexzz#1#2\finish{%
5489 % NB this won't work if the index file starts with a group...
5490 \uccode`\~=`\\ \uppercase{\if\noexpand~}\noexpand#1
5491 \message{skipping sorted index file}%
5492 (Skipped sorted index file in obsolete format)
5493 \else 5541 \else
5494 \begindoublecolumns 5542 \edef\act{\gdef\noexpand\firsttoken{\getfirsttoken\nextline}}%
5495 \input \jobname.\indexname s 5543 \act
5496 \enddoublecolumns
5497 \fi 5544 \fi
5498} 5545}
5546\def\getfirsttoken#1{\expandafter\getfirsttokenx#1\endfirsttoken}
5547\long\def\getfirsttokenx#1#2\endfirsttoken{\noexpand#1}
5548
5499 5549
5500% These macros are used by the sorted index file itself. 5550% These macros are used by the sorted index file itself.
5501% Change them to control the appearance of the index. 5551% Change them to control the appearance of the index.
@@ -5504,18 +5554,12 @@ end
5504\catcode`\|=13 \catcode`\<=13 \catcode`\>=13 \catcode`\+=13 \catcode`\"=13 5554\catcode`\|=13 \catcode`\<=13 \catcode`\>=13 \catcode`\+=13 \catcode`\"=13
5505\catcode`\$=3 5555\catcode`\$=3
5506\gdef\initialglyphs{% 5556\gdef\initialglyphs{%
5507 % special control sequences used in the index sort key
5508 \let\indexlbrace\{%
5509 \let\indexrbrace\}%
5510 \let\indexatchar\@%
5511 %
5512 % Some changes for non-alphabetic characters. Using the glyphs from the 5557 % Some changes for non-alphabetic characters. Using the glyphs from the
5513 % math fonts looks more consistent than the typewriter font used elsewhere 5558 % math fonts looks more consistent than the typewriter font used elsewhere
5514 % for these characters. 5559 % for these characters.
5515 \uccode`\~=`\\ \uppercase{\def~{\math{\backslash}}} 5560 \def\indexbackslash{\math{\backslash}}%
5561 \let\\=\indexbackslash
5516 % 5562 %
5517 % In case @\ is used for backslash
5518 \uppercase{\let\\=~}
5519 % Can't get bold backslash so don't use bold forward slash 5563 % Can't get bold backslash so don't use bold forward slash
5520 \catcode`\/=13 5564 \catcode`\/=13
5521 \def/{{\secrmnotbold \normalslash}}% 5565 \def/{{\secrmnotbold \normalslash}}%
@@ -5575,6 +5619,12 @@ end
5575\def\entry{% 5619\def\entry{%
5576 \begingroup 5620 \begingroup
5577 % 5621 %
5622 % For pdfTeX and XeTeX.
5623 % The redefinition of \domark stops marks being added in \pdflink to
5624 % preserve coloured links across page boundaries. Otherwise the marks
5625 % would get in the way of \lastbox in \insertentrybox.
5626 \let\domark\relax
5627 %
5578 % Start a new paragraph if necessary, so our assignments below can't 5628 % Start a new paragraph if necessary, so our assignments below can't
5579 % affect previous text. 5629 % affect previous text.
5580 \par 5630 \par
@@ -5607,31 +5657,35 @@ end
5607\gdef\finishentry#1{% 5657\gdef\finishentry#1{%
5608 \egroup % end box A 5658 \egroup % end box A
5609 \dimen@ = \wd\boxA % Length of text of entry 5659 \dimen@ = \wd\boxA % Length of text of entry
5610 \global\setbox\boxA=\hbox\bgroup 5660 \global\setbox\boxA=\hbox\bgroup\unhbox\boxA
5611 \unhbox\boxA 5661 % #1 is the page number.
5612 % #1 is the page number. 5662 %
5663 % Get the width of the page numbers, and only use
5664 % leaders if they are present.
5665 \global\setbox\boxB = \hbox{#1}%
5666 \ifdim\wd\boxB = 0pt
5667 \null\nobreak\hfill\ %
5668 \else
5669 %
5670 \null\nobreak\indexdotfill % Have leaders before the page number.
5613 % 5671 %
5614 % Get the width of the page numbers, and only use 5672 \ifpdf
5615 % leaders if they are present. 5673 \pdfgettoks#1.%
5616 \global\setbox\boxB = \hbox{#1}% 5674 \hskip\skip\thinshrinkable\the\toksA
5617 \ifdim\wd\boxB = 0pt
5618 \null\nobreak\hfill\ %
5619 \else 5675 \else
5620 % 5676 \ifx\XeTeXrevision\thisisundefined
5621 \null\nobreak\indexdotfill % Have leaders before the page number. 5677 \hskip\skip\thinshrinkable #1%
5622 % 5678 \else
5623 \ifpdforxetex
5624 \pdfgettoks#1.% 5679 \pdfgettoks#1.%
5625 \hskip\skip\thinshrinkable\the\toksA 5680 \hskip\skip\thinshrinkable\the\toksA
5626 \else
5627 \hskip\skip\thinshrinkable #1%
5628 \fi 5681 \fi
5629 \fi 5682 \fi
5683 \fi
5630 \egroup % end \boxA 5684 \egroup % end \boxA
5631 \ifdim\wd\boxB = 0pt 5685 \ifdim\wd\boxB = 0pt
5632 \noindent\unhbox\boxA\par 5686 \global\setbox\entrybox=\vbox{\unhbox\boxA}%
5633 \nobreak 5687 \else
5634 \else\bgroup 5688 \global\setbox\entrybox=\vbox\bgroup
5635 % We want the text of the entries to be aligned to the left, and the 5689 % We want the text of the entries to be aligned to the left, and the
5636 % page numbers to be aligned to the right. 5690 % page numbers to be aligned to the right.
5637 % 5691 %
@@ -5697,11 +5751,55 @@ end
5697 \egroup % The \vbox 5751 \egroup % The \vbox
5698 \fi 5752 \fi
5699 \endgroup 5753 \endgroup
5754 \dotheinsertentrybox
5700}} 5755}}
5701 5756
5702\newskip\thinshrinkable 5757\newskip\thinshrinkable
5703\skip\thinshrinkable=.15em minus .15em 5758\skip\thinshrinkable=.15em minus .15em
5704 5759
5760\newbox\entrybox
5761\def\insertentrybox{%
5762 \ourunvbox\entrybox
5763}
5764
5765% default definition
5766\let\dotheinsertentrybox\insertentrybox
5767
5768% Use \lastbox to take apart vbox box by box, and add each sub-box
5769% to the current vertical list.
5770\def\ourunvbox#1{%
5771\bgroup % for local binding of \delayedbox
5772 % Remove the last box from box #1
5773 \global\setbox#1=\vbox{%
5774 \unvbox#1%
5775 \unskip % remove any glue
5776 \unpenalty
5777 \global\setbox\interbox=\lastbox
5778 }%
5779 \setbox\delayedbox=\box\interbox
5780 \ifdim\ht#1=0pt\else
5781 \ourunvbox#1 % Repeat on what's left of the box
5782 \nobreak
5783 \fi
5784 \box\delayedbox
5785\egroup
5786}
5787\newbox\delayedbox
5788\newbox\interbox
5789
5790% Used from \printindex. \firsttoken should be the first token
5791% after the \entry. If it's not another \entry, we are at the last
5792% line of a group of index entries, so insert a penalty to discourage
5793% widowed index entries.
5794\def\dotheinsertentryboxwithpenalty{%
5795 \ifx\firsttoken\isentry
5796 \else
5797 \penalty 9000
5798 \fi
5799 \insertentrybox
5800}
5801\def\isentry{\entry}%
5802
5705% Like plain.tex's \dotfill, except uses up at least 1 em. 5803% Like plain.tex's \dotfill, except uses up at least 1 em.
5706% The filll stretch here overpowers both the fil and fill stretch to push 5804% The filll stretch here overpowers both the fil and fill stretch to push
5707% the page number to the right. 5805% the page number to the right.
@@ -5711,15 +5809,24 @@ end
5711 5809
5712\def\primary #1{\line{#1\hfil}} 5810\def\primary #1{\line{#1\hfil}}
5713 5811
5714\def\secondary{\indententry{0.5cm}} 5812\newskip\secondaryindent \secondaryindent=0.5cm
5715\def\tertiary{\indententry{1cm}} 5813\def\secondary#1#2{{%
5716 5814 \parfillskip=0in
5717\def\indententry#1#2#3{% 5815 \parskip=0in
5718 \bgroup 5816 \hangindent=1in
5719 \leftskip=#1 5817 \hangafter=1
5720 \entry{#2}{#3}% 5818 \noindent\hskip\secondaryindent\hbox{#1}\indexdotfill
5721 \egroup 5819 \ifpdf
5722} 5820 \pdfgettoks#2.\ \the\toksA % The page number ends the paragraph.
5821 \else
5822 \ifx\XeTeXrevision\thisisundefined
5823 #2
5824 \else
5825 \pdfgettoks#2.\ \the\toksA % The page number ends the paragraph.
5826 \fi
5827 \fi
5828 \par
5829}}
5723 5830
5724% Define two-column mode, which we use to typeset indexes. 5831% Define two-column mode, which we use to typeset indexes.
5725% Adapted from the TeXbook, page 416, which is to say, 5832% Adapted from the TeXbook, page 416, which is to say,
@@ -5737,6 +5844,17 @@ end
5737 \output = {% 5844 \output = {%
5738 \savetopmark 5845 \savetopmark
5739 % 5846 %
5847 % Here is a possibility not foreseen in manmac: if we accumulate a
5848 % whole lot of material, we might end up calling this \output
5849 % routine twice in a row (see the doublecol-lose test, which is
5850 % essentially a couple of indexes with @setchapternewpage off). In
5851 % that case we just ship out what is in \partialpage with the normal
5852 % output routine. Generally, \partialpage will be empty when this
5853 % runs and this will be a no-op. See the indexspread.tex test case.
5854 \ifvoid\partialpage \else
5855 \onepageout{\pagecontents\partialpage}%
5856 \fi
5857 %
5740 \global\setbox\partialpage = \vbox{% 5858 \global\setbox\partialpage = \vbox{%
5741 % Unvbox the main output page. 5859 % Unvbox the main output page.
5742 \unvbox\PAGE 5860 \unvbox\PAGE
@@ -6016,9 +6134,11 @@ end
6016 6134
6017% @raisesections: treat @section as chapter, @subsection as section, etc. 6135% @raisesections: treat @section as chapter, @subsection as section, etc.
6018\def\raisesections{\global\advance\secbase by -1} 6136\def\raisesections{\global\advance\secbase by -1}
6137\let\up=\raisesections % original BFox name
6019 6138
6020% @lowersections: treat @chapter as section, @section as subsection, etc. 6139% @lowersections: treat @chapter as section, @section as subsection, etc.
6021\def\lowersections{\global\advance\secbase by 1} 6140\def\lowersections{\global\advance\secbase by 1}
6141\let\down=\lowersections % original BFox name
6022 6142
6023% we only have subsub. 6143% we only have subsub.
6024\chardef\maxseclevel = 3 6144\chardef\maxseclevel = 3
@@ -6670,8 +6790,13 @@ end
6670 % 1 and 2 (the page numbers aren't printed), and so are the first 6790 % 1 and 2 (the page numbers aren't printed), and so are the first
6671 % two pages of the document. Thus, we'd have two destinations named 6791 % two pages of the document. Thus, we'd have two destinations named
6672 % `1', and two named `2'. 6792 % `1', and two named `2'.
6673 \ifpdforxetex 6793 \ifpdf
6674 \global\pdfmakepagedesttrue 6794 \global\pdfmakepagedesttrue
6795 \else
6796 \ifx\XeTeXrevision\thisisundefined
6797 \else
6798 \global\pdfmakepagedesttrue
6799 \fi
6675 \fi 6800 \fi
6676} 6801}
6677 6802
@@ -7034,7 +7159,11 @@ end
7034 7159
7035% @cartouche ... @end cartouche: draw rectangle w/rounded corners around 7160% @cartouche ... @end cartouche: draw rectangle w/rounded corners around
7036% environment contents. 7161% environment contents.
7037 7162\font\circle=lcircle10
7163\newdimen\circthick
7164\newdimen\cartouter\newdimen\cartinner
7165\newskip\normbskip\newskip\normpskip\newskip\normlskip
7166\circthick=\fontdimen8\circle
7038% 7167%
7039\def\ctl{{\circle\char'013\hskip -6pt}}% 6pt from pl file: 1/2charwidth 7168\def\ctl{{\circle\char'013\hskip -6pt}}% 6pt from pl file: 1/2charwidth
7040\def\ctr{{\hskip 6pt\circle\char'010}} 7169\def\ctr{{\hskip 6pt\circle\char'010}}
@@ -7049,18 +7178,7 @@ end
7049% 7178%
7050\newskip\lskip\newskip\rskip 7179\newskip\lskip\newskip\rskip
7051 7180
7052% only require the font if @cartouche is actually used
7053\def\cartouchefontdefs{%
7054 \font\circle=lcircle10\relax
7055 \circthick=\fontdimen8\circle
7056}
7057\newdimen\circthick
7058\newdimen\cartouter\newdimen\cartinner
7059\newskip\normbskip\newskip\normpskip\newskip\normlskip
7060
7061
7062\envdef\cartouche{% 7181\envdef\cartouche{%
7063 \cartouchefontdefs
7064 \ifhmode\par\fi % can't be in the midst of a paragraph. 7182 \ifhmode\par\fi % can't be in the midst of a paragraph.
7065 \startsavinginserts 7183 \startsavinginserts
7066 \lskip=\leftskip \rskip=\rightskip 7184 \lskip=\leftskip \rskip=\rightskip
@@ -7932,18 +8050,36 @@ end
7932 } 8050 }
7933\fi 8051\fi
7934 8052
8053% alias because \c means cedilla in @tex or @math
8054\let\texinfoc=\c
8055
8056\newcount\savedcatcodeone
8057\newcount\savedcatcodetwo
8058
7935% Used at the time of macro expansion. 8059% Used at the time of macro expansion.
7936% Argument is macro body with arguments substituted 8060% Argument is macro body with arguments substituted
7937\def\scanmacro#1{% 8061\def\scanmacro#1{%
7938 \newlinechar`\^^M 8062 \newlinechar`\^^M
7939 \def\xeatspaces{\eatspaces}% 8063 \def\xeatspaces{\eatspaces}%
7940 % 8064 %
8065 % Temporarily undo catcode changes of \printindex. Set catcode of @ to
8066 % 0 so that @-commands in macro expansions aren't printed literally when
8067 % formatting an index file, where \ is used as the escape character.
8068 \savedcatcodeone=\catcode`\@
8069 \savedcatcodetwo=\catcode`\\
8070 \catcode`\@=0
8071 \catcode`\\=\active
8072 %
7941 % Process the macro body under the current catcode regime. 8073 % Process the macro body under the current catcode regime.
7942 \scantokens{#1@comment}% 8074 \scantokens{#1@texinfoc}%
7943 % 8075 %
7944 % The \comment is to remove the \newlinechar added by \scantokens, and 8076 \catcode`\@=\savedcatcodeone
7945 % can be noticed by \parsearg. Note \c isn't used because this means cedilla 8077 \catcode`\\=\savedcatcodetwo
7946 % in math mode. 8078 %
8079 % The \texinfoc is to remove the \newlinechar added by \scantokens, and
8080 % can be noticed by \parsearg.
8081 % We avoid surrounding the call to \scantokens with \bgroup and \egroup
8082 % to allow macros to open or close groups themselves.
7947} 8083}
7948 8084
7949% Used for copying and captions 8085% Used for copying and captions
@@ -8044,14 +8180,12 @@ end
8044\def\macroargctxt{% 8180\def\macroargctxt{%
8045 \scanctxt 8181 \scanctxt
8046 \catcode`\ =\active 8182 \catcode`\ =\active
8047 \catcode`\@=\other
8048 \catcode`\^^M=\other 8183 \catcode`\^^M=\other
8049 \catcode`\\=\active 8184 \catcode`\\=\active
8050} 8185}
8051 8186
8052\def\macrolineargctxt{% used for whole-line arguments without braces 8187\def\macrolineargctxt{% used for whole-line arguments without braces
8053 \scanctxt 8188 \scanctxt
8054 \catcode`\@=\other
8055 \catcode`\{=\other 8189 \catcode`\{=\other
8056 \catcode`\}=\other 8190 \catcode`\}=\other
8057} 8191}
@@ -8615,21 +8749,9 @@ end
8615% also remove a trailing comma, in case of something like this: 8749% also remove a trailing comma, in case of something like this:
8616% @node Help-Cross, , , Cross-refs 8750% @node Help-Cross, , , Cross-refs
8617\def\donode#1 ,#2\finishnodeparse{\dodonode #1,\finishnodeparse} 8751\def\donode#1 ,#2\finishnodeparse{\dodonode #1,\finishnodeparse}
8618\def\dodonode#1,#2\finishnodeparse{\gdef\lastnode{#1}\omittopnode} 8752\def\dodonode#1,#2\finishnodeparse{\gdef\lastnode{#1}}
8619
8620% Used so that the @top node doesn't have to be wrapped in an @ifnottex
8621% conditional.
8622% \doignore goes to more effort to skip nested conditionals but we don't need
8623% that here.
8624\def\omittopnode{%
8625 \ifx\lastnode\wordTop
8626 \expandafter\ignorenode\fi
8627}
8628\def\wordTop{Top}
8629
8630% Divert output to a box that is not output until the next @node command.
8631\def\ignorenode{\setbox\dummybox\vbox\bgroup\def\node{\egroup\node}}
8632 8753
8754\let\nwnode=\node
8633\let\lastnode=\empty 8755\let\lastnode=\empty
8634 8756
8635% Write a cross-reference definition for the current node. #1 is the 8757% Write a cross-reference definition for the current node. #1 is the
@@ -9104,6 +9226,19 @@ end
9104 \catcode`\^^]=\other 9226 \catcode`\^^]=\other
9105 \catcode`\^^^=\other 9227 \catcode`\^^^=\other
9106 \catcode`\^^_=\other 9228 \catcode`\^^_=\other
9229 % It was suggested to set the catcode of ^ to 7, which would allow ^^e4 etc.
9230 % in xref tags, i.e., node names. But since ^^e4 notation isn't
9231 % supported in the main text, it doesn't seem desirable. Furthermore,
9232 % that is not enough: for node names that actually contain a ^
9233 % character, we would end up writing a line like this: 'xrdef {'hat
9234 % b-title}{'hat b} and \xrdef does a \csname...\endcsname on the first
9235 % argument, and \hat is not an expandable control sequence. It could
9236 % all be worked out, but why? Either we support ^^ or we don't.
9237 %
9238 % The other change necessary for this was to define \auxhat:
9239 % \def\auxhat{\def^{'hat }}% extra space so ok if followed by letter
9240 % and then to call \auxhat in \setq.
9241 %
9107 \catcode`\^=\other 9242 \catcode`\^=\other
9108 % 9243 %
9109 % Special characters. Should be turned off anyway, but... 9244 % Special characters. Should be turned off anyway, but...
@@ -9121,7 +9256,14 @@ end
9121 \catcode`\%=\other 9256 \catcode`\%=\other
9122 \catcode`+=\other % avoid \+ for paranoia even though we've turned it off 9257 \catcode`+=\other % avoid \+ for paranoia even though we've turned it off
9123 % 9258 %
9124 \catcode`\\=\active 9259 % This is to support \ in node names and titles, since the \
9260 % characters end up in a \csname. It's easier than
9261 % leaving it active and making its active definition an actual \
9262 % character. What I don't understand is why it works in the *value*
9263 % of the xrdef. Seems like it should be a catcode12 \, and that
9264 % should not typeset properly. But it works, so I'm moving on for
9265 % now. --karl, 15jan04.
9266 \catcode`\\=\other
9125 % 9267 %
9126 % @ is our escape character in .aux files, and we need braces. 9268 % @ is our escape character in .aux files, and we need braces.
9127 \catcode`\{=1 9269 \catcode`\{=1
@@ -11392,9 +11534,11 @@ directory should work if nowhere else does.}
11392% \backslashcurfont outputs one backslash character in current font, 11534% \backslashcurfont outputs one backslash character in current font,
11393% as in \char`\\. 11535% as in \char`\\.
11394\global\chardef\backslashcurfont=`\\ 11536\global\chardef\backslashcurfont=`\\
11537\global\let\rawbackslashxx=\backslashcurfont % let existing .??s files work
11395 11538
11396% \realbackslash is an actual character `\' with catcode other. 11539% \realbackslash is an actual character `\' with catcode other, and
11397{\catcode`\\=\other @gdef@realbackslash{\}} 11540% \doublebackslash is two of them (for the pdf outlines).
11541{\catcode`\\=\other @gdef@realbackslash{\} @gdef@doublebackslash{\\}}
11398 11542
11399% In Texinfo, backslash is an active character; it prints the backslash 11543% In Texinfo, backslash is an active character; it prints the backslash
11400% in fixed width font. 11544% in fixed width font.
@@ -11412,8 +11556,10 @@ directory should work if nowhere else does.}
11412@def@ttbackslash{{@tt @ifmmode @mathchar29020 @else @backslashcurfont @fi}} 11556@def@ttbackslash{{@tt @ifmmode @mathchar29020 @else @backslashcurfont @fi}}
11413@let@backslashchar = @ttbackslash % @backslashchar{} is for user documents. 11557@let@backslashchar = @ttbackslash % @backslashchar{} is for user documents.
11414 11558
11559% \rawbackslash defines an active \ to do \backslashcurfont.
11415% \otherbackslash defines an active \ to be a literal `\' character with 11560% \otherbackslash defines an active \ to be a literal `\' character with
11416% catcode other. 11561% catcode other. We switch back and forth between these.
11562@gdef@rawbackslash{@let\=@backslashcurfont}
11417@gdef@otherbackslash{@let\=@realbackslash} 11563@gdef@otherbackslash{@let\=@realbackslash}
11418 11564
11419% Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of 11565% Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of
@@ -11485,7 +11631,7 @@ directory should work if nowhere else does.}
11485 @ifx\@eatinput @let\ = @ttbackslash @fi 11631 @ifx\@eatinput @let\ = @ttbackslash @fi
11486 @catcode13=5 % regular end of line 11632 @catcode13=5 % regular end of line
11487 @enableemergencynewline 11633 @enableemergencynewline
11488 @let@c=@comment 11634 @let@c=@texinfoc
11489 @let@parsearg@originalparsearg 11635 @let@parsearg@originalparsearg
11490 % Also turn back on active characters that might appear in the input 11636 % Also turn back on active characters that might appear in the input
11491 % file name, in case not using a pre-dumped format. 11637 % file name, in case not using a pre-dumped format.
diff --git a/lib/_Noreturn.h b/lib/_Noreturn.h
index 7594e4b0c0b..db9b45554c5 100644
--- a/lib/_Noreturn.h
+++ b/lib/_Noreturn.h
@@ -1,3 +1,19 @@
1/* A C macro for declaring that a function does not return.
2 Copyright (C) 2011-2019 Free Software Foundation, Inc.
3
4 This program is free software: you can redistribute it and/or modify it
5 under the terms of the GNU General Public License as published
6 by the Free Software Foundation; either version 3 of the License, or
7 (at your option) any later version.
8
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 General Public License for more details.
13
14 You should have received a copy of the GNU General Public License
15 along with this program. If not, see <https://www.gnu.org/licenses/>. */
16
1#ifndef _Noreturn 17#ifndef _Noreturn
2# if (defined __cplusplus \ 18# if (defined __cplusplus \
3 && ((201103 <= __cplusplus && !(__GNUC__ == 4 && __GNUC_MINOR__ == 7)) \ 19 && ((201103 <= __cplusplus && !(__GNUC__ == 4 && __GNUC_MINOR__ == 7)) \
diff --git a/lib/gnulib.mk.in b/lib/gnulib.mk.in
index 0d9a885be3d..1450df9f638 100644
--- a/lib/gnulib.mk.in
+++ b/lib/gnulib.mk.in
@@ -179,6 +179,7 @@ CAIRO_LIBS = @CAIRO_LIBS@
179CC = @CC@ 179CC = @CC@
180CFLAGS = @CFLAGS@ 180CFLAGS = @CFLAGS@
181CFLAGS_SOUND = @CFLAGS_SOUND@ 181CFLAGS_SOUND = @CFLAGS_SOUND@
182CHECK_STRUCTS = @CHECK_STRUCTS@
182CLIENTRES = @CLIENTRES@ 183CLIENTRES = @CLIENTRES@
183CLIENTW = @CLIENTW@ 184CLIENTW = @CLIENTW@
184CM_OBJ = @CM_OBJ@ 185CM_OBJ = @CM_OBJ@