summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArnold D. Robbins <arnold@skeeve.com>2023-03-29 20:24:51 +0300
committerArnold D. Robbins <arnold@skeeve.com>2023-03-29 20:24:51 +0300
commit3d7e2e99724fdb52daabcd39f1ee6cffe70ee75f (patch)
treefe26929db389228a7e756b3e5c132933300995c8
parent82ac553dbf186f5056cfb3955efdbab692d19813 (diff)
parent2a1050120ada686a6bdfeee494eb0ad7eef67f5c (diff)
downloadgawk-3d7e2e99724fdb52daabcd39f1ee6cffe70ee75f.tar.gz
Merge branch 'gawk-5.2-stable'
-rw-r--r--build-aux/ChangeLog4
-rw-r--r--build-aux/texinfo.tex252
-rw-r--r--doc/ChangeLog6
-rw-r--r--doc/gawk.info663
-rw-r--r--doc/gawk.texi14
-rw-r--r--doc/gawktexi.in14
-rw-r--r--doc/texinfo.tex252
-rw-r--r--extension/ChangeLog5
-rw-r--r--extension/filefuncs.c2
9 files changed, 625 insertions, 587 deletions
diff --git a/build-aux/ChangeLog b/build-aux/ChangeLog
index 3a8bca31..3d379f3c 100644
--- a/build-aux/ChangeLog
+++ b/build-aux/ChangeLog
@@ -1,3 +1,7 @@
+2023-03-29 Arnold D. Robbins <arnold@skeeve.com>
+
+ * texinfo.tex: Sync from Texinfo.
+
2023-03-26 Arnold D. Robbins <arnold@skeeve.com>
* texinfo.tex: Sync from GNULIB.
diff --git a/build-aux/texinfo.tex b/build-aux/texinfo.tex
index 204caf74..c0a54919 100644
--- a/build-aux/texinfo.tex
+++ b/build-aux/texinfo.tex
@@ -1,9 +1,9 @@
% texinfo.tex -- TeX macros to handle Texinfo files.
-%
+%
% Load plain if necessary, i.e., if running under initex.
\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
%
-\def\texinfoversion{2023-03-21.06}
+\def\texinfoversion{2023-03-27.21}
%
% Copyright 1985, 1986, 1988, 1990-2023 Free Software Foundation, Inc.
%
@@ -212,7 +212,7 @@
% @errormsg{MSG}. Do the index-like expansions on MSG, but if things
% aren't perfect, it's not the end of the world, being an error message,
% after all.
-%
+%
\def\errormsg{\begingroup \indexnofonts \doerrormsg}
\def\doerrormsg#1{\errmessage{#1}}
@@ -426,7 +426,7 @@
}%
}
-% First remove any @comment, then any @c comment. Pass the result on to
+% First remove any @comment, then any @c comment. Pass the result on to
% \argcheckspaces.
\def\argremovecomment#1\comment#2\ArgTerm{\argremovec #1\c\ArgTerm}
\def\argremovec#1\c#2\ArgTerm{\argcheckspaces#1\^^M\ArgTerm}
@@ -1048,8 +1048,8 @@ where each line of input produces a line of output.}
end
end
}
- % The -2 in the arguments here gives all the input to TeX catcode 12
- % (other) or 10 (space), preventing undefined control sequence errors. See
+ % The -2 in the arguments here gives all the input to TeX catcode 12
+ % (other) or 10 (space), preventing undefined control sequence errors. See
% https://lists.gnu.org/archive/html/bug-texinfo/2019-08/msg00031.html
%
\endgroup
@@ -1102,27 +1102,33 @@ where each line of input produces a line of output.}
% Output page labels information.
% See PDF reference v.1.7 p.594, section 8.3.1.
+% Page label ranges must be increasing.
\ifpdf
\def\pagelabels{%
\def\title{0 << /P (T-) /S /D >>}%
- \edef\roman{\the\romancount << /S /r >>}%
- \edef\arabic{\the\arabiccount << /S /D >>}%
%
- % Page label ranges must be increasing. Remove any duplicates.
- % (There is a slight chance of this being wrong if e.g. there is
- % a @contents but no @titlepage, etc.)
- %
- \ifnum\romancount=0 \def\roman{}\fi
- \ifnum\arabiccount=0 \def\title{}%
- \else
- \ifnum\romancount=\arabiccount \def\roman{}\fi
- \fi
- %
- \ifnum\romancount<\arabiccount
- \pdfcatalog{/PageLabels << /Nums [\title \roman \arabic ] >> }\relax
+ % support @contents at very end of document
+ \ifnum\contentsendcount=\pagecount
+ \ifnum\arabiccount<\romancount
+ \pdfcatalog{/PageLabels << /Nums
+ [\title
+ \the\arabiccount << /S /D >>
+ \the\romancount << /S /r >>
+ ] >> }\relax
+ \fi
+ % no contents in document
+ \else\ifnum\contentsendcount=0
+ \pdfcatalog{/PageLabels << /Nums
+ [\title
+ \the\arabiccount << /S /D >>
+ ] >> }\relax
\else
- \pdfcatalog{/PageLabels << /Nums [\title \arabic \roman ] >> }\relax
- \fi
+ \pdfcatalog{/PageLabels << /Nums
+ [\title
+ \the\romancount << /S /r >>
+ \the\contentsendcount << /S /D >>
+ ] >> }\relax
+ \fi\fi
}
\else
\let\pagelabels\relax
@@ -1131,6 +1137,8 @@ where each line of input produces a line of output.}
\newcount\pagecount \pagecount=0
\newcount\romancount \romancount=0
\newcount\arabiccount \arabiccount=0
+\newcount\contentsendcount \contentsendcount=0
+
\ifpdf
\let\ptxadvancepageno\advancepageno
\def\advancepageno{%
@@ -1143,7 +1151,7 @@ where each line of input produces a line of output.}
% for display in the outlines, and in other places. Thus, we have to
% double any backslashes. Otherwise, a name like "\node" will be
% interpreted as a newline (\n), followed by o, d, e. Not good.
-%
+%
% See http://www.ntg.nl/pipermail/ntg-pdftex/2004-July/000654.html and
% related messages. The final outcome is that it is up to the TeX user
% to double the backslashes and otherwise make the string valid, so
@@ -1435,7 +1443,7 @@ output) for that.)}
% We use the node names as the destinations.
%
% Currently we prefix the section name with the section number
- % for chapter and appendix headings only in order to avoid too much
+ % for chapter and appendix headings only in order to avoid too much
% horizontal space being required in the PDF viewer.
\def\numchapentry##1##2##3##4{%
\dopdfoutline{##2 ##1}{count-\expnumber{chap##2}}{##3}{##4}}%
@@ -1458,7 +1466,7 @@ output) for that.)}
% their "best" equivalent, based on the @documentencoding. Too
% much work for too little return. Just use the ASCII equivalents
% we use for the index sort strings.
- %
+ %
\indexnofonts
\setupdatafile
% We can have normal brace characters in the PDF outlines, unlike
@@ -1684,7 +1692,7 @@ output) for that.)}
% We use node names as destinations.
%
% Currently we prefix the section name with the section number
- % for chapter and appendix headings only in order to avoid too much
+ % for chapter and appendix headings only in order to avoid too much
% horizontal space being required in the PDF viewer.
\def\partentry##1##2##3##4{}% ignore parts in the outlines
\def\numchapentry##1##2##3##4{%
@@ -2711,7 +2719,7 @@ end
}
% Commands to set the quote options.
-%
+%
\parseargdef\codequoteundirected{%
\def\temp{#1}%
\ifx\temp\onword
@@ -2757,7 +2765,7 @@ end
% If we are in a monospaced environment, however, 1) always use \ttsl,
% and 2) do not add an italic correction.
\def\dosmartslant#1#2{%
- \ifusingtt
+ \ifusingtt
{{\ttsl #2}\let\next=\relax}%
{\def\next{{#1#2}\smartitaliccorrection}}%
\next
@@ -2936,7 +2944,7 @@ end
\gdef\codedash{\futurelet\next\codedashfinish}
\gdef\codedashfinish{%
\normaldash % always output the dash character itself.
- %
+ %
% Now, output a discretionary to allow a line break, unless
% (a) the next character is a -, or
% (b) the preceding character is a -, or
@@ -3042,7 +3050,7 @@ end
% For pdfTeX and LuaTeX
\ifurefurlonlylink
% PDF plus option to not display url, show just arg
- \unhbox0
+ \unhbox0
\else
% PDF, normally display both arg and url for consistency,
% visibility, if the pdf is eventually used to print, etc.
@@ -3055,7 +3063,7 @@ end
% For XeTeX
\ifurefurlonlylink
% PDF plus option to not display url, show just arg
- \unhbox0
+ \unhbox0
\else
% PDF, normally display both arg and url for consistency,
% visibility, if the pdf is eventually used to print, etc.
@@ -3113,10 +3121,10 @@ end
}
}
-% By default we'll break after the special characters, but some people like to
-% break before the special chars, so allow that. Also allow no breaking at
+% By default we'll break after the special characters, but some people like to
+% break before the special chars, so allow that. Also allow no breaking at
% all, for manual control.
-%
+%
\parseargdef\urefbreakstyle{%
\def\txiarg{#1}%
\ifx\txiarg\wordnone
@@ -3135,10 +3143,10 @@ end
\def\wordnone{none}
% Allow a ragged right output to aid breaking long URL's. There can
-% be a break at the \allowbreak with no extra glue (if the existing stretch in
+% be a break at the \allowbreak with no extra glue (if the existing stretch in
% the line is sufficient), a break at the \penalty with extra glue added
% 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
+% Changing the value of the penalty and/or the amount of stretch affects how
% preferable one choice is over the other.
\def\urefallowbreak{%
\penalty0\relax
@@ -3353,7 +3361,7 @@ $$%
% @inlinefmt{FMTNAME,PROCESSED-TEXT} and @inlineraw{FMTNAME,RAW-TEXT}.
% Ignore unless FMTNAME == tex; then it is like @iftex and @tex,
% except specified as a normal braced arg, so no newlines to worry about.
-%
+%
\def\outfmtnametex{tex}
%
\long\def\inlinefmt#1{\doinlinefmt #1,\finish}
@@ -3361,7 +3369,7 @@ $$%
\def\inlinefmtname{#1}%
\ifx\inlinefmtname\outfmtnametex \ignorespaces #2\fi
}
-%
+%
% @inlinefmtifelse{FMTNAME,THEN-TEXT,ELSE-TEXT} expands THEN-TEXT if
% FMTNAME is tex, else ELSE-TEXT.
\long\def\inlinefmtifelse#1{\doinlinefmtifelse #1,,,\finish}
@@ -3377,7 +3385,7 @@ $$%
% *right* brace they would have to use a command anyway, so they may as
% well use a command to get a left brace too. We could re-use the
% delimiter character idea from \verb, but it seems like overkill.
-%
+%
\long\def\inlineraw{\tex \doinlineraw}
\long\def\doinlineraw#1{\doinlinerawtwo #1,\finish}
\def\doinlinerawtwo#1,#2,\finish{%
@@ -3663,7 +3671,7 @@ $$%
% for non-CM glyphs. That is ec* for regular text and tc* for the text
% companion symbols (LaTeX TS1 encoding). Both are part of the ec
% package and follow the same conventions.
-%
+%
\def\ecfont{\etcfont{e}}
\def\tcfont{\etcfont{t}}
%
@@ -3745,7 +3753,7 @@ $$%
after the title page.}}%
\def\setshortcontentsaftertitlepage{%
\errmessage{@setshortcontentsaftertitlepage has been removed as a Texinfo
- command; move your @shortcontents and @contents commands if you
+ command; move your @shortcontents and @contents commands if you
want the contents after the title page.}}%
\parseargdef\shorttitlepage{%
@@ -3799,7 +3807,7 @@ $$%
% don't worry much about spacing, ragged right. This should be used
% inside a \vbox, and fonts need to be set appropriately first. \par should
% be specified before the end of the \vbox, since a vbox is a group.
-%
+%
\def\raggedtitlesettings{%
\rm
\hyphenpenalty=10000
@@ -4625,7 +4633,7 @@ $$%
% Like \expandablevalue, but completely expandable (the \message in the
% definition above operates at the execution level of TeX). Used when
% writing to auxiliary files, due to the expansion that \write does.
-% If flag is undefined, pass through an unexpanded @value command: maybe it
+% If flag is undefined, pass through an unexpanded @value command: maybe it
% will be set by the time it is read back in.
%
% NB flag names containing - or _ may not work here.
@@ -4649,7 +4657,7 @@ $$%
% @ifset VAR ... @end ifset reads the `...' iff VAR has been defined
% with @set.
-%
+%
% To get the special treatment we need for `@end ifset,' we call
% \makecond and then redefine.
%
@@ -4682,7 +4690,7 @@ $$%
% without the @) is in fact defined. We can only feasibly check at the
% TeX level, so something like `mathcode' is going to considered
% defined even though it is not a Texinfo command.
-%
+%
\makecond{ifcommanddefined}
\def\ifcommanddefined{\parsearg{\doifcmddefined{\let\next=\ifcmddefinedfail}}}
%
@@ -4788,7 +4796,7 @@ $$%
\def\docodeindex#1{\edef\indexname{#1}\parsearg\docodeindexxxx}
\def\docodeindexxxx #1{\docind{\indexname}{#1}}
-
+
% \definedummyword defines \#1 as \string\#1\space, thus effectively
% preventing its expansion. This is used only for control words,
% not control letters, because the \space would be incorrect for
@@ -4805,7 +4813,7 @@ $$%
\def\definedummyword #1{\def#1{\string#1\space}}%
\def\definedummyletter#1{\def#1{\string#1}}%
-% Used for the aux, toc and index files to prevent expansion of Texinfo
+% Used for the aux, toc and index files to prevent expansion of Texinfo
% commands. Most of the commands are controlled through the
% \ifdummies conditional.
%
@@ -5094,7 +5102,7 @@ $$%
\let\value\indexnofontsvalue
}
-
+
% #1 is the index name, #2 is the entry text.
@@ -5135,7 +5143,7 @@ $$%
\ifx\suffix\indexisfl\def\suffix{f1}\fi
% Open the file
\immediate\openout\csname#1indfile\endcsname \jobname.\suffix
- % Using \immediate above here prevents an object entering into the current
+ % Using \immediate above here prevents an object entering into the current
% box, which could confound checks such as those in \safewhatsit for
% preceding skips.
\typeout{Writing index file \jobname.\suffix}%
@@ -5187,7 +5195,7 @@ $$%
\ifx\segment\isfinish
\else
%
- % Fully expand the segment, throwing away any @sortas directives, and
+ % Fully expand the segment, throwing away any @sortas directives, and
% trim spaces.
\edef\trimmed{\segment}%
\edef\trimmed{\expandafter\eatspaces\expandafter{\trimmed}}%
@@ -5251,12 +5259,12 @@ $$%
% the current value of \escapechar.
\def\escapeisbackslash{\escapechar=`\\}
-% Use \ in index files by default. texi2dvi didn't support @ as the escape
-% character (as it checked for "\entry" in the files, and not "@entry"). When
-% the new version of texi2dvi has had a chance to become more prevalent, then
-% the escape character can change back to @ again. This should be an easy
-% change to make now because both @ and \ are only used as escape characters in
-% index files, never standing for themselves.
+% Use \ in index files by default. texi2dvi didn't support @ as the escape
+% character (as it checked for "\entry" in the files, and not "@entry"). When
+% the new version of texi2dvi has had a chance to become more prevalent, then
+% the escape character can change back to @ again. This should be an easy
+% change to make now because both @ and \ are only used as escape characters in
+% index files, never standing for themselves.
%
\set txiindexescapeisbackslash
@@ -5279,7 +5287,7 @@ $$%
\def\}{\rbracechar{}}%
\uccode`\~=`\\ \uppercase{\def~{\backslashchar{}}}%
%
- % Split the entry into primary entry and any subentries, and get the index
+ % Split the entry into primary entry and any subentries, and get the index
% sort key.
\splitindexentry\indextext
%
@@ -5460,18 +5468,18 @@ $$%
\uccode`\~=`\\ \uppercase{\if\noexpand~}\noexpand#1
\ifflagclear{txiskipindexfileswithbackslash}{%
\errmessage{%
-ERROR: A sorted index file in an obsolete format was skipped.
+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>.
-If you are using an old version of 'texindex' (part of the Texinfo
+If you are using an old version of 'texindex' (part of the Texinfo
distribution), you may also need to upgrade to a newer version (at least 6.0).
You may be able to typeset the index if you run
'texindex \jobname.\indexname' yourself.
-You could also try setting the 'txiindexescapeisbackslash' flag by
+You could also try setting the 'txiindexescapeisbackslash' flag by
running a command like
-'texi2dvi -t "@set txiindexescapeisbackslash" \jobname.texi'. If you do
+'texi2dvi -t "@set txiindexescapeisbackslash" \jobname.texi'. If you do
this, Texinfo will try to use index files in the old format.
-If you continue to have problems, deleting the index files and starting again
+If you continue to have problems, deleting the index files and starting again
might help (with 'rm \jobname.?? \jobname.??s')%
}%
}{%
@@ -5544,7 +5552,7 @@ might help (with 'rm \jobname.?? \jobname.??s')%
% bottom of a column to reduce an increase in inter-line spacing.
\nobreak
\vskip 0pt plus 5\baselineskip
- \penalty -300
+ \penalty -300
\vskip 0pt plus -5\baselineskip
%
% Typeset the initial. Making this add up to a whole number of
@@ -5676,7 +5684,7 @@ might help (with 'rm \jobname.?? \jobname.??s')%
\advance\dimen@ii by 1\dimen@i
\ifdim\wd\boxA > \dimen@ii % If the entry doesn't fit in one line
\ifdim\dimen@ > 0.8\dimen@ii % due to long index text
- % Try to split the text roughly evenly. \dimen@ will be the length of
+ % Try to split the text roughly evenly. \dimen@ will be the length of
% the first line.
\dimen@ = 0.7\dimen@
\dimen@ii = \hsize
@@ -5884,7 +5892,7 @@ might help (with 'rm \jobname.?? \jobname.??s')%
\newbox\balancedcolumns
\setbox\balancedcolumns=\vbox{shouldnt see this}%
%
-% Only called for the last of the double column material. \doublecolumnout
+% Only called for the last of the double column material. \doublecolumnout
% does the others.
\def\balancecolumns{%
\setbox0 = \vbox{\unvbox\PAGE}% like \box255 but more efficient, see p.120.
@@ -5912,7 +5920,7 @@ might help (with 'rm \jobname.?? \jobname.??s')%
}%
% Now the left column is in box 1, and the right column in box 3.
%
- % Check whether the left column has come out higher than the page itself.
+ % Check whether the left column has come out higher than the page itself.
% (Note that we have doubled \vsize for the double columns, so
% the actual height of the page is 0.5\vsize).
\ifdim2\ht1>\vsize
@@ -6209,7 +6217,7 @@ might help (with 'rm \jobname.?? \jobname.??s')%
\let\top\unnumbered
% Sections.
-%
+%
\outer\parseargdef\numberedsec{\numhead1{#1}} % normally calls seczzz
\def\seczzz#1{%
\global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1
@@ -6232,7 +6240,7 @@ might help (with 'rm \jobname.?? \jobname.??s')%
}
% Subsections.
-%
+%
% normally calls numberedsubseczzz:
\outer\parseargdef\numberedsubsec{\numhead2{#1}}
\def\numberedsubseczzz#1{%
@@ -6257,7 +6265,7 @@ might help (with 'rm \jobname.?? \jobname.??s')%
}
% Subsubsections.
-%
+%
% normally numberedsubsubseczzz:
\outer\parseargdef\numberedsubsubsec{\numhead3{#1}}
\def\numberedsubsubseczzz#1{%
@@ -6809,12 +6817,8 @@ might help (with 'rm \jobname.?? \jobname.??s')%
% Get ready to use Arabic numerals again
\def\contentsendroman{%
\lastnegativepageno = \pageno
- \global\pageno = \savepageno
- %
- % If \romancount > \arabiccount, the contents are at the end of the
- % document. Otherwise, advance where the Arabic numerals start for
- % the page numbers.
- \ifnum\romancount>\arabiccount\else\global\arabiccount=\pagecount\fi
+ \global\pageno=1
+ \contentsendcount = \pagecount
}
% Typeset the label for a chapter or appendix for the short contents.
@@ -7319,7 +7323,7 @@ might help (with 'rm \jobname.?? \jobname.??s')%
% @indentedblock is like @quotation, but indents only on the left and
% has no optional argument.
-%
+%
\makedispenvdef{indentedblock}{\indentedblockstart}
%
\def\indentedblockstart{%
@@ -7629,7 +7633,7 @@ might help (with 'rm \jobname.?? \jobname.??s')%
% @deftypefnnewline on|off says whether the return type of typed functions
% are printed on their own line. This affects @deftypefn, @deftypefun,
% @deftypeop, and @deftypemethod.
-%
+%
\parseargdef\deftypefnnewline{%
\def\temp{#1}%
\ifx\temp\onword
@@ -7797,7 +7801,7 @@ might help (with 'rm \jobname.?? \jobname.??s')%
\tclose{\temp}% typeset the return type
\ifrettypeownline
% put return type on its own line; prohibit line break following:
- \hfil\vadjust{\nobreak}\break
+ \hfil\vadjust{\nobreak}\break
\else
\space % type on same line, so just followed by a space
\fi
@@ -7946,7 +7950,7 @@ might help (with 'rm \jobname.?? \jobname.??s')%
\scantokens{#1@comment}%
%
% The \comment is to remove the \newlinechar added by \scantokens, and
- % can be noticed by \parsearg. Note \c isn't used because this means cedilla
+ % can be noticed by \parsearg. Note \c isn't used because this means cedilla
% in math mode.
}
@@ -8141,7 +8145,7 @@ might help (with 'rm \jobname.?? \jobname.??s')%
% list to some hook where the argument is to be expanded. If there are
% less than 10 arguments that hook is to be replaced by ##N where N
% is the position in that list, that is to say the macro arguments are to be
-% defined `a la TeX in the macro body.
+% defined `a la TeX in the macro body.
%
% That gets used by \mbodybackslash (above).
%
@@ -8175,8 +8179,8 @@ might help (with 'rm \jobname.?? \jobname.??s')%
%
% Read recursive and nonrecursive macro bodies. (They're different since
% rec and nonrec macros end differently.)
-%
-% We are in \macrobodyctxt, and the \xdef causes backslashshes in the macro
+%
+% We are in \macrobodyctxt, and the \xdef causes backslashshes in the macro
% body to be transformed.
% Set \macrobody to the body of the macro, and call \macrodef.
%
@@ -8210,7 +8214,7 @@ might help (with 'rm \jobname.?? \jobname.??s')%
% twice the \macarg.BLAH macros does not cost too much processing power.
\def\parsemmanyargdef@@#1,{%
\if#1;\let\next=\relax
- \else
+ \else
\let\next=\parsemmanyargdef@@
\edef\tempb{\eatspaces{#1}}%
\expandafter\def\expandafter\tempa
@@ -8295,7 +8299,7 @@ might help (with 'rm \jobname.?? \jobname.??s')%
% Replace arguments by their values in the macro body, and place the result
% in macro \@tempa.
-%
+%
\def\macvalstoargs@{%
% To do this we use the property that token registers that are \the'ed
% within an \edef expand only once. So we are going to place all argument
@@ -8319,9 +8323,9 @@ might help (with 'rm \jobname.?? \jobname.??s')%
\expandafter\def\expandafter\@tempa\expandafter{\@tempc}%
}
-% Define the named-macro outside of this group and then close this group.
-%
-\def\macargexpandinbody@{%
+% Define the named-macro outside of this group and then close this group.
+%
+\def\macargexpandinbody@{%
\expandafter
\endgroup
\macargdeflist@
@@ -8359,7 +8363,7 @@ might help (with 'rm \jobname.?? \jobname.??s')%
}
% Trailing missing arguments are set to empty.
-%
+%
\def\setemptyargvalues@{%
\ifx\paramlist\nilm@
\let\next\macargexpandinbody@
@@ -8437,7 +8441,7 @@ might help (with 'rm \jobname.?? \jobname.??s')%
\else % at most 9
\ifnum\paramno<10\relax
% @MACNAME sets the context for reading the macro argument
- % @MACNAME@@ gets the argument, processes backslashes and appends a
+ % @MACNAME@@ gets the argument, processes backslashes and appends a
% comma.
% @MACNAME@@@ removes braces surrounding the argument list.
% @MACNAME@@@@ scans the macro body with arguments substituted.
@@ -8481,11 +8485,11 @@ might help (with 'rm \jobname.?? \jobname.??s')%
% Call #1 with a list of tokens #2, with any doubled backslashes in #2
% compressed to one.
%
-% This implementation works by expansion, and not execution (so we cannot use
-% \def or similar). This reduces the risk of this failing in contexts where
-% complete expansion is done with no execution (for example, in writing out to
+% This implementation works by expansion, and not execution (so we cannot use
+% \def or similar). This reduces the risk of this failing in contexts where
+% complete expansion is done with no execution (for example, in writing out to
% an auxiliary file for an index entry).
-%
+%
% State is kept in the input stream: the argument passed to
% @look_ahead, @gobble_and_check_finish and @add_segment is
%
@@ -8507,11 +8511,11 @@ might help (with 'rm \jobname.?? \jobname.??s')%
% #3 - NEXT_TOKEN
% #4 used to look ahead
%
-% If the next token is not a backslash, process the rest of the argument;
+% If the next token is not a backslash, process the rest of the argument;
% otherwise, remove the next token.
@gdef@look_ahead#1!#2#3#4{%
@ifx#4\%
- @expandafter@gobble_and_check_finish
+ @expandafter@gobble_and_check_finish
@else
@expandafter@add_segment
@fi#1!{#2}#4#4%
@@ -8535,9 +8539,9 @@ might help (with 'rm \jobname.?? \jobname.??s')%
% #3 - NEXT_TOKEN
% #4 is input stream until next backslash
%
-% Input stream is either at the start of the argument, or just after a
-% backslash sequence, either a lone backslash, or a doubled backslash.
-% NEXT_TOKEN contains the first token in the input stream: if it is \finish,
+% Input stream is either at the start of the argument, or just after a
+% backslash sequence, either a lone backslash, or a doubled backslash.
+% NEXT_TOKEN contains the first token in the input stream: if it is \finish,
% finish; otherwise, append to ARG_RESULT the segment of the argument up until
% the next backslash. PENDING_BACKSLASH contains a backslash to represent
% a backslash just before the start of the input stream that has not been
@@ -8549,13 +8553,13 @@ might help (with 'rm \jobname.?? \jobname.??s')%
% append the pending backslash to the result, followed by the next segment
@expandafter@is_fi@look_ahead#1#2#4!{\}@fi
% this @fi is discarded by @look_ahead.
- % we can't get rid of it with \expandafter because we don't know how
+ % we can't get rid of it with \expandafter because we don't know how
% long #4 is.
}
% #1 - THE_MACRO
% #2 - ARG_RESULT
-% #3 discards the res of the conditional in @add_segment, and @is_fi ends the
+% #3 discards the res of the conditional in @add_segment, and @is_fi ends the
% conditional.
@gdef@call_the_macro#1#2!#3@fi{@is_fi #1{#2}}
@@ -8567,7 +8571,7 @@ might help (with 'rm \jobname.?? \jobname.??s')%
% for reading the argument (slightly different in the two cases). Then,
% to read the argument, in the whole-line case, it then calls the regular
% \parsearg MAC; in the lbrace case, it calls \passargtomacro MAC.
-%
+%
\def\braceorline#1{\let\macnamexxx=#1\futurelet\nchar\braceorlinexxx}
\def\braceorlinexxx{%
\ifx\nchar\bgroup
@@ -8690,7 +8694,7 @@ might help (with 'rm \jobname.?? \jobname.??s')%
% Used so that the @top node doesn't have to be wrapped in an @ifnottex
% conditional.
-% \doignore goes to more effort to skip nested conditionals but we don't need
+% \doignore goes to more effort to skip nested conditionals but we don't need
% that here.
\def\omittopnode{%
\ifx\lastnode\wordTop
@@ -8767,7 +8771,7 @@ might help (with 'rm \jobname.?? \jobname.??s')%
% automatically in xrefs, if the third arg is not explicitly specified.
% This was provided as a "secret" @set xref-automatic-section-title
% variable, now it's official.
-%
+%
\parseargdef\xrefautomaticsectiontitle{%
\def\temp{#1}%
\ifx\temp\onword
@@ -8783,7 +8787,7 @@ might help (with 'rm \jobname.?? \jobname.??s')%
\fi\fi
}
-%
+%
% @xref, @pxref, and @ref generate cross-references. For \xrefX, #1 is
% the node name, #2 the name of the Info cross-reference, #3 the printed
% node name, #4 the name of the Info file, #5 the name of the printed
@@ -8936,24 +8940,24 @@ might help (with 'rm \jobname.?? \jobname.??s')%
\fi
\else
% node/anchor (non-float) references.
- %
+ %
% If we use \unhbox to print the node names, TeX does not insert
% empty discretionaries after hyphens, which means that it will not
% find a line break at a hyphen in a node names. Since some manuals
% are best written with fairly long node names, containing hyphens,
% this is a loss. Therefore, we give the text of the node name
% again, so it is as if TeX is seeing it for the first time.
- %
+ %
\ifdim \wd\printedmanualbox > 0pt
% Cross-manual reference with a printed manual name.
- %
+ %
\crossmanualxref{\cite{\printedmanual\unskip}}%
%
\else\ifdim \wd\infofilenamebox > 0pt
% Cross-manual reference with only an info filename (arg 4), no
% printed manual name (arg 5). This is essentially the same as
% the case above; we output the filename, since we have nothing else.
- %
+ %
\crossmanualxref{\code{\infofilename\unskip}}%
%
\else
@@ -8992,20 +8996,20 @@ might help (with 'rm \jobname.?? \jobname.??s')%
\space\putwordpage\tie\refx{#1-pg}}
% Output a cross-manual xref to #1. Used just above (twice).
-%
+%
% Only include the text "Section ``foo'' in" if the foo is neither
% missing or Top. Thus, @xref{,,,foo,The Foo Manual} outputs simply
% "see The Foo Manual", the idea being to refer to the whole manual.
-%
+%
% But, this being TeX, we can't easily compare our node name against the
% string "Top" while ignoring the possible spaces before and after in
% the input. By adding the arbitrary 7sp below, we make it much less
% likely that a real node name would have the same width as "Top" (e.g.,
% in a monospaced font). Hopefully it will never happen in practice.
-%
+%
% For the same basic reason, we retypeset the "Top" at every
% reference, since the current font is indeterminate.
-%
+%
\def\crossmanualxref#1{%
\setbox\toprefbox = \hbox{Top\kern7sp}%
\setbox2 = \hbox{\ignorespaces \printedrefname \unskip \kern7sp}%
@@ -9082,9 +9086,9 @@ might help (with 'rm \jobname.?? \jobname.??s')%
\fi
}
-% This is the macro invoked by entries in the aux file. Define a control
-% sequence for a cross-reference target (we prepend XR to the control sequence
-% name to avoid collisions). The value is the page number. If this is a float
+% This is the macro invoked by entries in the aux file. Define a control
+% sequence for a cross-reference target (we prepend XR to the control sequence
+% name to avoid collisions). The value is the page number. If this is a float
% type, we have more work to do.
%
\def\xrdef#1#2{%
@@ -9100,10 +9104,10 @@ might help (with 'rm \jobname.?? \jobname.??s')%
\bgroup
\expandafter\gdef\csname XR\safexrefname\endcsname{#2}%
\egroup
- % We put the \gdef inside a group to avoid the definitions building up on
- % TeX's save stack, which can cause it to run out of space for aux files with
+ % We put the \gdef inside a group to avoid the definitions building up on
+ % TeX's save stack, which can cause it to run out of space for aux files with
% thousands of lines. \gdef doesn't use the save stack, but \csname does
- % when it defines an unknown control sequence as \relax.
+ % when it defines an unknown control sequence as \relax.
%
% Was that xref control sequence that we just defined for a float?
\expandafter\iffloat\csname XR\safexrefname\endcsname
@@ -10300,7 +10304,7 @@ directory should work if nowhere else does.}
\uppercase{.}
\endgroup
\else
- \errhelp = \EMsimple
+ \errhelp = \EMsimple
\errmessage{Unicode character U+#1 not supported, sorry}%
\fi
\else
@@ -10333,7 +10337,7 @@ directory should work if nowhere else does.}
\countUTFz = "#1\relax
\begingroup
\parseXMLCharref
-
+
% Give \u8:... its definition. The sequence of seven \expandafter's
% expands after the \gdef three times, e.g.
%
@@ -10345,7 +10349,7 @@ directory should work if nowhere else does.}
\expandafter\expandafter
\expandafter\expandafter
\expandafter\gdef \UTFviiiTmp{#2}%
- %
+ %
\expandafter\ifx\csname uni:#1\endcsname \relax \else
\message{Internal error, already defined: #1}%
\fi
@@ -10384,7 +10388,7 @@ directory should work if nowhere else does.}
\divide\countUTFz by 64
\countUTFy = \countUTFz % Save to be the future value of \countUTFz.
\multiply\countUTFz by 64
-
+
% \countUTFz is now \countUTFx with the last 5 bits cleared. Subtract
% in order to get the last five bits.
\advance\countUTFx by -\countUTFz
@@ -10419,7 +10423,7 @@ directory should work if nowhere else does.}
% U+0080..U+00FF = https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)
% U+0100..U+017F = https://en.wikipedia.org/wiki/Latin_Extended-A
% U+0180..U+024F = https://en.wikipedia.org/wiki/Latin_Extended-B
-%
+%
% Many of our renditions are less than wonderful, and all the missing
% characters are available somewhere. Loading the necessary fonts
% awaits user request. We can't truly support Unicode without
@@ -11664,7 +11668,7 @@ directory should work if nowhere else does.}
\def\texinfochars{%
\let< = \activeless
\let> = \activegtr
- \let~ = \activetilde
+ \let~ = \activetilde
\let^ = \activehat
\setregularquotes
\let\b = \strong
diff --git a/doc/ChangeLog b/doc/ChangeLog
index 526dad5d..07425432 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -1,3 +1,9 @@
+2023-03-29 Arnold D. Robbins <arnold@skeeve.com>
+
+ * texinfo.tex: Sync from Texinfo.
+ * gawktexi.in (Dynamic Typing): Add a quote.
+ (Common Extensions): Sort the table entries, sort of.
+
2023-03-26 Arnold D. Robbins <arnold@skeeve.com>
* texinfo.tex: Sync from GNULIB.
diff --git a/doc/gawk.info b/doc/gawk.info
index 87f9eb34..7f1de2d5 100644
--- a/doc/gawk.info
+++ b/doc/gawk.info
@@ -15486,8 +15486,11 @@ File: gawk.info, Node: Dynamic Typing, Prev: Return Statement, Up: User-defin
9.2.5 Functions and Their Effects on Variable Typing
----------------------------------------------------
-‘awk’ is a very fluid language. It is possible that ‘awk’ can’t tell if
-an identifier represents a scalar variable or an array until runtime.
+ It’s a desert topping! It’s a floor wax!
+ — _Saturday Night Live (back when it used to be funny)_
+
+ ‘awk’ is a very fluid language. It is possible that ‘awk’ can’t tell
+if an identifier represents a scalar variable or an array until runtime.
Here is an annotated sample program:
function foo(a)
@@ -30945,18 +30948,18 @@ freely available versions of ‘awk’ (*note Other Versions::).
Feature BWK ‘awk’ ‘mawk’ ‘gawk’ Now standard
--------------------------------------------------------------------------
+‘**’ and ‘**=’ operators X X
‘\x’ escape sequence X X X
-‘FS’ as null string X X X
‘/dev/stdin’ special file X X X
‘/dev/stdout’ special file X X X
‘/dev/stderr’ special file X X X
+‘BINMODE’ variable X X
+‘FS’ as null string X X X
‘delete’ without subscript X X X X
‘fflush()’ function X X X X
+‘func’ keyword X X
‘length()’ of an array X X X
‘nextfile’ statement X X X X
-‘**’ and ‘**=’ operators X X
-‘func’ keyword X X
-‘BINMODE’ variable X X
‘RS’ as regexp X X X
Time-related functions X X
@@ -39848,330 +39851,330 @@ Node: Function Caveats669709
Ref: Function Caveats-Footnote-1671804
Node: Return Statement671928
Node: Dynamic Typing674983
-Node: Indirect Calls677259
-Node: Functions Summary688418
-Node: Library Functions691195
-Ref: Library Functions-Footnote-1694743
-Ref: Library Functions-Footnote-2694886
-Node: Library Names695061
-Ref: Library Names-Footnote-1698855
-Ref: Library Names-Footnote-2699082
-Node: General Functions699178
-Node: Strtonum Function700372
-Node: Assert Function703454
-Node: Round Function706906
-Node: Cliff Random Function708484
-Node: Ordinal Functions709517
-Ref: Ordinal Functions-Footnote-1712626
-Ref: Ordinal Functions-Footnote-2712878
-Node: Join Function713092
-Ref: Join Function-Footnote-1714895
-Node: Getlocaltime Function715099
-Node: Readfile Function718873
-Node: Shell Quoting720902
-Node: Isnumeric Function722358
-Node: Data File Management723770
-Node: Filetrans Function724402
-Node: Rewind Function728696
-Node: File Checking730675
-Ref: File Checking-Footnote-1732047
-Node: Empty Files732254
-Node: Ignoring Assigns734321
-Node: Getopt Function735895
-Ref: Getopt Function-Footnote-1751729
-Node: Passwd Functions751941
-Ref: Passwd Functions-Footnote-1761123
-Node: Group Functions761211
-Ref: Group Functions-Footnote-1769349
-Node: Walking Arrays769562
-Node: Library Functions Summary772610
-Node: Library Exercises774034
-Node: Sample Programs774521
-Node: Running Examples775303
-Node: Clones776055
-Node: Cut Program777327
-Node: Egrep Program787768
-Node: Id Program797085
-Node: Split Program807199
-Ref: Split Program-Footnote-1817434
-Node: Tee Program817621
-Node: Uniq Program820530
-Node: Wc Program828395
-Node: Bytes vs. Characters828790
-Node: Using extensions830392
-Node: wc program831172
-Node: Miscellaneous Programs836178
-Node: Dupword Program837407
-Node: Alarm Program839470
-Node: Translate Program844383
-Ref: Translate Program-Footnote-1849124
-Node: Labels Program849402
-Ref: Labels Program-Footnote-1852843
-Node: Word Sorting852935
-Node: History Sorting857129
-Node: Extract Program859404
-Node: Simple Sed867673
-Node: Igawk Program870889
-Ref: Igawk Program-Footnote-1886136
-Ref: Igawk Program-Footnote-2886342
-Ref: Igawk Program-Footnote-3886472
-Node: Anagram Program886599
-Node: Signature Program889695
-Node: Programs Summary890947
-Node: Programs Exercises892205
-Ref: Programs Exercises-Footnote-1896521
-Node: Advanced Features896607
-Node: Nondecimal Data899101
-Node: Boolean Typed Values900731
-Node: Array Sorting902706
-Node: Controlling Array Traversal903435
-Ref: Controlling Array Traversal-Footnote-1911942
-Node: Array Sorting Functions912064
-Ref: Array Sorting Functions-Footnote-1918183
-Node: Two-way I/O918391
-Ref: Two-way I/O-Footnote-1926386
-Ref: Two-way I/O-Footnote-2926577
-Node: TCP/IP Networking926659
-Node: Profiling929839
-Node: Persistent Memory939549
-Ref: Persistent Memory-Footnote-1948507
-Node: Extension Philosophy948638
-Node: Advanced Features Summary950173
-Node: Internationalization952443
-Node: I18N and L10N954149
-Node: Explaining gettext954844
-Ref: Explaining gettext-Footnote-1960997
-Ref: Explaining gettext-Footnote-2961192
-Node: Programmer i18n961357
-Ref: Programmer i18n-Footnote-1966470
-Node: Translator i18n966519
-Node: String Extraction967355
-Ref: String Extraction-Footnote-1968533
-Node: Printf Ordering968631
-Ref: Printf Ordering-Footnote-1971493
-Node: I18N Portability971561
-Ref: I18N Portability-Footnote-1974135
-Node: I18N Example974206
-Ref: I18N Example-Footnote-1977606
-Ref: I18N Example-Footnote-2977682
-Node: Gawk I18N977799
-Node: I18N Summary978455
-Node: Debugger979856
-Node: Debugging980880
-Node: Debugging Concepts981329
-Node: Debugging Terms983155
-Node: Awk Debugging985768
-Ref: Awk Debugging-Footnote-1986745
-Node: Sample Debugging Session986885
-Node: Debugger Invocation987437
-Node: Finding The Bug989066
-Node: List of Debugger Commands995752
-Node: Breakpoint Control997129
-Node: Debugger Execution Control1000961
-Node: Viewing And Changing Data1004441
-Node: Execution Stack1008179
-Node: Debugger Info1009860
-Node: Miscellaneous Debugger Commands1014159
-Node: Readline Support1019412
-Node: Limitations1020358
-Node: Debugging Summary1023002
-Node: Namespaces1024305
-Node: Global Namespace1025432
-Node: Qualified Names1026877
-Node: Default Namespace1027912
-Node: Changing The Namespace1028687
-Node: Naming Rules1030381
-Node: Internal Name Management1032296
-Node: Namespace Example1033366
-Node: Namespace And Features1035949
-Node: Namespace Summary1037406
-Node: Arbitrary Precision Arithmetic1038919
-Node: Computer Arithmetic1040438
-Ref: table-numeric-ranges1044255
-Ref: table-floating-point-ranges1044753
-Ref: Computer Arithmetic-Footnote-11045412
-Node: Math Definitions1045471
-Ref: table-ieee-formats1048516
-Node: MPFR features1049090
-Node: MPFR On Parole1049543
-Ref: MPFR On Parole-Footnote-11050387
-Node: MPFR Intro1050546
-Node: FP Math Caution1052236
-Ref: FP Math Caution-Footnote-11053310
-Node: Inexactness of computations1053687
-Node: Inexact representation1054718
-Node: Comparing FP Values1056101
-Node: Errors accumulate1057359
-Node: Strange values1058826
-Ref: Strange values-Footnote-11061492
-Node: Getting Accuracy1061597
-Node: Try To Round1064334
-Node: Setting precision1065241
-Ref: table-predefined-precision-strings1065946
-Node: Setting the rounding mode1067831
-Ref: table-gawk-rounding-modes1068213
-Ref: Setting the rounding mode-Footnote-11072271
-Node: Arbitrary Precision Integers1072454
-Ref: Arbitrary Precision Integers-Footnote-11075666
-Node: Checking for MPFR1075822
-Node: POSIX Floating Point Problems1077312
-Ref: POSIX Floating Point Problems-Footnote-11082176
-Node: Floating point summary1082214
-Node: Dynamic Extensions1084478
-Node: Extension Intro1086077
-Node: Plugin License1087385
-Node: Extension Mechanism Outline1088198
-Ref: figure-load-extension1088649
-Ref: figure-register-new-function1090234
-Ref: figure-call-new-function1091344
-Node: Extension API Description1093468
-Node: Extension API Functions Introduction1095197
-Ref: table-api-std-headers1097095
-Node: General Data Types1101559
-Ref: General Data Types-Footnote-11110727
-Node: Memory Allocation Functions1111042
-Ref: Memory Allocation Functions-Footnote-11115767
-Node: Constructor Functions1115866
-Node: API Ownership of MPFR and GMP Values1119771
-Node: Registration Functions1121332
-Node: Extension Functions1122036
-Node: Exit Callback Functions1127612
-Node: Extension Version String1128931
-Node: Input Parsers1129626
-Node: Output Wrappers1144270
-Node: Two-way processors1149118
-Node: Printing Messages1151479
-Ref: Printing Messages-Footnote-11152693
-Node: Updating ERRNO1152848
-Node: Requesting Values1153647
-Ref: table-value-types-returned1154400
-Node: Accessing Parameters1155509
-Node: Symbol Table Access1156793
-Node: Symbol table by name1157309
-Ref: Symbol table by name-Footnote-11160520
-Node: Symbol table by cookie1160652
-Ref: Symbol table by cookie-Footnote-11164933
-Node: Cached values1164997
-Ref: Cached values-Footnote-11168641
-Node: Array Manipulation1168798
-Ref: Array Manipulation-Footnote-11169901
-Node: Array Data Types1169938
-Ref: Array Data Types-Footnote-11172760
-Node: Array Functions1172860
-Node: Flattening Arrays1177889
-Node: Creating Arrays1184941
-Node: Redirection API1189791
-Node: Extension API Variables1192812
-Node: Extension Versioning1193537
-Ref: gawk-api-version1193974
-Node: Extension GMP/MPFR Versioning1195762
-Node: Extension API Informational Variables1197468
-Node: Extension API Boilerplate1198629
-Node: Changes from API V11202765
-Node: Finding Extensions1204399
-Node: Extension Example1204974
-Node: Internal File Description1205798
-Node: Internal File Ops1210122
-Ref: Internal File Ops-Footnote-11221680
-Node: Using Internal File Ops1221828
-Ref: Using Internal File Ops-Footnote-11224259
-Node: Extension Samples1224537
-Node: Extension Sample File Functions1226106
-Node: Extension Sample Fnmatch1234244
-Node: Extension Sample Fork1235839
-Node: Extension Sample Inplace1237115
-Node: Extension Sample Ord1240787
-Node: Extension Sample Readdir1241663
-Ref: table-readdir-file-types1242560
-Node: Extension Sample Revout1243698
-Node: Extension Sample Rev2way1244295
-Node: Extension Sample Read write array1245047
-Node: Extension Sample Readfile1248321
-Node: Extension Sample Time1249452
-Node: Extension Sample API Tests1251742
-Node: gawkextlib1252250
-Node: Extension summary1255286
-Node: Extension Exercises1259144
-Node: Language History1260422
-Node: V7/SVR3.11262136
-Node: SVR41264486
-Node: POSIX1266018
-Node: BTL1267443
-Node: POSIX/GNU1268212
-Node: Feature History1274743
-Node: Common Extensions1294309
-Node: Ranges and Locales1295678
-Ref: Ranges and Locales-Footnote-11300479
-Ref: Ranges and Locales-Footnote-21300506
-Ref: Ranges and Locales-Footnote-31300745
-Node: Contributors1300968
-Node: History summary1307173
-Node: Installation1308619
-Node: Gawk Distribution1309583
-Node: Getting1310075
-Node: Extracting1311074
-Node: Distribution contents1312786
-Node: Unix Installation1320866
-Node: Quick Installation1321688
-Node: Compiling with MPFR1324234
-Node: Shell Startup Files1324940
-Node: Additional Configuration Options1326097
-Node: Configuration Philosophy1328484
-Node: Compiling from Git1330986
-Node: Building the Documentation1331545
-Node: Non-Unix Installation1332957
-Node: PC Installation1333433
-Node: PC Binary Installation1334306
-Node: PC Compiling1335211
-Node: PC Using1336389
-Node: Cygwin1340117
-Node: MSYS1341373
-Node: OpenVMS Installation1342005
-Node: OpenVMS Compilation1342686
-Ref: OpenVMS Compilation-Footnote-11344169
-Node: OpenVMS Dynamic Extensions1344231
-Node: OpenVMS Installation Details1345867
-Node: OpenVMS Running1348302
-Node: OpenVMS GNV1352439
-Node: Bugs1353194
-Node: Bug definition1354118
-Node: Bug address1357769
-Node: Usenet1361360
-Node: Performance bugs1362591
-Node: Asking for help1365609
-Node: Maintainers1367600
-Node: Other Versions1368627
-Node: Installation summary1377559
-Node: Notes1378943
-Node: Compatibility Mode1379753
-Node: Additions1380575
-Node: Accessing The Source1381520
-Node: Adding Code1383055
-Node: New Ports1390191
-Node: Derived Files1394701
-Ref: Derived Files-Footnote-11400548
-Ref: Derived Files-Footnote-21400583
-Ref: Derived Files-Footnote-31401200
-Node: Future Extensions1401314
-Node: Implementation Limitations1401986
-Node: Extension Design1403228
-Node: Old Extension Problems1404392
-Ref: Old Extension Problems-Footnote-11405968
-Node: Extension New Mechanism Goals1406029
-Ref: Extension New Mechanism Goals-Footnote-11409525
-Node: Extension Other Design Decisions1409726
-Node: Extension Future Growth1411925
-Node: Notes summary1412549
-Node: Basic Concepts1413762
-Node: Basic High Level1414447
-Ref: figure-general-flow1414729
-Ref: figure-process-flow1415436
-Ref: Basic High Level-Footnote-11418837
-Node: Basic Data Typing1419026
-Node: Glossary1422444
-Node: Copying1455566
-Node: GNU Free Documentation License1493327
-Node: Index1518650
+Node: Indirect Calls677380
+Node: Functions Summary688539
+Node: Library Functions691316
+Ref: Library Functions-Footnote-1694864
+Ref: Library Functions-Footnote-2695007
+Node: Library Names695182
+Ref: Library Names-Footnote-1698976
+Ref: Library Names-Footnote-2699203
+Node: General Functions699299
+Node: Strtonum Function700493
+Node: Assert Function703575
+Node: Round Function707027
+Node: Cliff Random Function708605
+Node: Ordinal Functions709638
+Ref: Ordinal Functions-Footnote-1712747
+Ref: Ordinal Functions-Footnote-2712999
+Node: Join Function713213
+Ref: Join Function-Footnote-1715016
+Node: Getlocaltime Function715220
+Node: Readfile Function718994
+Node: Shell Quoting721023
+Node: Isnumeric Function722479
+Node: Data File Management723891
+Node: Filetrans Function724523
+Node: Rewind Function728817
+Node: File Checking730796
+Ref: File Checking-Footnote-1732168
+Node: Empty Files732375
+Node: Ignoring Assigns734442
+Node: Getopt Function736016
+Ref: Getopt Function-Footnote-1751850
+Node: Passwd Functions752062
+Ref: Passwd Functions-Footnote-1761244
+Node: Group Functions761332
+Ref: Group Functions-Footnote-1769470
+Node: Walking Arrays769683
+Node: Library Functions Summary772731
+Node: Library Exercises774155
+Node: Sample Programs774642
+Node: Running Examples775424
+Node: Clones776176
+Node: Cut Program777448
+Node: Egrep Program787889
+Node: Id Program797206
+Node: Split Program807320
+Ref: Split Program-Footnote-1817555
+Node: Tee Program817742
+Node: Uniq Program820651
+Node: Wc Program828516
+Node: Bytes vs. Characters828911
+Node: Using extensions830513
+Node: wc program831293
+Node: Miscellaneous Programs836299
+Node: Dupword Program837528
+Node: Alarm Program839591
+Node: Translate Program844504
+Ref: Translate Program-Footnote-1849245
+Node: Labels Program849523
+Ref: Labels Program-Footnote-1852964
+Node: Word Sorting853056
+Node: History Sorting857250
+Node: Extract Program859525
+Node: Simple Sed867794
+Node: Igawk Program871010
+Ref: Igawk Program-Footnote-1886257
+Ref: Igawk Program-Footnote-2886463
+Ref: Igawk Program-Footnote-3886593
+Node: Anagram Program886720
+Node: Signature Program889816
+Node: Programs Summary891068
+Node: Programs Exercises892326
+Ref: Programs Exercises-Footnote-1896642
+Node: Advanced Features896728
+Node: Nondecimal Data899222
+Node: Boolean Typed Values900852
+Node: Array Sorting902827
+Node: Controlling Array Traversal903556
+Ref: Controlling Array Traversal-Footnote-1912063
+Node: Array Sorting Functions912185
+Ref: Array Sorting Functions-Footnote-1918304
+Node: Two-way I/O918512
+Ref: Two-way I/O-Footnote-1926507
+Ref: Two-way I/O-Footnote-2926698
+Node: TCP/IP Networking926780
+Node: Profiling929960
+Node: Persistent Memory939670
+Ref: Persistent Memory-Footnote-1948628
+Node: Extension Philosophy948759
+Node: Advanced Features Summary950294
+Node: Internationalization952564
+Node: I18N and L10N954270
+Node: Explaining gettext954965
+Ref: Explaining gettext-Footnote-1961118
+Ref: Explaining gettext-Footnote-2961313
+Node: Programmer i18n961478
+Ref: Programmer i18n-Footnote-1966591
+Node: Translator i18n966640
+Node: String Extraction967476
+Ref: String Extraction-Footnote-1968654
+Node: Printf Ordering968752
+Ref: Printf Ordering-Footnote-1971614
+Node: I18N Portability971682
+Ref: I18N Portability-Footnote-1974256
+Node: I18N Example974327
+Ref: I18N Example-Footnote-1977727
+Ref: I18N Example-Footnote-2977803
+Node: Gawk I18N977920
+Node: I18N Summary978576
+Node: Debugger979977
+Node: Debugging981001
+Node: Debugging Concepts981450
+Node: Debugging Terms983276
+Node: Awk Debugging985889
+Ref: Awk Debugging-Footnote-1986866
+Node: Sample Debugging Session987006
+Node: Debugger Invocation987558
+Node: Finding The Bug989187
+Node: List of Debugger Commands995873
+Node: Breakpoint Control997250
+Node: Debugger Execution Control1001082
+Node: Viewing And Changing Data1004562
+Node: Execution Stack1008300
+Node: Debugger Info1009981
+Node: Miscellaneous Debugger Commands1014280
+Node: Readline Support1019533
+Node: Limitations1020479
+Node: Debugging Summary1023123
+Node: Namespaces1024426
+Node: Global Namespace1025553
+Node: Qualified Names1026998
+Node: Default Namespace1028033
+Node: Changing The Namespace1028808
+Node: Naming Rules1030502
+Node: Internal Name Management1032417
+Node: Namespace Example1033487
+Node: Namespace And Features1036070
+Node: Namespace Summary1037527
+Node: Arbitrary Precision Arithmetic1039040
+Node: Computer Arithmetic1040559
+Ref: table-numeric-ranges1044376
+Ref: table-floating-point-ranges1044874
+Ref: Computer Arithmetic-Footnote-11045533
+Node: Math Definitions1045592
+Ref: table-ieee-formats1048637
+Node: MPFR features1049211
+Node: MPFR On Parole1049664
+Ref: MPFR On Parole-Footnote-11050508
+Node: MPFR Intro1050667
+Node: FP Math Caution1052357
+Ref: FP Math Caution-Footnote-11053431
+Node: Inexactness of computations1053808
+Node: Inexact representation1054839
+Node: Comparing FP Values1056222
+Node: Errors accumulate1057480
+Node: Strange values1058947
+Ref: Strange values-Footnote-11061613
+Node: Getting Accuracy1061718
+Node: Try To Round1064455
+Node: Setting precision1065362
+Ref: table-predefined-precision-strings1066067
+Node: Setting the rounding mode1067952
+Ref: table-gawk-rounding-modes1068334
+Ref: Setting the rounding mode-Footnote-11072392
+Node: Arbitrary Precision Integers1072575
+Ref: Arbitrary Precision Integers-Footnote-11075787
+Node: Checking for MPFR1075943
+Node: POSIX Floating Point Problems1077433
+Ref: POSIX Floating Point Problems-Footnote-11082297
+Node: Floating point summary1082335
+Node: Dynamic Extensions1084599
+Node: Extension Intro1086198
+Node: Plugin License1087506
+Node: Extension Mechanism Outline1088319
+Ref: figure-load-extension1088770
+Ref: figure-register-new-function1090355
+Ref: figure-call-new-function1091465
+Node: Extension API Description1093589
+Node: Extension API Functions Introduction1095318
+Ref: table-api-std-headers1097216
+Node: General Data Types1101680
+Ref: General Data Types-Footnote-11110848
+Node: Memory Allocation Functions1111163
+Ref: Memory Allocation Functions-Footnote-11115888
+Node: Constructor Functions1115987
+Node: API Ownership of MPFR and GMP Values1119892
+Node: Registration Functions1121453
+Node: Extension Functions1122157
+Node: Exit Callback Functions1127733
+Node: Extension Version String1129052
+Node: Input Parsers1129747
+Node: Output Wrappers1144391
+Node: Two-way processors1149239
+Node: Printing Messages1151600
+Ref: Printing Messages-Footnote-11152814
+Node: Updating ERRNO1152969
+Node: Requesting Values1153768
+Ref: table-value-types-returned1154521
+Node: Accessing Parameters1155630
+Node: Symbol Table Access1156914
+Node: Symbol table by name1157430
+Ref: Symbol table by name-Footnote-11160641
+Node: Symbol table by cookie1160773
+Ref: Symbol table by cookie-Footnote-11165054
+Node: Cached values1165118
+Ref: Cached values-Footnote-11168762
+Node: Array Manipulation1168919
+Ref: Array Manipulation-Footnote-11170022
+Node: Array Data Types1170059
+Ref: Array Data Types-Footnote-11172881
+Node: Array Functions1172981
+Node: Flattening Arrays1178010
+Node: Creating Arrays1185062
+Node: Redirection API1189912
+Node: Extension API Variables1192933
+Node: Extension Versioning1193658
+Ref: gawk-api-version1194095
+Node: Extension GMP/MPFR Versioning1195883
+Node: Extension API Informational Variables1197589
+Node: Extension API Boilerplate1198750
+Node: Changes from API V11202886
+Node: Finding Extensions1204520
+Node: Extension Example1205095
+Node: Internal File Description1205919
+Node: Internal File Ops1210243
+Ref: Internal File Ops-Footnote-11221801
+Node: Using Internal File Ops1221949
+Ref: Using Internal File Ops-Footnote-11224380
+Node: Extension Samples1224658
+Node: Extension Sample File Functions1226227
+Node: Extension Sample Fnmatch1234365
+Node: Extension Sample Fork1235960
+Node: Extension Sample Inplace1237236
+Node: Extension Sample Ord1240908
+Node: Extension Sample Readdir1241784
+Ref: table-readdir-file-types1242681
+Node: Extension Sample Revout1243819
+Node: Extension Sample Rev2way1244416
+Node: Extension Sample Read write array1245168
+Node: Extension Sample Readfile1248442
+Node: Extension Sample Time1249573
+Node: Extension Sample API Tests1251863
+Node: gawkextlib1252371
+Node: Extension summary1255407
+Node: Extension Exercises1259265
+Node: Language History1260543
+Node: V7/SVR3.11262257
+Node: SVR41264607
+Node: POSIX1266139
+Node: BTL1267564
+Node: POSIX/GNU1268333
+Node: Feature History1274864
+Node: Common Extensions1294430
+Node: Ranges and Locales1295799
+Ref: Ranges and Locales-Footnote-11300600
+Ref: Ranges and Locales-Footnote-21300627
+Ref: Ranges and Locales-Footnote-31300866
+Node: Contributors1301089
+Node: History summary1307294
+Node: Installation1308740
+Node: Gawk Distribution1309704
+Node: Getting1310196
+Node: Extracting1311195
+Node: Distribution contents1312907
+Node: Unix Installation1320987
+Node: Quick Installation1321809
+Node: Compiling with MPFR1324355
+Node: Shell Startup Files1325061
+Node: Additional Configuration Options1326218
+Node: Configuration Philosophy1328605
+Node: Compiling from Git1331107
+Node: Building the Documentation1331666
+Node: Non-Unix Installation1333078
+Node: PC Installation1333554
+Node: PC Binary Installation1334427
+Node: PC Compiling1335332
+Node: PC Using1336510
+Node: Cygwin1340238
+Node: MSYS1341494
+Node: OpenVMS Installation1342126
+Node: OpenVMS Compilation1342807
+Ref: OpenVMS Compilation-Footnote-11344290
+Node: OpenVMS Dynamic Extensions1344352
+Node: OpenVMS Installation Details1345988
+Node: OpenVMS Running1348423
+Node: OpenVMS GNV1352560
+Node: Bugs1353315
+Node: Bug definition1354239
+Node: Bug address1357890
+Node: Usenet1361481
+Node: Performance bugs1362712
+Node: Asking for help1365730
+Node: Maintainers1367721
+Node: Other Versions1368748
+Node: Installation summary1377680
+Node: Notes1379064
+Node: Compatibility Mode1379874
+Node: Additions1380696
+Node: Accessing The Source1381641
+Node: Adding Code1383176
+Node: New Ports1390312
+Node: Derived Files1394822
+Ref: Derived Files-Footnote-11400669
+Ref: Derived Files-Footnote-21400704
+Ref: Derived Files-Footnote-31401321
+Node: Future Extensions1401435
+Node: Implementation Limitations1402107
+Node: Extension Design1403349
+Node: Old Extension Problems1404513
+Ref: Old Extension Problems-Footnote-11406089
+Node: Extension New Mechanism Goals1406150
+Ref: Extension New Mechanism Goals-Footnote-11409646
+Node: Extension Other Design Decisions1409847
+Node: Extension Future Growth1412046
+Node: Notes summary1412670
+Node: Basic Concepts1413883
+Node: Basic High Level1414568
+Ref: figure-general-flow1414850
+Ref: figure-process-flow1415557
+Ref: Basic High Level-Footnote-11418958
+Node: Basic Data Typing1419147
+Node: Glossary1422565
+Node: Copying1455687
+Node: GNU Free Documentation License1493448
+Node: Index1518771

End Tag Table
diff --git a/doc/gawk.texi b/doc/gawk.texi
index b72cf068..673cfe4b 100644
--- a/doc/gawk.texi
+++ b/doc/gawk.texi
@@ -22165,6 +22165,12 @@ in the array.
@node Dynamic Typing
@subsection Functions and Their Effects on Variable Typing
+@quotation
+@i{It's a desert topping!
+It's a floor wax!}
+@author Saturday Night Live (back when it used to be funny)
+@end quotation
+
@command{awk} is a very fluid language.
It is possible that @command{awk} can't tell if an identifier
represents a scalar variable or an array until runtime.
@@ -42399,18 +42405,18 @@ the three most widely used freely available versions of @command{awk}
@multitable {@file{/dev/stderr} special file} {BWK @command{awk}} {@command{mawk}} {@command{gawk}} {Now standard}
@headitem Feature @tab BWK @command{awk} @tab @command{mawk} @tab @command{gawk} @tab Now standard
+@item @code{**} and @code{**=} operators @tab X @tab @tab X @tab
@item @samp{\x} escape sequence @tab X @tab X @tab X @tab
-@item @code{FS} as null string @tab X @tab X @tab X @tab
@item @file{/dev/stdin} special file @tab X @tab X @tab X @tab
@item @file{/dev/stdout} special file @tab X @tab X @tab X @tab
@item @file{/dev/stderr} special file @tab X @tab X @tab X @tab
+@item @code{BINMODE} variable @tab @tab X @tab X @tab
+@item @code{FS} as null string @tab X @tab X @tab X @tab
@item @code{delete} without subscript @tab X @tab X @tab X @tab X
@item @code{fflush()} function @tab X @tab X @tab X @tab X
+@item @code{func} keyword @tab X @tab @tab X @tab
@item @code{length()} of an array @tab X @tab X @tab X @tab
@item @code{nextfile} statement @tab X @tab X @tab X @tab X
-@item @code{**} and @code{**=} operators @tab X @tab @tab X @tab
-@item @code{func} keyword @tab X @tab @tab X @tab
-@item @code{BINMODE} variable @tab @tab X @tab X @tab
@item @code{RS} as regexp @tab X @tab X @tab X @tab
@item Time-related functions @tab @tab X @tab X @tab
@end multitable
diff --git a/doc/gawktexi.in b/doc/gawktexi.in
index e6556684..7eb91428 100644
--- a/doc/gawktexi.in
+++ b/doc/gawktexi.in
@@ -21146,6 +21146,12 @@ in the array.
@node Dynamic Typing
@subsection Functions and Their Effects on Variable Typing
+@quotation
+@i{It's a desert topping!
+It's a floor wax!}
+@author Saturday Night Live (back when it used to be funny)
+@end quotation
+
@command{awk} is a very fluid language.
It is possible that @command{awk} can't tell if an identifier
represents a scalar variable or an array until runtime.
@@ -41311,18 +41317,18 @@ the three most widely used freely available versions of @command{awk}
@multitable {@file{/dev/stderr} special file} {BWK @command{awk}} {@command{mawk}} {@command{gawk}} {Now standard}
@headitem Feature @tab BWK @command{awk} @tab @command{mawk} @tab @command{gawk} @tab Now standard
+@item @code{**} and @code{**=} operators @tab X @tab @tab X @tab
@item @samp{\x} escape sequence @tab X @tab X @tab X @tab
-@item @code{FS} as null string @tab X @tab X @tab X @tab
@item @file{/dev/stdin} special file @tab X @tab X @tab X @tab
@item @file{/dev/stdout} special file @tab X @tab X @tab X @tab
@item @file{/dev/stderr} special file @tab X @tab X @tab X @tab
+@item @code{BINMODE} variable @tab @tab X @tab X @tab
+@item @code{FS} as null string @tab X @tab X @tab X @tab
@item @code{delete} without subscript @tab X @tab X @tab X @tab X
@item @code{fflush()} function @tab X @tab X @tab X @tab X
+@item @code{func} keyword @tab X @tab @tab X @tab
@item @code{length()} of an array @tab X @tab X @tab X @tab
@item @code{nextfile} statement @tab X @tab X @tab X @tab X
-@item @code{**} and @code{**=} operators @tab X @tab @tab X @tab
-@item @code{func} keyword @tab X @tab @tab X @tab
-@item @code{BINMODE} variable @tab @tab X @tab X @tab
@item @code{RS} as regexp @tab X @tab X @tab X @tab
@item Time-related functions @tab @tab X @tab X @tab
@end multitable
diff --git a/doc/texinfo.tex b/doc/texinfo.tex
index 204caf74..c0a54919 100644
--- a/doc/texinfo.tex
+++ b/doc/texinfo.tex
@@ -1,9 +1,9 @@
% texinfo.tex -- TeX macros to handle Texinfo files.
-%
+%
% Load plain if necessary, i.e., if running under initex.
\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
%
-\def\texinfoversion{2023-03-21.06}
+\def\texinfoversion{2023-03-27.21}
%
% Copyright 1985, 1986, 1988, 1990-2023 Free Software Foundation, Inc.
%
@@ -212,7 +212,7 @@
% @errormsg{MSG}. Do the index-like expansions on MSG, but if things
% aren't perfect, it's not the end of the world, being an error message,
% after all.
-%
+%
\def\errormsg{\begingroup \indexnofonts \doerrormsg}
\def\doerrormsg#1{\errmessage{#1}}
@@ -426,7 +426,7 @@
}%
}
-% First remove any @comment, then any @c comment. Pass the result on to
+% First remove any @comment, then any @c comment. Pass the result on to
% \argcheckspaces.
\def\argremovecomment#1\comment#2\ArgTerm{\argremovec #1\c\ArgTerm}
\def\argremovec#1\c#2\ArgTerm{\argcheckspaces#1\^^M\ArgTerm}
@@ -1048,8 +1048,8 @@ where each line of input produces a line of output.}
end
end
}
- % The -2 in the arguments here gives all the input to TeX catcode 12
- % (other) or 10 (space), preventing undefined control sequence errors. See
+ % The -2 in the arguments here gives all the input to TeX catcode 12
+ % (other) or 10 (space), preventing undefined control sequence errors. See
% https://lists.gnu.org/archive/html/bug-texinfo/2019-08/msg00031.html
%
\endgroup
@@ -1102,27 +1102,33 @@ where each line of input produces a line of output.}
% Output page labels information.
% See PDF reference v.1.7 p.594, section 8.3.1.
+% Page label ranges must be increasing.
\ifpdf
\def\pagelabels{%
\def\title{0 << /P (T-) /S /D >>}%
- \edef\roman{\the\romancount << /S /r >>}%
- \edef\arabic{\the\arabiccount << /S /D >>}%
%
- % Page label ranges must be increasing. Remove any duplicates.
- % (There is a slight chance of this being wrong if e.g. there is
- % a @contents but no @titlepage, etc.)
- %
- \ifnum\romancount=0 \def\roman{}\fi
- \ifnum\arabiccount=0 \def\title{}%
- \else
- \ifnum\romancount=\arabiccount \def\roman{}\fi
- \fi
- %
- \ifnum\romancount<\arabiccount
- \pdfcatalog{/PageLabels << /Nums [\title \roman \arabic ] >> }\relax
+ % support @contents at very end of document
+ \ifnum\contentsendcount=\pagecount
+ \ifnum\arabiccount<\romancount
+ \pdfcatalog{/PageLabels << /Nums
+ [\title
+ \the\arabiccount << /S /D >>
+ \the\romancount << /S /r >>
+ ] >> }\relax
+ \fi
+ % no contents in document
+ \else\ifnum\contentsendcount=0
+ \pdfcatalog{/PageLabels << /Nums
+ [\title
+ \the\arabiccount << /S /D >>
+ ] >> }\relax
\else
- \pdfcatalog{/PageLabels << /Nums [\title \arabic \roman ] >> }\relax
- \fi
+ \pdfcatalog{/PageLabels << /Nums
+ [\title
+ \the\romancount << /S /r >>
+ \the\contentsendcount << /S /D >>
+ ] >> }\relax
+ \fi\fi
}
\else
\let\pagelabels\relax
@@ -1131,6 +1137,8 @@ where each line of input produces a line of output.}
\newcount\pagecount \pagecount=0
\newcount\romancount \romancount=0
\newcount\arabiccount \arabiccount=0
+\newcount\contentsendcount \contentsendcount=0
+
\ifpdf
\let\ptxadvancepageno\advancepageno
\def\advancepageno{%
@@ -1143,7 +1151,7 @@ where each line of input produces a line of output.}
% for display in the outlines, and in other places. Thus, we have to
% double any backslashes. Otherwise, a name like "\node" will be
% interpreted as a newline (\n), followed by o, d, e. Not good.
-%
+%
% See http://www.ntg.nl/pipermail/ntg-pdftex/2004-July/000654.html and
% related messages. The final outcome is that it is up to the TeX user
% to double the backslashes and otherwise make the string valid, so
@@ -1435,7 +1443,7 @@ output) for that.)}
% We use the node names as the destinations.
%
% Currently we prefix the section name with the section number
- % for chapter and appendix headings only in order to avoid too much
+ % for chapter and appendix headings only in order to avoid too much
% horizontal space being required in the PDF viewer.
\def\numchapentry##1##2##3##4{%
\dopdfoutline{##2 ##1}{count-\expnumber{chap##2}}{##3}{##4}}%
@@ -1458,7 +1466,7 @@ output) for that.)}
% their "best" equivalent, based on the @documentencoding. Too
% much work for too little return. Just use the ASCII equivalents
% we use for the index sort strings.
- %
+ %
\indexnofonts
\setupdatafile
% We can have normal brace characters in the PDF outlines, unlike
@@ -1684,7 +1692,7 @@ output) for that.)}
% We use node names as destinations.
%
% Currently we prefix the section name with the section number
- % for chapter and appendix headings only in order to avoid too much
+ % for chapter and appendix headings only in order to avoid too much
% horizontal space being required in the PDF viewer.
\def\partentry##1##2##3##4{}% ignore parts in the outlines
\def\numchapentry##1##2##3##4{%
@@ -2711,7 +2719,7 @@ end
}
% Commands to set the quote options.
-%
+%
\parseargdef\codequoteundirected{%
\def\temp{#1}%
\ifx\temp\onword
@@ -2757,7 +2765,7 @@ end
% If we are in a monospaced environment, however, 1) always use \ttsl,
% and 2) do not add an italic correction.
\def\dosmartslant#1#2{%
- \ifusingtt
+ \ifusingtt
{{\ttsl #2}\let\next=\relax}%
{\def\next{{#1#2}\smartitaliccorrection}}%
\next
@@ -2936,7 +2944,7 @@ end
\gdef\codedash{\futurelet\next\codedashfinish}
\gdef\codedashfinish{%
\normaldash % always output the dash character itself.
- %
+ %
% Now, output a discretionary to allow a line break, unless
% (a) the next character is a -, or
% (b) the preceding character is a -, or
@@ -3042,7 +3050,7 @@ end
% For pdfTeX and LuaTeX
\ifurefurlonlylink
% PDF plus option to not display url, show just arg
- \unhbox0
+ \unhbox0
\else
% PDF, normally display both arg and url for consistency,
% visibility, if the pdf is eventually used to print, etc.
@@ -3055,7 +3063,7 @@ end
% For XeTeX
\ifurefurlonlylink
% PDF plus option to not display url, show just arg
- \unhbox0
+ \unhbox0
\else
% PDF, normally display both arg and url for consistency,
% visibility, if the pdf is eventually used to print, etc.
@@ -3113,10 +3121,10 @@ end
}
}
-% By default we'll break after the special characters, but some people like to
-% break before the special chars, so allow that. Also allow no breaking at
+% By default we'll break after the special characters, but some people like to
+% break before the special chars, so allow that. Also allow no breaking at
% all, for manual control.
-%
+%
\parseargdef\urefbreakstyle{%
\def\txiarg{#1}%
\ifx\txiarg\wordnone
@@ -3135,10 +3143,10 @@ end
\def\wordnone{none}
% Allow a ragged right output to aid breaking long URL's. There can
-% be a break at the \allowbreak with no extra glue (if the existing stretch in
+% be a break at the \allowbreak with no extra glue (if the existing stretch in
% the line is sufficient), a break at the \penalty with extra glue added
% 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
+% Changing the value of the penalty and/or the amount of stretch affects how
% preferable one choice is over the other.
\def\urefallowbreak{%
\penalty0\relax
@@ -3353,7 +3361,7 @@ $$%
% @inlinefmt{FMTNAME,PROCESSED-TEXT} and @inlineraw{FMTNAME,RAW-TEXT}.
% Ignore unless FMTNAME == tex; then it is like @iftex and @tex,
% except specified as a normal braced arg, so no newlines to worry about.
-%
+%
\def\outfmtnametex{tex}
%
\long\def\inlinefmt#1{\doinlinefmt #1,\finish}
@@ -3361,7 +3369,7 @@ $$%
\def\inlinefmtname{#1}%
\ifx\inlinefmtname\outfmtnametex \ignorespaces #2\fi
}
-%
+%
% @inlinefmtifelse{FMTNAME,THEN-TEXT,ELSE-TEXT} expands THEN-TEXT if
% FMTNAME is tex, else ELSE-TEXT.
\long\def\inlinefmtifelse#1{\doinlinefmtifelse #1,,,\finish}
@@ -3377,7 +3385,7 @@ $$%
% *right* brace they would have to use a command anyway, so they may as
% well use a command to get a left brace too. We could re-use the
% delimiter character idea from \verb, but it seems like overkill.
-%
+%
\long\def\inlineraw{\tex \doinlineraw}
\long\def\doinlineraw#1{\doinlinerawtwo #1,\finish}
\def\doinlinerawtwo#1,#2,\finish{%
@@ -3663,7 +3671,7 @@ $$%
% for non-CM glyphs. That is ec* for regular text and tc* for the text
% companion symbols (LaTeX TS1 encoding). Both are part of the ec
% package and follow the same conventions.
-%
+%
\def\ecfont{\etcfont{e}}
\def\tcfont{\etcfont{t}}
%
@@ -3745,7 +3753,7 @@ $$%
after the title page.}}%
\def\setshortcontentsaftertitlepage{%
\errmessage{@setshortcontentsaftertitlepage has been removed as a Texinfo
- command; move your @shortcontents and @contents commands if you
+ command; move your @shortcontents and @contents commands if you
want the contents after the title page.}}%
\parseargdef\shorttitlepage{%
@@ -3799,7 +3807,7 @@ $$%
% don't worry much about spacing, ragged right. This should be used
% inside a \vbox, and fonts need to be set appropriately first. \par should
% be specified before the end of the \vbox, since a vbox is a group.
-%
+%
\def\raggedtitlesettings{%
\rm
\hyphenpenalty=10000
@@ -4625,7 +4633,7 @@ $$%
% Like \expandablevalue, but completely expandable (the \message in the
% definition above operates at the execution level of TeX). Used when
% writing to auxiliary files, due to the expansion that \write does.
-% If flag is undefined, pass through an unexpanded @value command: maybe it
+% If flag is undefined, pass through an unexpanded @value command: maybe it
% will be set by the time it is read back in.
%
% NB flag names containing - or _ may not work here.
@@ -4649,7 +4657,7 @@ $$%
% @ifset VAR ... @end ifset reads the `...' iff VAR has been defined
% with @set.
-%
+%
% To get the special treatment we need for `@end ifset,' we call
% \makecond and then redefine.
%
@@ -4682,7 +4690,7 @@ $$%
% without the @) is in fact defined. We can only feasibly check at the
% TeX level, so something like `mathcode' is going to considered
% defined even though it is not a Texinfo command.
-%
+%
\makecond{ifcommanddefined}
\def\ifcommanddefined{\parsearg{\doifcmddefined{\let\next=\ifcmddefinedfail}}}
%
@@ -4788,7 +4796,7 @@ $$%
\def\docodeindex#1{\edef\indexname{#1}\parsearg\docodeindexxxx}
\def\docodeindexxxx #1{\docind{\indexname}{#1}}
-
+
% \definedummyword defines \#1 as \string\#1\space, thus effectively
% preventing its expansion. This is used only for control words,
% not control letters, because the \space would be incorrect for
@@ -4805,7 +4813,7 @@ $$%
\def\definedummyword #1{\def#1{\string#1\space}}%
\def\definedummyletter#1{\def#1{\string#1}}%
-% Used for the aux, toc and index files to prevent expansion of Texinfo
+% Used for the aux, toc and index files to prevent expansion of Texinfo
% commands. Most of the commands are controlled through the
% \ifdummies conditional.
%
@@ -5094,7 +5102,7 @@ $$%
\let\value\indexnofontsvalue
}
-
+
% #1 is the index name, #2 is the entry text.
@@ -5135,7 +5143,7 @@ $$%
\ifx\suffix\indexisfl\def\suffix{f1}\fi
% Open the file
\immediate\openout\csname#1indfile\endcsname \jobname.\suffix
- % Using \immediate above here prevents an object entering into the current
+ % Using \immediate above here prevents an object entering into the current
% box, which could confound checks such as those in \safewhatsit for
% preceding skips.
\typeout{Writing index file \jobname.\suffix}%
@@ -5187,7 +5195,7 @@ $$%
\ifx\segment\isfinish
\else
%
- % Fully expand the segment, throwing away any @sortas directives, and
+ % Fully expand the segment, throwing away any @sortas directives, and
% trim spaces.
\edef\trimmed{\segment}%
\edef\trimmed{\expandafter\eatspaces\expandafter{\trimmed}}%
@@ -5251,12 +5259,12 @@ $$%
% the current value of \escapechar.
\def\escapeisbackslash{\escapechar=`\\}
-% Use \ in index files by default. texi2dvi didn't support @ as the escape
-% character (as it checked for "\entry" in the files, and not "@entry"). When
-% the new version of texi2dvi has had a chance to become more prevalent, then
-% the escape character can change back to @ again. This should be an easy
-% change to make now because both @ and \ are only used as escape characters in
-% index files, never standing for themselves.
+% Use \ in index files by default. texi2dvi didn't support @ as the escape
+% character (as it checked for "\entry" in the files, and not "@entry"). When
+% the new version of texi2dvi has had a chance to become more prevalent, then
+% the escape character can change back to @ again. This should be an easy
+% change to make now because both @ and \ are only used as escape characters in
+% index files, never standing for themselves.
%
\set txiindexescapeisbackslash
@@ -5279,7 +5287,7 @@ $$%
\def\}{\rbracechar{}}%
\uccode`\~=`\\ \uppercase{\def~{\backslashchar{}}}%
%
- % Split the entry into primary entry and any subentries, and get the index
+ % Split the entry into primary entry and any subentries, and get the index
% sort key.
\splitindexentry\indextext
%
@@ -5460,18 +5468,18 @@ $$%
\uccode`\~=`\\ \uppercase{\if\noexpand~}\noexpand#1
\ifflagclear{txiskipindexfileswithbackslash}{%
\errmessage{%
-ERROR: A sorted index file in an obsolete format was skipped.
+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>.
-If you are using an old version of 'texindex' (part of the Texinfo
+If you are using an old version of 'texindex' (part of the Texinfo
distribution), you may also need to upgrade to a newer version (at least 6.0).
You may be able to typeset the index if you run
'texindex \jobname.\indexname' yourself.
-You could also try setting the 'txiindexescapeisbackslash' flag by
+You could also try setting the 'txiindexescapeisbackslash' flag by
running a command like
-'texi2dvi -t "@set txiindexescapeisbackslash" \jobname.texi'. If you do
+'texi2dvi -t "@set txiindexescapeisbackslash" \jobname.texi'. If you do
this, Texinfo will try to use index files in the old format.
-If you continue to have problems, deleting the index files and starting again
+If you continue to have problems, deleting the index files and starting again
might help (with 'rm \jobname.?? \jobname.??s')%
}%
}{%
@@ -5544,7 +5552,7 @@ might help (with 'rm \jobname.?? \jobname.??s')%
% bottom of a column to reduce an increase in inter-line spacing.
\nobreak
\vskip 0pt plus 5\baselineskip
- \penalty -300
+ \penalty -300
\vskip 0pt plus -5\baselineskip
%
% Typeset the initial. Making this add up to a whole number of
@@ -5676,7 +5684,7 @@ might help (with 'rm \jobname.?? \jobname.??s')%
\advance\dimen@ii by 1\dimen@i
\ifdim\wd\boxA > \dimen@ii % If the entry doesn't fit in one line
\ifdim\dimen@ > 0.8\dimen@ii % due to long index text
- % Try to split the text roughly evenly. \dimen@ will be the length of
+ % Try to split the text roughly evenly. \dimen@ will be the length of
% the first line.
\dimen@ = 0.7\dimen@
\dimen@ii = \hsize
@@ -5884,7 +5892,7 @@ might help (with 'rm \jobname.?? \jobname.??s')%
\newbox\balancedcolumns
\setbox\balancedcolumns=\vbox{shouldnt see this}%
%
-% Only called for the last of the double column material. \doublecolumnout
+% Only called for the last of the double column material. \doublecolumnout
% does the others.
\def\balancecolumns{%
\setbox0 = \vbox{\unvbox\PAGE}% like \box255 but more efficient, see p.120.
@@ -5912,7 +5920,7 @@ might help (with 'rm \jobname.?? \jobname.??s')%
}%
% Now the left column is in box 1, and the right column in box 3.
%
- % Check whether the left column has come out higher than the page itself.
+ % Check whether the left column has come out higher than the page itself.
% (Note that we have doubled \vsize for the double columns, so
% the actual height of the page is 0.5\vsize).
\ifdim2\ht1>\vsize
@@ -6209,7 +6217,7 @@ might help (with 'rm \jobname.?? \jobname.??s')%
\let\top\unnumbered
% Sections.
-%
+%
\outer\parseargdef\numberedsec{\numhead1{#1}} % normally calls seczzz
\def\seczzz#1{%
\global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1
@@ -6232,7 +6240,7 @@ might help (with 'rm \jobname.?? \jobname.??s')%
}
% Subsections.
-%
+%
% normally calls numberedsubseczzz:
\outer\parseargdef\numberedsubsec{\numhead2{#1}}
\def\numberedsubseczzz#1{%
@@ -6257,7 +6265,7 @@ might help (with 'rm \jobname.?? \jobname.??s')%
}
% Subsubsections.
-%
+%
% normally numberedsubsubseczzz:
\outer\parseargdef\numberedsubsubsec{\numhead3{#1}}
\def\numberedsubsubseczzz#1{%
@@ -6809,12 +6817,8 @@ might help (with 'rm \jobname.?? \jobname.??s')%
% Get ready to use Arabic numerals again
\def\contentsendroman{%
\lastnegativepageno = \pageno
- \global\pageno = \savepageno
- %
- % If \romancount > \arabiccount, the contents are at the end of the
- % document. Otherwise, advance where the Arabic numerals start for
- % the page numbers.
- \ifnum\romancount>\arabiccount\else\global\arabiccount=\pagecount\fi
+ \global\pageno=1
+ \contentsendcount = \pagecount
}
% Typeset the label for a chapter or appendix for the short contents.
@@ -7319,7 +7323,7 @@ might help (with 'rm \jobname.?? \jobname.??s')%
% @indentedblock is like @quotation, but indents only on the left and
% has no optional argument.
-%
+%
\makedispenvdef{indentedblock}{\indentedblockstart}
%
\def\indentedblockstart{%
@@ -7629,7 +7633,7 @@ might help (with 'rm \jobname.?? \jobname.??s')%
% @deftypefnnewline on|off says whether the return type of typed functions
% are printed on their own line. This affects @deftypefn, @deftypefun,
% @deftypeop, and @deftypemethod.
-%
+%
\parseargdef\deftypefnnewline{%
\def\temp{#1}%
\ifx\temp\onword
@@ -7797,7 +7801,7 @@ might help (with 'rm \jobname.?? \jobname.??s')%
\tclose{\temp}% typeset the return type
\ifrettypeownline
% put return type on its own line; prohibit line break following:
- \hfil\vadjust{\nobreak}\break
+ \hfil\vadjust{\nobreak}\break
\else
\space % type on same line, so just followed by a space
\fi
@@ -7946,7 +7950,7 @@ might help (with 'rm \jobname.?? \jobname.??s')%
\scantokens{#1@comment}%
%
% The \comment is to remove the \newlinechar added by \scantokens, and
- % can be noticed by \parsearg. Note \c isn't used because this means cedilla
+ % can be noticed by \parsearg. Note \c isn't used because this means cedilla
% in math mode.
}
@@ -8141,7 +8145,7 @@ might help (with 'rm \jobname.?? \jobname.??s')%
% list to some hook where the argument is to be expanded. If there are
% less than 10 arguments that hook is to be replaced by ##N where N
% is the position in that list, that is to say the macro arguments are to be
-% defined `a la TeX in the macro body.
+% defined `a la TeX in the macro body.
%
% That gets used by \mbodybackslash (above).
%
@@ -8175,8 +8179,8 @@ might help (with 'rm \jobname.?? \jobname.??s')%
%
% Read recursive and nonrecursive macro bodies. (They're different since
% rec and nonrec macros end differently.)
-%
-% We are in \macrobodyctxt, and the \xdef causes backslashshes in the macro
+%
+% We are in \macrobodyctxt, and the \xdef causes backslashshes in the macro
% body to be transformed.
% Set \macrobody to the body of the macro, and call \macrodef.
%
@@ -8210,7 +8214,7 @@ might help (with 'rm \jobname.?? \jobname.??s')%
% twice the \macarg.BLAH macros does not cost too much processing power.
\def\parsemmanyargdef@@#1,{%
\if#1;\let\next=\relax
- \else
+ \else
\let\next=\parsemmanyargdef@@
\edef\tempb{\eatspaces{#1}}%
\expandafter\def\expandafter\tempa
@@ -8295,7 +8299,7 @@ might help (with 'rm \jobname.?? \jobname.??s')%
% Replace arguments by their values in the macro body, and place the result
% in macro \@tempa.
-%
+%
\def\macvalstoargs@{%
% To do this we use the property that token registers that are \the'ed
% within an \edef expand only once. So we are going to place all argument
@@ -8319,9 +8323,9 @@ might help (with 'rm \jobname.?? \jobname.??s')%
\expandafter\def\expandafter\@tempa\expandafter{\@tempc}%
}
-% Define the named-macro outside of this group and then close this group.
-%
-\def\macargexpandinbody@{%
+% Define the named-macro outside of this group and then close this group.
+%
+\def\macargexpandinbody@{%
\expandafter
\endgroup
\macargdeflist@
@@ -8359,7 +8363,7 @@ might help (with 'rm \jobname.?? \jobname.??s')%
}
% Trailing missing arguments are set to empty.
-%
+%
\def\setemptyargvalues@{%
\ifx\paramlist\nilm@
\let\next\macargexpandinbody@
@@ -8437,7 +8441,7 @@ might help (with 'rm \jobname.?? \jobname.??s')%
\else % at most 9
\ifnum\paramno<10\relax
% @MACNAME sets the context for reading the macro argument
- % @MACNAME@@ gets the argument, processes backslashes and appends a
+ % @MACNAME@@ gets the argument, processes backslashes and appends a
% comma.
% @MACNAME@@@ removes braces surrounding the argument list.
% @MACNAME@@@@ scans the macro body with arguments substituted.
@@ -8481,11 +8485,11 @@ might help (with 'rm \jobname.?? \jobname.??s')%
% Call #1 with a list of tokens #2, with any doubled backslashes in #2
% compressed to one.
%
-% This implementation works by expansion, and not execution (so we cannot use
-% \def or similar). This reduces the risk of this failing in contexts where
-% complete expansion is done with no execution (for example, in writing out to
+% This implementation works by expansion, and not execution (so we cannot use
+% \def or similar). This reduces the risk of this failing in contexts where
+% complete expansion is done with no execution (for example, in writing out to
% an auxiliary file for an index entry).
-%
+%
% State is kept in the input stream: the argument passed to
% @look_ahead, @gobble_and_check_finish and @add_segment is
%
@@ -8507,11 +8511,11 @@ might help (with 'rm \jobname.?? \jobname.??s')%
% #3 - NEXT_TOKEN
% #4 used to look ahead
%
-% If the next token is not a backslash, process the rest of the argument;
+% If the next token is not a backslash, process the rest of the argument;
% otherwise, remove the next token.
@gdef@look_ahead#1!#2#3#4{%
@ifx#4\%
- @expandafter@gobble_and_check_finish
+ @expandafter@gobble_and_check_finish
@else
@expandafter@add_segment
@fi#1!{#2}#4#4%
@@ -8535,9 +8539,9 @@ might help (with 'rm \jobname.?? \jobname.??s')%
% #3 - NEXT_TOKEN
% #4 is input stream until next backslash
%
-% Input stream is either at the start of the argument, or just after a
-% backslash sequence, either a lone backslash, or a doubled backslash.
-% NEXT_TOKEN contains the first token in the input stream: if it is \finish,
+% Input stream is either at the start of the argument, or just after a
+% backslash sequence, either a lone backslash, or a doubled backslash.
+% NEXT_TOKEN contains the first token in the input stream: if it is \finish,
% finish; otherwise, append to ARG_RESULT the segment of the argument up until
% the next backslash. PENDING_BACKSLASH contains a backslash to represent
% a backslash just before the start of the input stream that has not been
@@ -8549,13 +8553,13 @@ might help (with 'rm \jobname.?? \jobname.??s')%
% append the pending backslash to the result, followed by the next segment
@expandafter@is_fi@look_ahead#1#2#4!{\}@fi
% this @fi is discarded by @look_ahead.
- % we can't get rid of it with \expandafter because we don't know how
+ % we can't get rid of it with \expandafter because we don't know how
% long #4 is.
}
% #1 - THE_MACRO
% #2 - ARG_RESULT
-% #3 discards the res of the conditional in @add_segment, and @is_fi ends the
+% #3 discards the res of the conditional in @add_segment, and @is_fi ends the
% conditional.
@gdef@call_the_macro#1#2!#3@fi{@is_fi #1{#2}}
@@ -8567,7 +8571,7 @@ might help (with 'rm \jobname.?? \jobname.??s')%
% for reading the argument (slightly different in the two cases). Then,
% to read the argument, in the whole-line case, it then calls the regular
% \parsearg MAC; in the lbrace case, it calls \passargtomacro MAC.
-%
+%
\def\braceorline#1{\let\macnamexxx=#1\futurelet\nchar\braceorlinexxx}
\def\braceorlinexxx{%
\ifx\nchar\bgroup
@@ -8690,7 +8694,7 @@ might help (with 'rm \jobname.?? \jobname.??s')%
% Used so that the @top node doesn't have to be wrapped in an @ifnottex
% conditional.
-% \doignore goes to more effort to skip nested conditionals but we don't need
+% \doignore goes to more effort to skip nested conditionals but we don't need
% that here.
\def\omittopnode{%
\ifx\lastnode\wordTop
@@ -8767,7 +8771,7 @@ might help (with 'rm \jobname.?? \jobname.??s')%
% automatically in xrefs, if the third arg is not explicitly specified.
% This was provided as a "secret" @set xref-automatic-section-title
% variable, now it's official.
-%
+%
\parseargdef\xrefautomaticsectiontitle{%
\def\temp{#1}%
\ifx\temp\onword
@@ -8783,7 +8787,7 @@ might help (with 'rm \jobname.?? \jobname.??s')%
\fi\fi
}
-%
+%
% @xref, @pxref, and @ref generate cross-references. For \xrefX, #1 is
% the node name, #2 the name of the Info cross-reference, #3 the printed
% node name, #4 the name of the Info file, #5 the name of the printed
@@ -8936,24 +8940,24 @@ might help (with 'rm \jobname.?? \jobname.??s')%
\fi
\else
% node/anchor (non-float) references.
- %
+ %
% If we use \unhbox to print the node names, TeX does not insert
% empty discretionaries after hyphens, which means that it will not
% find a line break at a hyphen in a node names. Since some manuals
% are best written with fairly long node names, containing hyphens,
% this is a loss. Therefore, we give the text of the node name
% again, so it is as if TeX is seeing it for the first time.
- %
+ %
\ifdim \wd\printedmanualbox > 0pt
% Cross-manual reference with a printed manual name.
- %
+ %
\crossmanualxref{\cite{\printedmanual\unskip}}%
%
\else\ifdim \wd\infofilenamebox > 0pt
% Cross-manual reference with only an info filename (arg 4), no
% printed manual name (arg 5). This is essentially the same as
% the case above; we output the filename, since we have nothing else.
- %
+ %
\crossmanualxref{\code{\infofilename\unskip}}%
%
\else
@@ -8992,20 +8996,20 @@ might help (with 'rm \jobname.?? \jobname.??s')%
\space\putwordpage\tie\refx{#1-pg}}
% Output a cross-manual xref to #1. Used just above (twice).
-%
+%
% Only include the text "Section ``foo'' in" if the foo is neither
% missing or Top. Thus, @xref{,,,foo,The Foo Manual} outputs simply
% "see The Foo Manual", the idea being to refer to the whole manual.
-%
+%
% But, this being TeX, we can't easily compare our node name against the
% string "Top" while ignoring the possible spaces before and after in
% the input. By adding the arbitrary 7sp below, we make it much less
% likely that a real node name would have the same width as "Top" (e.g.,
% in a monospaced font). Hopefully it will never happen in practice.
-%
+%
% For the same basic reason, we retypeset the "Top" at every
% reference, since the current font is indeterminate.
-%
+%
\def\crossmanualxref#1{%
\setbox\toprefbox = \hbox{Top\kern7sp}%
\setbox2 = \hbox{\ignorespaces \printedrefname \unskip \kern7sp}%
@@ -9082,9 +9086,9 @@ might help (with 'rm \jobname.?? \jobname.??s')%
\fi
}
-% This is the macro invoked by entries in the aux file. Define a control
-% sequence for a cross-reference target (we prepend XR to the control sequence
-% name to avoid collisions). The value is the page number. If this is a float
+% This is the macro invoked by entries in the aux file. Define a control
+% sequence for a cross-reference target (we prepend XR to the control sequence
+% name to avoid collisions). The value is the page number. If this is a float
% type, we have more work to do.
%
\def\xrdef#1#2{%
@@ -9100,10 +9104,10 @@ might help (with 'rm \jobname.?? \jobname.??s')%
\bgroup
\expandafter\gdef\csname XR\safexrefname\endcsname{#2}%
\egroup
- % We put the \gdef inside a group to avoid the definitions building up on
- % TeX's save stack, which can cause it to run out of space for aux files with
+ % We put the \gdef inside a group to avoid the definitions building up on
+ % TeX's save stack, which can cause it to run out of space for aux files with
% thousands of lines. \gdef doesn't use the save stack, but \csname does
- % when it defines an unknown control sequence as \relax.
+ % when it defines an unknown control sequence as \relax.
%
% Was that xref control sequence that we just defined for a float?
\expandafter\iffloat\csname XR\safexrefname\endcsname
@@ -10300,7 +10304,7 @@ directory should work if nowhere else does.}
\uppercase{.}
\endgroup
\else
- \errhelp = \EMsimple
+ \errhelp = \EMsimple
\errmessage{Unicode character U+#1 not supported, sorry}%
\fi
\else
@@ -10333,7 +10337,7 @@ directory should work if nowhere else does.}
\countUTFz = "#1\relax
\begingroup
\parseXMLCharref
-
+
% Give \u8:... its definition. The sequence of seven \expandafter's
% expands after the \gdef three times, e.g.
%
@@ -10345,7 +10349,7 @@ directory should work if nowhere else does.}
\expandafter\expandafter
\expandafter\expandafter
\expandafter\gdef \UTFviiiTmp{#2}%
- %
+ %
\expandafter\ifx\csname uni:#1\endcsname \relax \else
\message{Internal error, already defined: #1}%
\fi
@@ -10384,7 +10388,7 @@ directory should work if nowhere else does.}
\divide\countUTFz by 64
\countUTFy = \countUTFz % Save to be the future value of \countUTFz.
\multiply\countUTFz by 64
-
+
% \countUTFz is now \countUTFx with the last 5 bits cleared. Subtract
% in order to get the last five bits.
\advance\countUTFx by -\countUTFz
@@ -10419,7 +10423,7 @@ directory should work if nowhere else does.}
% U+0080..U+00FF = https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)
% U+0100..U+017F = https://en.wikipedia.org/wiki/Latin_Extended-A
% U+0180..U+024F = https://en.wikipedia.org/wiki/Latin_Extended-B
-%
+%
% Many of our renditions are less than wonderful, and all the missing
% characters are available somewhere. Loading the necessary fonts
% awaits user request. We can't truly support Unicode without
@@ -11664,7 +11668,7 @@ directory should work if nowhere else does.}
\def\texinfochars{%
\let< = \activeless
\let> = \activegtr
- \let~ = \activetilde
+ \let~ = \activetilde
\let^ = \activehat
\setregularquotes
\let\b = \strong
diff --git a/extension/ChangeLog b/extension/ChangeLog
index 1fca36ff..99611d0f 100644
--- a/extension/ChangeLog
+++ b/extension/ChangeLog
@@ -1,3 +1,8 @@
+2023-03-29 Arnold D. Robbins <arnold@skeeve.com>
+
+ * filefuncs.c: Fix a typo in a comment. Thanks to
+ zhou shvinq <zhoushuiqing321@outlook.com> for the report.
+
2023-03-12 Arnold D. Robbins <arnold@skeeve.com>
* time.c: Include ../missing_d/strptime.c if the strptime()
diff --git a/extension/filefuncs.c b/extension/filefuncs.c
index b2dfb23a..ac697f09 100644
--- a/extension/filefuncs.c
+++ b/extension/filefuncs.c
@@ -1,5 +1,5 @@
/*
- * filefuncs.c - Builtin functions that provide initial minimal iterface
+ * filefuncs.c - Builtin functions that provide initial minimal interface
* to the file system.
*
* Arnold Robbins, update for 3.1, Mon Nov 23 12:53:39 EST 1998