gawk-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[SCM] gawk branch, feature/latex-support, updated. gawk-4.1.0-4976-g2e17


From: Arnold Robbins
Subject: [SCM] gawk branch, feature/latex-support, updated. gawk-4.1.0-4976-g2e171b27
Date: Thu, 22 Dec 2022 00:32:20 -0500 (EST)

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "gawk".

The branch, feature/latex-support has been updated
       via  2e171b27e73d7b1fea3e3122d57e8feb7fd274d8 (commit)
      from  0f23965e6ad5f3ad5c20fa9d8dd7a62909789204 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://git.sv.gnu.org/cgit/gawk.git/commit/?id=2e171b27e73d7b1fea3e3122d57e8feb7fd274d8

commit 2e171b27e73d7b1fea3e3122d57e8feb7fd274d8
Author: Arnold D. Robbins <arnold@skeeve.com>
Date:   Thu Dec 22 07:31:55 2022 +0200

    Move to Texinfo 7.0.1, add LaTeX support.

diff --git a/ChangeLog b/ChangeLog
index df7cae81..28dd2d0c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2022-12-22         Arnold D. Robbins     <arnold@skeeve.com>
+
+       * README: Updated with texinfo.tex version.
+       * NEWS: Updated.
+
 2022-12-11         Arnold D. Robbins     <arnold@skeeve.com>
 
        * main.c (get_pma_version): Add declaration.
diff --git a/NEWS b/NEWS
index a1148f26..0f5b69c2 100644
--- a/NEWS
+++ b/NEWS
@@ -7,19 +7,26 @@
 Changes from 5.2.1 to 5.2.2
 ---------------------------
 
-1. Gawk no longer builds an x86_64 executable on M1 macOS systems.
+1. Infrastructure upgrades: makeinfo 7.0.1 must be used to format
+   the manual.  As a result, the manual can also now be formatted
+   with LaTeX by running it through `makeinfo --latex'.
+
+2. Gawk no longer builds an x86_64 executable on M1 macOS systems.
    This means that PMA is unavailable on those systems.
 
-2. Gawk will now diagnose if a heap file was created with a different
+3. Gawk will now diagnose if a heap file was created with a different
    setting of -M/--bignum than in the current invocation and exit with
    a fatal message if so.
 
-3. Gawk no longer "leaks" its free list of NODEs in the heap file, resulting
+4. Gawk no longer "leaks" its free list of NODEs in the heap file, resulting
    in much more efficient usage of persistent storage.
 
-4. PROCINFO["pma"] exists if the PMA allocator is compiled into gawk.
+5. PROCINFO["pma"] exists if the PMA allocator is compiled into gawk.
    Its value is the PMA version.
 
+6. As usual, there have been several minor code cleanups and bug fixes.
+   See the ChangeLog for details.
+
 Changes from 5.2.0 to 5.2.1
 ---------------------------
 
diff --git a/README b/README
index 9d12828d..e9e5fd0d 100644
--- a/README
+++ b/README
@@ -21,7 +21,7 @@ Changes in this version are summarized in the NEWS file.
 Read the file POSIX.STD for a discussion of issues where the standard
 says one thing but gawk does something different.
 
-To format the documentation with TeX, use at least version 2019-09-20.22
+To format the documentation with TeX, use at least version 2022-11-07.17
 of texinfo.tex. There is a usable copy of texinfo.tex in the doc directory.
 You must also use at least version 6.7 of texindex and of makeinfo
 from the texinfo-6.7 distribution.
diff --git a/build-aux/ChangeLog b/build-aux/ChangeLog
index 191dc10e..ed471822 100644
--- a/build-aux/ChangeLog
+++ b/build-aux/ChangeLog
@@ -1,3 +1,7 @@
+2022-12-22         Arnold D. Robbins     <arnold@skeeve.com>
+
+       * texinfo.tex: Updated from texinfo 7.0.1 distribution.
+
 2022-11-17         Arnold D. Robbins     <arnold@skeeve.com>
 
        * 5.2.1: Release tar ball made.
diff --git a/build-aux/texinfo.tex b/build-aux/texinfo.tex
index cfc77a84..b1bf41ff 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{2022-11-12.22}
+\def\texinfoversion{2022-11-07.17}
 %
 % Copyright 1985, 1986, 1988, 1990-2022 Free Software Foundation, Inc.
 %
@@ -218,7 +218,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}}
 
@@ -432,7 +432,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}
@@ -1051,8 +1051,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
@@ -1146,7 +1146,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
@@ -1434,7 +1434,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}}%
@@ -1457,7 +1457,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
@@ -1682,7 +1682,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{%
@@ -2707,7 +2707,7 @@ end
 }
 
 % Commands to set the quote options.
-%
+% 
 \parseargdef\codequoteundirected{%
   \def\temp{#1}%
   \ifx\temp\onword
@@ -2748,7 +2748,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,14 +2936,14 @@ 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 -.
     % E.g., given --posix, we do not want to allow a break after either -.
     % Given --foo-bar, we do want to allow a break between the - and the b.
     \ifx\next\codedash \else
-      \ifx\codedashprev\codedash
+      \ifx\codedashprev\codedash 
       \else \discretionary{}{}{}\fi
     \fi
     % we need the space after the = for the case when \next itself is a
@@ -3033,7 +3033,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.
@@ -3046,7 +3046,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.
@@ -3104,10 +3104,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
@@ -3126,10 +3126,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
@@ -3344,7 +3344,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}
@@ -3352,7 +3352,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}
@@ -3368,7 +3368,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{%
@@ -3654,7 +3654,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}}
 %
@@ -3691,10 +3691,7 @@ $$%
 
 % @textdegree - the normal degrees sign.
 %
-\def\textdegree{%
-   \ifmmode ^\circ
-   \else {\tcfont \char 176}%
-   \fi}
+\def\textdegree{$^\circ$}
 
 % Laurent Siebenmann reports \Orb undefined with:
 %  Textures 1.7.7 (preloaded format=plain 93.10.14)  (68K)  16 APR 2004 02:38
@@ -3736,7 +3733,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{%
@@ -3791,7 +3788,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
@@ -4627,7 +4624,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.
@@ -4651,7 +4648,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.
 %
@@ -4684,7 +4681,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}}}
 %
@@ -4792,8 +4789,8 @@ $$%
 \def\docodeindex#1{\edef\indexname{#1}\parsearg\docodeindexxxx}
 \def\docodeindexxxx #1{\docind{\indexname}{#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.
 %
 \def\atdummies{%
@@ -5139,11 +5136,11 @@ $$%
   \let\value\indexnofontsvalue
 }
 
-% Give the control sequence a definition that removes the {} that follows
+% Give the control sequence a definition that removes the {} that follows 
 % its use, e.g. @AA{} -> AA
 \def\indexnofontsdef#1#2{\def#1##1{#2}}%
 
-
+
 
 
 % #1 is the index name, #2 is the entry text.
@@ -5184,7 +5181,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}%
@@ -5236,7 +5233,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}}%
@@ -5300,12 +5297,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
 
@@ -5328,7 +5325,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
   %
@@ -5509,18 +5506,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')%
 }%
       }{%
@@ -5593,7 +5590,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
@@ -5709,7 +5706,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
@@ -5917,7 +5914,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.
@@ -5945,7 +5942,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
@@ -6242,7 +6239,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
@@ -6265,7 +6262,7 @@ might help (with 'rm \jobname.?? \jobname.??s')%
 }
 
 % Subsections.
-%
+% 
 % normally calls numberedsubseczzz:
 \outer\parseargdef\numberedsubsec{\numhead2{#1}}
 \def\numberedsubseczzz#1{%
@@ -6290,7 +6287,7 @@ might help (with 'rm \jobname.?? \jobname.??s')%
 }
 
 % Subsubsections.
-%
+% 
 % normally numberedsubsubseczzz:
 \outer\parseargdef\numberedsubsubsec{\numhead3{#1}}
 \def\numberedsubsubseczzz#1{%
@@ -7352,7 +7349,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{%
@@ -7646,7 +7643,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
@@ -7814,7 +7811,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
@@ -7961,7 +7958,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.
 }
 
@@ -8156,7 +8153,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).
 %
@@ -8190,8 +8187,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 \defmacro.
 %
@@ -8225,7 +8222,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
@@ -8310,7 +8307,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
@@ -8334,9 +8331,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@
@@ -8374,7 +8371,7 @@ might help (with 'rm \jobname.?? \jobname.??s')%
 }
 
 % Trailing missing arguments are set to empty.
-%
+% 
 \def\setemptyargvalues@{%
   \ifx\paramlist\nilm@
     \let\next\macargexpandinbody@
@@ -8431,32 +8428,32 @@ might help (with 'rm \jobname.?? \jobname.??s')%
   \ifcase\paramno
   % 0
     \expandafter\xdef\csname\the\macname\endcsname{%
-      \begingroup
+      \bgroup
         \noexpand\spaceisspace
         \noexpand\endlineisspace
         \noexpand\expandafter % skip any whitespace after the macro name.
         \expandafter\noexpand\csname\the\macname @@@\endcsname}%
     \expandafter\xdef\csname\the\macname @@@\endcsname{%
-      \endgroup
+      \egroup
       \noexpand\scanmacro{\macrobody}}%
   \or % 1
     \expandafter\xdef\csname\the\macname\endcsname{%
-       \begingroup
+       \bgroup
        \noexpand\braceorline
        \expandafter\noexpand\csname\the\macname @@@\endcsname}%
     \expandafter\xdef\csname\the\macname @@@\endcsname##1{%
-      \endgroup
+      \egroup
       \noexpand\scanmacro{\macrobody}%
       }%
   \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.
       \expandafter\xdef\csname\the\macname\endcsname{%
-        \begingroup
+        \bgroup
         \noexpand\expandafter  % This \expandafter skip any spaces after the
         \noexpand\macroargctxt % macro before we change the catcode of space.
         \noexpand\expandafter
@@ -8470,7 +8467,7 @@ might help (with 'rm \jobname.?? \jobname.??s')%
       \expandafter\xdef
       \expandafter\expandafter
         \csname\the\macname @@@@\endcsname\paramlist{%
-          \endgroup\noexpand\scanmacro{\macrobody}}%
+          \egroup\noexpand\scanmacro{\macrobody}}%
     \else % 10 or more:
       \expandafter\xdef\csname\the\macname\endcsname{%
         \noexpand\getargvals@{\the\macname}{\argl}%
@@ -8495,11 +8492,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
 %
@@ -8521,11 +8518,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%
@@ -8549,9 +8546,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
@@ -8563,13 +8560,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}}
 
@@ -8581,7 +8578,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
@@ -8635,7 +8632,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
@@ -8712,7 +8709,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
@@ -8728,7 +8725,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
@@ -8881,24 +8878,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
@@ -8937,20 +8934,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}%
@@ -9027,9 +9024,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{%
@@ -9045,10 +9042,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
@@ -10066,7 +10063,7 @@ directory should work if nowhere else does.}
   \gdefchar^^ae{\v Z}
   \gdefchar^^af{\dotaccent Z}
   %
-  \gdefchar^^b0{\textdegree}
+  \gdefchar^^b0{\textdegree{}}
   \gdefchar^^b1{\ogonek{a}}
   \gdefchar^^b2{\ogonek{ }}
   \gdefchar^^b3{\l}
@@ -10246,7 +10243,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
@@ -10279,7 +10276,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.
       %
@@ -10291,7 +10288,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
@@ -10330,7 +10327,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
@@ -10365,7 +10362,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
@@ -10489,7 +10486,7 @@ directory should work if nowhere else does.}
   \DeclareUnicodeCharacter{00AE}{\registeredsymbol{}}%
   \DeclareUnicodeCharacter{00AF}{\={ }}%
   %
-  \DeclareUnicodeCharacter{00B0}{\textdegree}
+  \DeclareUnicodeCharacter{00B0}{\ringaccent{ }}%
   \DeclareUnicodeCharacter{00B1}{\ensuremath\pm}%
   \DeclareUnicodeCharacter{00B2}{$^2$}%
   \DeclareUnicodeCharacter{00B3}{$^3$}%
@@ -10993,7 +10990,7 @@ directory should work if nowhere else does.}
   %
   \DeclareUnicodeCharacter{20AC}{\euro{}}%
   %
-  \DeclareUnicodeCharacter{2192}{\arrow}%
+  \DeclareUnicodeCharacter{2192}{\expansion{}}%
   \DeclareUnicodeCharacter{21D2}{\result{}}%
   %
   % Mathematical symbols
@@ -11607,7 +11604,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 acaa51b4..f078f2cd 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -1,6 +1,9 @@
-2022-12-21         Arnold D. Robbins     <arnold@skeeve.com>
+2022-12-22         Arnold D. Robbins     <arnold@skeeve.com>
 
-       * gawktexi.in: Add LaTeX support.
+       * gawktexi.in: Add LaTeX support. Make the sidebar on the return
+       value of close() into a subsection. And a few minor unrelated fixes
+       and cleanups.
+       * texinfo.tex: Updated from texinfo 7.0.1 distribution.
 
 2022-12-21         Arnold D. Robbins     <arnold@skeeve.com>
 
diff --git a/doc/gawk.info b/doc/gawk.info
index 373511f2..04fbc9a5 100644
--- a/doc/gawk.info
+++ b/doc/gawk.info
@@ -258,6 +258,8 @@ in (a) below.  A copy of the license is included in the 
section entitled
 * Special Caveats::                     Things to watch out for.
 * Close Files And Pipes::               Closing Input and Output Files and
                                         Pipes.
+* Close Return Value::                  Using the return value from
+                                        ‘close()’.
 * Nonfatal::                            Enabling Nonfatal Output.
 * Output Summary::                      Output summary.
 * Output Exercises::                    Exercises.
@@ -7654,6 +7656,10 @@ File: gawk.info,  Node: Close Files And Pipes,  Next: 
Nonfatal,  Prev: Special F
 5.9 Closing Input and Output Redirections
 =========================================
 
+* Menu:
+
+* Close Return Value::          Using the return value from ‘close()’.
+
 If the same file name or the same shell command is used with ‘getline’
 more than once during the execution of an ‘awk’ program (*note
 Getline::), the file is opened (or the command is executed) the first
@@ -7778,11 +7784,21 @@ or ‘"from"’.  Case does not matter.  As this is an 
advanced feature,
 discussion is delayed until *note Two-way I/O::, which describes it in
 more detail and gives an example.
 
-                    Using ‘close()’’s Return Value
+   ---------- Footnotes ----------
+
+   (1) The technical terminology is rather morbid.  The finished child
+is called a “zombie,” and cleaning up after it is referred to as
+“reaping.”
+
+
+File: gawk.info,  Node: Close Return Value,  Up: Close Files And Pipes
 
-   In many older versions of Unix ‘awk’, the ‘close()’ function is
-actually a statement.  (d.c.)  It is a syntax error to try and use the
-return value from ‘close()’:
+5.9.1 Using ‘close()’’s Return Value
+------------------------------------
+
+In many older versions of Unix ‘awk’, the ‘close()’ function is 
actually
+a statement.  (d.c.)  It is a syntax error to try and use the return
+value from ‘close()’:
 
      command = "..."
      command | getline info
@@ -7797,10 +7813,11 @@ problem.
    In ‘gawk’, starting with version 4.2, when closing a pipe or
 coprocess (input or output), the return value is the exit status of the
 command, as described in *note Table 5.1:
-table-close-pipe-return-values.(2)  Otherwise, it is the return value
+table-close-pipe-return-values.(1)  Otherwise, it is the return value
 from the system’s ‘close()’ or ‘fclose()’ C functions when closing 
input
 or output files, respectively.  This value is zero if the close
-succeeds, or −1 if it fails.
+succeeds, or −1 if it fails.  Recent versions of BWK ‘awk’ also return
+the same values from ‘close()’.
 
 
 Situation                            Return value from ‘close()’
@@ -7821,11 +7838,7 @@ Options::), ‘gawk’ just returns zero when closing a 
pipe.
 
    ---------- Footnotes ----------
 
-   (1) The technical terminology is rather morbid.  The finished child
-is called a “zombie,” and cleaning up after it is referred to as
-“reaping.”
-
-   (2) Prior to version 4.2, the return value from closing a pipe or
+   (1) Prior to version 4.2, the return value from closing a pipe or
 co-process was the full 16-bit exit value as defined by the ‘wait()’
 system call.
 
@@ -19573,8 +19586,8 @@ File: gawk.info,  Node: Dupword Program,  Next: Alarm 
Program,  Up: Miscellaneou
 A common error when writing large amounts of prose is to accidentally
 duplicate words.  Typically you will see this in text as something like
 “the the program does the following...” When the text is online, often
-the duplicated words occur at the end of one line and the beginning of
-another, making them very difficult to spot.
+the duplicated words occur at the end of one line and at the beginning
+of another, making them very difficult to spot.
 
    This program, ‘dupword.awk’, scans through a file one line at a time
 and looks for adjacent occurrences of the same word.  It also saves the
@@ -31205,7 +31218,7 @@ Various ‘.c’, ‘.y’, and ‘.h’ files
      The generated Info file for ‘Persistent-Memory ‘gawk’ User 
Manual’.
 
 ‘doc/pm-gawk.1’
-     The ‘troff’ source for a manual page describing the the persistent
+     The ‘troff’ source for a manual page describing the persistent
      memory features presented in *note Persistent Memory::.
 
 ‘doc/igawk.1’
@@ -31788,12 +31801,12 @@ This node describes how to compile and install 
‘gawk’ under OpenVMS.
 
 * Menu:
 
-* OpenVMS Compilation::           How to compile ‘gawk’ under OpenVMS.
+* OpenVMS Compilation::          How to compile ‘gawk’ under OpenVMS.
 * OpenVMS Dynamic Extensions::   Compiling ‘gawk’ dynamic extensions
                                  on OpenVMS.
-* OpenVMS Installation Details::  How to install ‘gawk’ under OpenVMS.
-* OpenVMS Running::               How to run ‘gawk’ under OpenVMS.
-* OpenVMS GNV::                   The OpenVMS GNV Project.
+* OpenVMS Installation Details:: How to install ‘gawk’ under OpenVMS.
+* OpenVMS Running::              How to run ‘gawk’ under OpenVMS.
+* OpenVMS GNV::                  The OpenVMS GNV Project.
 
 
 File: gawk.info,  Node: OpenVMS Compilation,  Next: OpenVMS Dynamic 
Extensions,  Up: OpenVMS Installation
@@ -35908,7 +35921,7 @@ Index
 * | (vertical bar), | operator (I/O) <1>: Redirection.        (line  57)
 * | (vertical bar), |& operator (I/O) <1>: Redirection.       (line  96)
 * | (vertical bar), |& operator (I/O), pipes, closing: Close Files And Pipes.
-                                                              (line 120)
+                                                              (line 124)
 * | (vertical bar), || operator:         Boolean Ops.         (line  59)
 * | (vertical bar), | operator (I/O) <2>: Precedence.         (line  64)
 * | (vertical bar), |& operator (I/O) <2>: Precedence.        (line  64)
@@ -36457,13 +36470,12 @@ Index
 * cliff_rand() user-defined function:    Cliff Random Function.
                                                               (line  12)
 * close:                                 Close Files And Pipes.
-                                                              (line  18)
+                                                              (line  22)
 * close <1>:                             I/O Functions.       (line  10)
 * close file or coprocess:               I/O Functions.       (line  10)
 * close() function, portability:         Close Files And Pipes.
-                                                              (line  81)
-* close() function, return value:        Close Files And Pipes.
-                                                              (line 132)
+                                                              (line  85)
+* close() function, return value:        Close Return Value.  (line   6)
 * close() function, two-way pipes and:   Two-way I/O.         (line  60)
 * Close, Diane:                          Manual History.      (line  34)
 * Close, Diane <1>:                      Contributors.        (line  21)
@@ -36640,8 +36652,7 @@ Index
 * dark corner, format-control characters: Control Letters.    (line  33)
 * dark corner, format-control characters <1>: Control Letters.
                                                               (line 108)
-* dark corner, close() function:         Close Files And Pipes.
-                                                              (line 132)
+* dark corner, close() function:         Close Return Value.  (line   6)
 * dark corner, string continuation:      Scalar Constants.    (line  53)
 * dark corner, regexp constants:         Standard Regexp Constants.
                                                               (line   6)
@@ -36880,9 +36891,9 @@ Index
                                                               (line 129)
 * differences in awk and gawk, error messages: Special FD.    (line  19)
 * differences in awk and gawk, close() function: Close Files And Pipes.
-                                                              (line  81)
-* differences in awk and gawk, close() function <1>: Close Files And Pipes.
-                                                              (line 132)
+                                                              (line  85)
+* differences in awk and gawk, close() function <1>: Close Return Value.
+                                                              (line   6)
 * differences in awk and gawk, strings:  Scalar Constants.    (line  20)
 * differences in awk and gawk, strings <1>: Scalar Constants. (line  53)
 * differences in awk and gawk, regexp constants: Standard Regexp Constants.
@@ -37119,8 +37130,7 @@ Index
 * equals sign (=), == operator <1>:      Precedence.          (line  64)
 * EREs (Extended Regular Expressions):   Bracket Expressions. (line  34)
 * ERRNO variable, with getline command:  Getline.             (line  19)
-* ERRNO variable, with close() function: Close Files And Pipes.
-                                                              (line 140)
+* ERRNO variable, with close() function: Close Return Value.  (line  14)
 * ERRNO variable, with BEGINFILE pattern: BEGINFILE/ENDFILE.  (line  32)
 * ERRNO variable:                        Auto-set.            (line  87)
 * ERRNO variable <1>:                    TCP/IP Networking.   (line  54)
@@ -37498,8 +37508,7 @@ Index
 * gawk, format-control characters <1>:   Control Letters.     (line 108)
 * gawk, implementation issues, pipes:    Redirection.         (line 129)
 * gawk, file names in:                   Special Files.       (line   6)
-* gawk, ERRNO variable in <1>:           Close Files And Pipes.
-                                                              (line 140)
+* gawk, ERRNO variable in <1>:           Close Return Value.  (line  14)
 * gawk, octal numbers and:               Nondecimal-numbers.  (line  41)
 * gawk, hexadecimal numbers and:         Nondecimal-numbers.  (line  41)
 * gawk, regexp constants and:            Standard Regexp Constants.
@@ -38291,7 +38300,7 @@ Index
                                                               (line  77)
 * portability, NF variable, decrementing: Changing Fields.    (line 115)
 * portability, close() function and:     Close Files And Pipes.
-                                                              (line  81)
+                                                              (line  85)
 * portability, new awk vs. old awk:      Strings And Numbers. (line  56)
 * portability, ** operator and:          Arithmetic Ops.      (line  85)
 * portability, **= operator and:         Assignment Ops.      (line 145)
@@ -38365,8 +38374,7 @@ Index
                                                               (line  47)
 * POSIX mode <3>:                        Input Summary.       (line  69)
 * POSIX mode <4>:                        Special Caveats.     (line   9)
-* POSIX mode <5>:                        Close Files And Pipes.
-                                                              (line 165)
+* POSIX mode <5>:                        Close Return Value.  (line  40)
 * POSIX mode <6>:                        Scalar Constants.    (line  63)
 * POSIX mode <7>:                        Locale influences conversions.
                                                               (line  41)
@@ -38609,8 +38617,7 @@ Index
 * return debugger command:               Debugger Execution Control.
                                                               (line  54)
 * return statement, user-defined functions: Return Statement. (line   6)
-* return value, close() function:        Close Files And Pipes.
-                                                              (line 132)
+* return value, close() function:        Close Return Value.  (line   6)
 * rev() user-defined function:           Function Example.    (line  54)
 * revoutput extension:                   Extension Sample Revout.
                                                               (line  11)
@@ -38796,8 +38803,6 @@ Index
 * sidebar, FS and IGNORECASE:            Field Splitting Summary.
                                                               (line  37)
 * sidebar, Piping into sh:               Redirection.         (line 134)
-* sidebar, Using close()’s Return Value: Close Files And Pipes.
-                                                              (line 130)
 * sidebar, A Constant’s Base Does Not Affect Its Value: Nondecimal-numbers.
                                                               (line  63)
 * sidebar, Pre-POSIX awk Used OFMT for String Conversion: Strings And Numbers.
@@ -39106,8 +39111,7 @@ Index
                                                               (line 120)
 * Unix awk, password files, field separators and: Command Line Field Separator.
                                                               (line  62)
-* Unix awk, close() function and:        Close Files And Pipes.
-                                                              (line 132)
+* Unix awk, close() function and:        Close Return Value.  (line   6)
 * unsigned integers:                     Computer Arithmetic. (line  41)
 * until debugger command:                Debugger Execution Control.
                                                               (line  82)
@@ -39265,617 +39269,618 @@ Index
 
 Tag Table:
 Node: Top1229
-Node: Foreword346556
-Node: Foreword451156
-Node: Preface52705
-Ref: Preface-Footnote-155697
-Ref: Preface-Footnote-255806
-Ref: Preface-Footnote-356040
-Node: History56186
-Node: Names58650
-Ref: Names-Footnote-159813
-Node: This Manual59976
-Ref: This Manual-Footnote-166926
-Node: Conventions67038
-Node: Manual History69516
-Ref: Manual History-Footnote-172553
-Ref: Manual History-Footnote-272600
-Node: How To Contribute72678
-Node: Acknowledgments73628
-Node: Getting Started78626
-Node: Running gawk81153
-Node: One-shot82371
-Node: Read Terminal83674
-Node: Long85734
-Node: Executable Scripts87315
-Ref: Executable Scripts-Footnote-190090
-Node: Comments90197
-Node: Quoting92735
-Node: DOS Quoting98384
-Node: Sample Data Files100470
-Node: Very Simple103107
-Node: Two Rules109386
-Node: More Complex111340
-Node: Statements/Lines113780
-Ref: Statements/Lines-Footnote-1118660
-Node: Other Features118949
-Node: When119917
-Ref: When-Footnote-1121723
-Node: Intro Summary121788
-Node: Invoking Gawk122744
-Node: Command Line124314
-Node: Options125165
-Ref: Options-Footnote-1144314
-Ref: Options-Footnote-2144549
-Node: Other Arguments144574
-Node: Naming Standard Input148751
-Node: Environment Variables150021
-Node: AWKPATH Variable150595
-Ref: AWKPATH Variable-Footnote-1154185
-Ref: AWKPATH Variable-Footnote-2154219
-Node: AWKLIBPATH Variable154612
-Ref: AWKLIBPATH Variable-Footnote-1156387
-Node: Other Environment Variables156784
-Node: Exit Status161280
-Node: Include Files161995
-Node: Loading Shared Libraries165866
-Node: Obsolete167358
-Node: Undocumented167994
-Node: Invoking Summary168293
-Node: Regexp171320
-Node: Regexp Usage172814
-Node: Escape Sequences174915
-Node: Regexp Operators181446
-Node: Regexp Operator Details181939
-Ref: Regexp Operator Details-Footnote-1189805
-Node: Interval Expressions189964
-Ref: Interval Expressions-Footnote-1192233
-Node: Bracket Expressions192333
-Ref: table-char-classes194893
-Node: Leftmost Longest198415
-Node: Computed Regexps199775
-Node: GNU Regexp Operators203298
-Node: Case-sensitivity207321
-Ref: Case-sensitivity-Footnote-1210278
-Ref: Case-sensitivity-Footnote-2210523
-Node: Regexp Summary210639
-Node: Reading Files212163
-Node: Records214480
-Node: awk split records215591
-Node: gawk split records220481
-Ref: gawk split records-Footnote-1225775
-Node: Fields225812
-Node: Nonconstant Fields228699
-Ref: Nonconstant Fields-Footnote-1231010
-Node: Changing Fields231226
-Node: Field Separators237534
-Node: Default Field Splitting240350
-Node: Regexp Field Splitting241493
-Node: Single Character Fields245322
-Node: Command Line Field Separator246417
-Node: Full Line Fields249804
-Ref: Full Line Fields-Footnote-1251384
-Ref: Full Line Fields-Footnote-2251430
-Node: Field Splitting Summary251538
-Node: Constant Size253707
-Node: Fixed width data254451
-Node: Skipping intervening257970
-Node: Allowing trailing data258772
-Node: Fields with fixed data259837
-Node: Splitting By Content261463
-Ref: Splitting By Content-Footnote-1265402
-Node: More CSV265565
-Node: FS versus FPAT267218
-Node: Testing field creation268427
-Node: Multiple Line270120
-Node: Getline276602
-Node: Plain Getline279188
-Node: Getline/Variable281838
-Node: Getline/File283035
-Node: Getline/Variable/File284483
-Ref: Getline/Variable/File-Footnote-1286128
-Node: Getline/Pipe286224
-Node: Getline/Variable/Pipe289037
-Node: Getline/Coprocess290220
-Node: Getline/Variable/Coprocess291543
-Node: Getline Notes292309
-Node: Getline Summary295270
-Ref: table-getline-variants295714
-Node: Read Timeout296619
-Ref: Read Timeout-Footnote-1300583
-Node: Retrying Input300641
-Node: Command-line directories301908
-Node: Input Summary302846
-Node: Input Exercises306226
-Node: Printing306666
-Node: Print308552
-Node: Print Examples310058
-Node: Output Separators312911
-Node: OFMT315022
-Node: Printf316445
-Node: Basic Printf317250
-Node: Control Letters318886
-Node: Format Modifiers324355
-Node: Printf Examples330641
-Node: Redirection333186
-Node: Special FD340260
-Ref: Special FD-Footnote-1343550
-Node: Special Files343636
-Node: Other Inherited Files344265
-Node: Special Network345330
-Node: Special Caveats346218
-Node: Close Files And Pipes347201
-Ref: table-close-pipe-return-values354316
-Ref: Close Files And Pipes-Footnote-1355150
-Ref: Close Files And Pipes-Footnote-2355306
-Node: Nonfatal355462
-Node: Output Summary357893
-Node: Output Exercises359179
-Node: Expressions359870
-Node: Values361072
-Node: Constants361750
-Node: Scalar Constants362447
-Ref: Scalar Constants-Footnote-1365022
-Node: Nondecimal-numbers365272
-Node: Regexp Constants368393
-Node: Using Constant Regexps368939
-Node: Standard Regexp Constants369585
-Node: Strong Regexp Constants372885
-Node: Variables376736
-Node: Using Variables377401
-Node: Assignment Options379381
-Node: Conversion381943
-Node: Strings And Numbers382475
-Ref: Strings And Numbers-Footnote-1385694
-Node: Locale influences conversions385803
-Ref: table-locale-affects388653
-Node: All Operators389296
-Node: Arithmetic Ops389937
-Node: Concatenation392767
-Ref: Concatenation-Footnote-1395717
-Node: Assignment Ops395840
-Ref: table-assign-ops400979
-Node: Increment Ops402361
-Node: Truth Values and Conditions405960
-Node: Truth Values407086
-Node: Typing and Comparison408177
-Node: Variable Typing409013
-Ref: Variable Typing-Footnote-1415675
-Ref: Variable Typing-Footnote-2415755
-Node: Comparison Operators415838
-Ref: table-relational-ops416265
-Node: POSIX String Comparison419951
-Ref: POSIX String Comparison-Footnote-1421710
-Ref: POSIX String Comparison-Footnote-2421853
-Node: Boolean Ops421937
-Ref: Boolean Ops-Footnote-1426630
-Node: Conditional Exp426726
-Node: Function Calls428512
-Node: Precedence432462
-Node: Locales436339
-Node: Expressions Summary438021
-Node: Patterns and Actions440684
-Node: Pattern Overview441826
-Node: Regexp Patterns443552
-Node: Expression Patterns444098
-Node: Ranges448007
-Node: BEGIN/END451185
-Node: Using BEGIN/END451998
-Ref: Using BEGIN/END-Footnote-1454908
-Node: I/O And BEGIN/END455018
-Node: BEGINFILE/ENDFILE457499
-Node: Empty460940
-Node: Using Shell Variables461257
-Node: Action Overview463595
-Node: Statements466030
-Node: If Statement467928
-Node: While Statement469497
-Node: Do Statement471585
-Node: For Statement472771
-Node: Switch Statement476128
-Node: Break Statement478679
-Node: Continue Statement480871
-Node: Next Statement482803
-Node: Nextfile Statement485300
-Node: Exit Statement488161
-Node: Built-in Variables490694
-Node: User-modified491873
-Node: Auto-set500084
-Ref: Auto-set-Footnote-1517937
-Ref: Auto-set-Footnote-2518155
-Node: ARGC and ARGV518211
-Node: Pattern Action Summary522650
-Node: Arrays525266
-Node: Array Basics526643
-Node: Array Intro527493
-Ref: figure-array-elements529509
-Ref: Array Intro-Footnote-1532373
-Node: Reference to Elements532505
-Node: Assigning Elements535027
-Node: Array Example535522
-Node: Scanning an Array537491
-Node: Controlling Scanning540588
-Ref: Controlling Scanning-Footnote-1547251
-Node: Numeric Array Subscripts547575
-Node: Uninitialized Subscripts549849
-Node: Delete551528
-Ref: Delete-Footnote-1554342
-Node: Multidimensional554399
-Node: Multiscanning557604
-Node: Arrays of Arrays559276
-Node: Arrays Summary564176
-Node: Functions566365
-Node: Built-in567425
-Node: Calling Built-in568614
-Node: Boolean Functions570661
-Node: Numeric Functions571231
-Ref: Numeric Functions-Footnote-1575424
-Ref: Numeric Functions-Footnote-2576108
-Ref: Numeric Functions-Footnote-3576160
-Node: String Functions576436
-Ref: String Functions-Footnote-1602266
-Ref: String Functions-Footnote-2602400
-Ref: String Functions-Footnote-3602660
-Node: Gory Details602747
-Ref: table-sub-escapes604654
-Ref: table-sub-proposed606300
-Ref: table-posix-sub607810
-Ref: table-gensub-escapes609498
-Ref: Gory Details-Footnote-1610432
-Node: I/O Functions610586
-Ref: table-system-return-values617273
-Ref: I/O Functions-Footnote-1619444
-Ref: I/O Functions-Footnote-2619592
-Node: Time Functions619712
-Ref: Time Functions-Footnote-1630868
-Ref: Time Functions-Footnote-2630944
-Ref: Time Functions-Footnote-3631106
-Ref: Time Functions-Footnote-4631217
-Ref: Time Functions-Footnote-5631335
-Ref: Time Functions-Footnote-6631570
-Node: Bitwise Functions631852
-Ref: table-bitwise-ops632454
-Ref: Bitwise Functions-Footnote-1638708
-Ref: Bitwise Functions-Footnote-2638887
-Node: Type Functions639084
-Node: I18N Functions642677
-Node: User-defined644420
-Node: Definition Syntax645240
-Ref: Definition Syntax-Footnote-1651068
-Node: Function Example651145
-Ref: Function Example-Footnote-1654124
-Node: Function Calling654146
-Node: Calling A Function654740
-Node: Variable Scope655710
-Node: Pass By Value/Reference658764
-Node: Function Caveats661496
-Ref: Function Caveats-Footnote-1663591
-Node: Return Statement663715
-Node: Dynamic Typing666770
-Node: Indirect Calls667726
-Node: Functions Summary678885
-Node: Library Functions681662
-Ref: Library Functions-Footnote-1685210
-Ref: Library Functions-Footnote-2685353
-Node: Library Names685528
-Ref: Library Names-Footnote-1689322
-Ref: Library Names-Footnote-2689549
-Node: General Functions689645
-Node: Strtonum Function690839
-Node: Assert Function693921
-Node: Round Function697373
-Node: Cliff Random Function698951
-Node: Ordinal Functions699984
-Ref: Ordinal Functions-Footnote-1703093
-Ref: Ordinal Functions-Footnote-2703345
-Node: Join Function703559
-Ref: Join Function-Footnote-1705362
-Node: Getlocaltime Function705566
-Node: Readfile Function709340
-Node: Shell Quoting711369
-Node: Isnumeric Function712825
-Node: Data File Management714237
-Node: Filetrans Function714869
-Node: Rewind Function719163
-Node: File Checking721142
-Ref: File Checking-Footnote-1722514
-Node: Empty Files722721
-Node: Ignoring Assigns724788
-Node: Getopt Function726362
-Ref: Getopt Function-Footnote-1742204
-Node: Passwd Functions742416
-Ref: Passwd Functions-Footnote-1751598
-Node: Group Functions751686
-Ref: Group Functions-Footnote-1759824
-Node: Walking Arrays760037
-Node: Library Functions Summary763085
-Node: Library Exercises764509
-Node: Sample Programs764996
-Node: Running Examples765778
-Node: Clones766530
-Node: Cut Program767802
-Node: Egrep Program778243
-Node: Id Program787560
-Node: Split Program797674
-Ref: Split Program-Footnote-1807909
-Node: Tee Program808096
-Node: Uniq Program811005
-Node: Wc Program818870
-Node: Bytes vs. Characters819265
-Node: Using extensions820867
-Node: wc program821647
-Node: Miscellaneous Programs826653
-Node: Dupword Program827882
-Node: Alarm Program829942
-Node: Translate Program834855
-Ref: Translate Program-Footnote-1839596
-Node: Labels Program839874
-Ref: Labels Program-Footnote-1843315
-Node: Word Sorting843407
-Node: History Sorting847601
-Node: Extract Program849876
-Node: Simple Sed858145
-Node: Igawk Program861361
-Ref: Igawk Program-Footnote-1876608
-Ref: Igawk Program-Footnote-2876814
-Ref: Igawk Program-Footnote-3876944
-Node: Anagram Program877071
-Node: Signature Program880167
-Node: Programs Summary881419
-Node: Programs Exercises882677
-Ref: Programs Exercises-Footnote-1886993
-Node: Advanced Features887079
-Node: Nondecimal Data889573
-Node: Boolean Typed Values891203
-Node: Array Sorting893178
-Node: Controlling Array Traversal893907
-Ref: Controlling Array Traversal-Footnote-1902414
-Node: Array Sorting Functions902536
-Ref: Array Sorting Functions-Footnote-1908655
-Node: Two-way I/O908863
-Ref: Two-way I/O-Footnote-1916858
-Ref: Two-way I/O-Footnote-2917049
-Node: TCP/IP Networking917131
-Node: Profiling920311
-Node: Persistent Memory930021
-Ref: Persistent Memory-Footnote-1938535
-Node: Extension Philosophy938666
-Node: Advanced Features Summary940201
-Node: Internationalization942471
-Node: I18N and L10N944177
-Node: Explaining gettext944872
-Ref: Explaining gettext-Footnote-1951025
-Ref: Explaining gettext-Footnote-2951220
-Node: Programmer i18n951385
-Ref: Programmer i18n-Footnote-1956498
-Node: Translator i18n956547
-Node: String Extraction957383
-Ref: String Extraction-Footnote-1958561
-Node: Printf Ordering958659
-Ref: Printf Ordering-Footnote-1961521
-Node: I18N Portability961589
-Ref: I18N Portability-Footnote-1964163
-Node: I18N Example964234
-Ref: I18N Example-Footnote-1967634
-Ref: I18N Example-Footnote-2967710
-Node: Gawk I18N967827
-Node: I18N Summary968483
-Node: Debugger969884
-Node: Debugging970908
-Node: Debugging Concepts971357
-Node: Debugging Terms973183
-Node: Awk Debugging975796
-Ref: Awk Debugging-Footnote-1976773
-Node: Sample Debugging Session976913
-Node: Debugger Invocation977465
-Node: Finding The Bug979094
-Node: List of Debugger Commands985780
-Node: Breakpoint Control987157
-Node: Debugger Execution Control990989
-Node: Viewing And Changing Data994469
-Node: Execution Stack998207
-Node: Debugger Info999888
-Node: Miscellaneous Debugger Commands1004187
-Node: Readline Support1009440
-Node: Limitations1010386
-Node: Debugging Summary1013030
-Node: Namespaces1014333
-Node: Global Namespace1015460
-Node: Qualified Names1016905
-Node: Default Namespace1017940
-Node: Changing The Namespace1018715
-Node: Naming Rules1020409
-Node: Internal Name Management1022324
-Node: Namespace Example1023394
-Node: Namespace And Features1025977
-Node: Namespace Summary1027434
-Node: Arbitrary Precision Arithmetic1028947
-Node: Computer Arithmetic1030466
-Ref: table-numeric-ranges1034283
-Ref: table-floating-point-ranges1034781
-Ref: Computer Arithmetic-Footnote-11035440
-Node: Math Definitions1035499
-Ref: table-ieee-formats1038544
-Node: MPFR features1039118
-Node: MPFR On Parole1039571
-Ref: MPFR On Parole-Footnote-11040415
-Node: MPFR Intro1040574
-Node: FP Math Caution1042264
-Ref: FP Math Caution-Footnote-11043338
-Node: Inexactness of computations1043715
-Node: Inexact representation1044746
-Node: Comparing FP Values1046129
-Node: Errors accumulate1047387
-Node: Strange values1048854
-Ref: Strange values-Footnote-11051520
-Node: Getting Accuracy1051625
-Node: Try To Round1054362
-Node: Setting precision1055269
-Ref: table-predefined-precision-strings1055974
-Node: Setting the rounding mode1057859
-Ref: table-gawk-rounding-modes1058241
-Ref: Setting the rounding mode-Footnote-11062299
-Node: Arbitrary Precision Integers1062482
-Ref: Arbitrary Precision Integers-Footnote-11065694
-Node: Checking for MPFR1065850
-Node: POSIX Floating Point Problems1067340
-Ref: POSIX Floating Point Problems-Footnote-11072204
-Node: Floating point summary1072242
-Node: Dynamic Extensions1074506
-Node: Extension Intro1076105
-Node: Plugin License1077413
-Node: Extension Mechanism Outline1078226
-Ref: figure-load-extension1078677
-Ref: figure-register-new-function1080257
-Ref: figure-call-new-function1081362
-Node: Extension API Description1083481
-Node: Extension API Functions Introduction1085210
-Ref: table-api-std-headers1087108
-Node: General Data Types1091572
-Ref: General Data Types-Footnote-11100740
-Node: Memory Allocation Functions1101055
-Ref: Memory Allocation Functions-Footnote-11105780
-Node: Constructor Functions1105879
-Node: API Ownership of MPFR and GMP Values1109784
-Node: Registration Functions1111345
-Node: Extension Functions1112049
-Node: Exit Callback Functions1117625
-Node: Extension Version String1118944
-Node: Input Parsers1119639
-Node: Output Wrappers1133013
-Node: Two-way processors1137721
-Node: Printing Messages1140082
-Ref: Printing Messages-Footnote-11141296
-Node: Updating ERRNO1141451
-Node: Requesting Values1142250
-Ref: table-value-types-returned1143003
-Node: Accessing Parameters1144112
-Node: Symbol Table Access1145396
-Node: Symbol table by name1145912
-Ref: Symbol table by name-Footnote-11149123
-Node: Symbol table by cookie1149255
-Ref: Symbol table by cookie-Footnote-11153536
-Node: Cached values1153600
-Ref: Cached values-Footnote-11157244
-Node: Array Manipulation1157401
-Ref: Array Manipulation-Footnote-11158504
-Node: Array Data Types1158541
-Ref: Array Data Types-Footnote-11161363
-Node: Array Functions1161463
-Node: Flattening Arrays1166492
-Node: Creating Arrays1173544
-Node: Redirection API1178394
-Node: Extension API Variables1181415
-Node: Extension Versioning1182140
-Ref: gawk-api-version1182577
-Node: Extension GMP/MPFR Versioning1184365
-Node: Extension API Informational Variables1186071
-Node: Extension API Boilerplate1187232
-Node: Changes from API V11191368
-Node: Finding Extensions1193002
-Node: Extension Example1193577
-Node: Internal File Description1194401
-Node: Internal File Ops1198725
-Ref: Internal File Ops-Footnote-11210283
-Node: Using Internal File Ops1210431
-Ref: Using Internal File Ops-Footnote-11212862
-Node: Extension Samples1213140
-Node: Extension Sample File Functions1214709
-Node: Extension Sample Fnmatch1222847
-Node: Extension Sample Fork1224442
-Node: Extension Sample Inplace1225718
-Node: Extension Sample Ord1229390
-Node: Extension Sample Readdir1230266
-Ref: table-readdir-file-types1231163
-Node: Extension Sample Revout1232301
-Node: Extension Sample Rev2way1232898
-Node: Extension Sample Read write array1233650
-Node: Extension Sample Readfile1236924
-Node: Extension Sample Time1238055
-Node: Extension Sample API Tests1239871
-Node: gawkextlib1240379
-Node: Extension summary1243415
-Node: Extension Exercises1247273
-Node: Language History1248551
-Node: V7/SVR3.11250265
-Node: SVR41252615
-Node: POSIX1254147
-Node: BTL1255572
-Node: POSIX/GNU1256341
-Node: Feature History1262872
-Node: Common Extensions1281937
-Node: Ranges and Locales1283306
-Ref: Ranges and Locales-Footnote-11288107
-Ref: Ranges and Locales-Footnote-21288134
-Ref: Ranges and Locales-Footnote-31288373
-Node: Contributors1288596
-Node: History summary1294801
-Node: Installation1296247
-Node: Gawk Distribution1297211
-Node: Getting1297703
-Node: Extracting1298702
-Node: Distribution contents1300414
-Node: Unix Installation1308498
-Node: Quick Installation1309320
-Node: Compiling with MPFR1311866
-Node: Shell Startup Files1312572
-Node: Additional Configuration Options1313729
-Node: Configuration Philosophy1316116
-Node: Compiling from Git1318618
-Node: Building the Documentation1319177
-Node: Non-Unix Installation1320589
-Node: PC Installation1321065
-Node: PC Binary Installation1321938
-Node: PC Compiling1322843
-Node: PC Using1324021
-Node: Cygwin1327749
-Node: MSYS1329005
-Node: OpenVMS Installation1329637
-Node: OpenVMS Compilation1330322
-Ref: OpenVMS Compilation-Footnote-11331805
-Node: OpenVMS Dynamic Extensions1331867
-Node: OpenVMS Installation Details1333503
-Node: OpenVMS Running1335938
-Node: OpenVMS GNV1340075
-Node: Bugs1340830
-Node: Bug definition1341754
-Node: Bug address1345405
-Node: Usenet1348996
-Node: Performance bugs1350227
-Node: Asking for help1353245
-Node: Maintainers1355236
-Node: Other Versions1356263
-Node: Installation summary1365195
-Node: Notes1366579
-Node: Compatibility Mode1367389
-Node: Additions1368211
-Node: Accessing The Source1369156
-Node: Adding Code1370691
-Node: New Ports1377827
-Node: Derived Files1382337
-Ref: Derived Files-Footnote-11388184
-Ref: Derived Files-Footnote-21388219
-Ref: Derived Files-Footnote-31388836
-Node: Future Extensions1388950
-Node: Implementation Limitations1389622
-Node: Extension Design1390864
-Node: Old Extension Problems1392028
-Ref: Old Extension Problems-Footnote-11393604
-Node: Extension New Mechanism Goals1393665
-Ref: Extension New Mechanism Goals-Footnote-11397161
-Node: Extension Other Design Decisions1397362
-Node: Extension Future Growth1399561
-Node: Notes summary1400185
-Node: Basic Concepts1401398
-Node: Basic High Level1402083
-Ref: figure-general-flow1402365
-Ref: figure-process-flow1403067
-Ref: Basic High Level-Footnote-11406463
-Node: Basic Data Typing1406652
-Node: Glossary1410070
-Node: Copying1443192
-Node: GNU Free Documentation License1480953
-Node: Index1506276
+Node: Foreword346679
+Node: Foreword451279
+Node: Preface52828
+Ref: Preface-Footnote-155820
+Ref: Preface-Footnote-255929
+Ref: Preface-Footnote-356163
+Node: History56309
+Node: Names58773
+Ref: Names-Footnote-159936
+Node: This Manual60099
+Ref: This Manual-Footnote-167049
+Node: Conventions67161
+Node: Manual History69639
+Ref: Manual History-Footnote-172676
+Ref: Manual History-Footnote-272723
+Node: How To Contribute72801
+Node: Acknowledgments73751
+Node: Getting Started78749
+Node: Running gawk81276
+Node: One-shot82494
+Node: Read Terminal83797
+Node: Long85857
+Node: Executable Scripts87438
+Ref: Executable Scripts-Footnote-190213
+Node: Comments90320
+Node: Quoting92858
+Node: DOS Quoting98507
+Node: Sample Data Files100593
+Node: Very Simple103230
+Node: Two Rules109509
+Node: More Complex111463
+Node: Statements/Lines113903
+Ref: Statements/Lines-Footnote-1118783
+Node: Other Features119072
+Node: When120040
+Ref: When-Footnote-1121846
+Node: Intro Summary121911
+Node: Invoking Gawk122867
+Node: Command Line124437
+Node: Options125288
+Ref: Options-Footnote-1144437
+Ref: Options-Footnote-2144672
+Node: Other Arguments144697
+Node: Naming Standard Input148874
+Node: Environment Variables150144
+Node: AWKPATH Variable150718
+Ref: AWKPATH Variable-Footnote-1154308
+Ref: AWKPATH Variable-Footnote-2154342
+Node: AWKLIBPATH Variable154735
+Ref: AWKLIBPATH Variable-Footnote-1156510
+Node: Other Environment Variables156907
+Node: Exit Status161403
+Node: Include Files162118
+Node: Loading Shared Libraries165989
+Node: Obsolete167481
+Node: Undocumented168117
+Node: Invoking Summary168416
+Node: Regexp171443
+Node: Regexp Usage172937
+Node: Escape Sequences175038
+Node: Regexp Operators181569
+Node: Regexp Operator Details182062
+Ref: Regexp Operator Details-Footnote-1189928
+Node: Interval Expressions190087
+Ref: Interval Expressions-Footnote-1192356
+Node: Bracket Expressions192456
+Ref: table-char-classes195016
+Node: Leftmost Longest198538
+Node: Computed Regexps199898
+Node: GNU Regexp Operators203421
+Node: Case-sensitivity207444
+Ref: Case-sensitivity-Footnote-1210401
+Ref: Case-sensitivity-Footnote-2210646
+Node: Regexp Summary210762
+Node: Reading Files212286
+Node: Records214603
+Node: awk split records215714
+Node: gawk split records220604
+Ref: gawk split records-Footnote-1225898
+Node: Fields225935
+Node: Nonconstant Fields228822
+Ref: Nonconstant Fields-Footnote-1231133
+Node: Changing Fields231349
+Node: Field Separators237657
+Node: Default Field Splitting240473
+Node: Regexp Field Splitting241616
+Node: Single Character Fields245445
+Node: Command Line Field Separator246540
+Node: Full Line Fields249927
+Ref: Full Line Fields-Footnote-1251507
+Ref: Full Line Fields-Footnote-2251553
+Node: Field Splitting Summary251661
+Node: Constant Size253830
+Node: Fixed width data254574
+Node: Skipping intervening258093
+Node: Allowing trailing data258895
+Node: Fields with fixed data259960
+Node: Splitting By Content261586
+Ref: Splitting By Content-Footnote-1265525
+Node: More CSV265688
+Node: FS versus FPAT267341
+Node: Testing field creation268550
+Node: Multiple Line270243
+Node: Getline276725
+Node: Plain Getline279311
+Node: Getline/Variable281961
+Node: Getline/File283158
+Node: Getline/Variable/File284606
+Ref: Getline/Variable/File-Footnote-1286251
+Node: Getline/Pipe286347
+Node: Getline/Variable/Pipe289160
+Node: Getline/Coprocess290343
+Node: Getline/Variable/Coprocess291666
+Node: Getline Notes292432
+Node: Getline Summary295393
+Ref: table-getline-variants295837
+Node: Read Timeout296742
+Ref: Read Timeout-Footnote-1300706
+Node: Retrying Input300764
+Node: Command-line directories302031
+Node: Input Summary302969
+Node: Input Exercises306349
+Node: Printing306789
+Node: Print308675
+Node: Print Examples310181
+Node: Output Separators313034
+Node: OFMT315145
+Node: Printf316568
+Node: Basic Printf317373
+Node: Control Letters319009
+Node: Format Modifiers324478
+Node: Printf Examples330764
+Node: Redirection333309
+Node: Special FD340383
+Ref: Special FD-Footnote-1343673
+Node: Special Files343759
+Node: Other Inherited Files344388
+Node: Special Network345453
+Node: Special Caveats346341
+Node: Close Files And Pipes347324
+Ref: Close Files And Pipes-Footnote-1353461
+Node: Close Return Value353617
+Ref: table-close-pipe-return-values354892
+Ref: Close Return Value-Footnote-1355726
+Node: Nonfatal355882
+Node: Output Summary358313
+Node: Output Exercises359599
+Node: Expressions360290
+Node: Values361492
+Node: Constants362170
+Node: Scalar Constants362867
+Ref: Scalar Constants-Footnote-1365442
+Node: Nondecimal-numbers365692
+Node: Regexp Constants368813
+Node: Using Constant Regexps369359
+Node: Standard Regexp Constants370005
+Node: Strong Regexp Constants373305
+Node: Variables377156
+Node: Using Variables377821
+Node: Assignment Options379801
+Node: Conversion382363
+Node: Strings And Numbers382895
+Ref: Strings And Numbers-Footnote-1386114
+Node: Locale influences conversions386223
+Ref: table-locale-affects389073
+Node: All Operators389716
+Node: Arithmetic Ops390357
+Node: Concatenation393187
+Ref: Concatenation-Footnote-1396137
+Node: Assignment Ops396260
+Ref: table-assign-ops401399
+Node: Increment Ops402781
+Node: Truth Values and Conditions406380
+Node: Truth Values407506
+Node: Typing and Comparison408597
+Node: Variable Typing409433
+Ref: Variable Typing-Footnote-1416095
+Ref: Variable Typing-Footnote-2416175
+Node: Comparison Operators416258
+Ref: table-relational-ops416685
+Node: POSIX String Comparison420371
+Ref: POSIX String Comparison-Footnote-1422130
+Ref: POSIX String Comparison-Footnote-2422273
+Node: Boolean Ops422357
+Ref: Boolean Ops-Footnote-1427050
+Node: Conditional Exp427146
+Node: Function Calls428932
+Node: Precedence432882
+Node: Locales436759
+Node: Expressions Summary438441
+Node: Patterns and Actions441104
+Node: Pattern Overview442246
+Node: Regexp Patterns443972
+Node: Expression Patterns444518
+Node: Ranges448427
+Node: BEGIN/END451605
+Node: Using BEGIN/END452418
+Ref: Using BEGIN/END-Footnote-1455328
+Node: I/O And BEGIN/END455438
+Node: BEGINFILE/ENDFILE457919
+Node: Empty461360
+Node: Using Shell Variables461677
+Node: Action Overview464015
+Node: Statements466450
+Node: If Statement468348
+Node: While Statement469917
+Node: Do Statement472005
+Node: For Statement473191
+Node: Switch Statement476548
+Node: Break Statement479099
+Node: Continue Statement481291
+Node: Next Statement483223
+Node: Nextfile Statement485720
+Node: Exit Statement488581
+Node: Built-in Variables491114
+Node: User-modified492293
+Node: Auto-set500504
+Ref: Auto-set-Footnote-1518357
+Ref: Auto-set-Footnote-2518575
+Node: ARGC and ARGV518631
+Node: Pattern Action Summary523070
+Node: Arrays525686
+Node: Array Basics527063
+Node: Array Intro527913
+Ref: figure-array-elements529929
+Ref: Array Intro-Footnote-1532793
+Node: Reference to Elements532925
+Node: Assigning Elements535447
+Node: Array Example535942
+Node: Scanning an Array537911
+Node: Controlling Scanning541008
+Ref: Controlling Scanning-Footnote-1547671
+Node: Numeric Array Subscripts547995
+Node: Uninitialized Subscripts550269
+Node: Delete551948
+Ref: Delete-Footnote-1554762
+Node: Multidimensional554819
+Node: Multiscanning558024
+Node: Arrays of Arrays559696
+Node: Arrays Summary564596
+Node: Functions566785
+Node: Built-in567845
+Node: Calling Built-in569034
+Node: Boolean Functions571081
+Node: Numeric Functions571651
+Ref: Numeric Functions-Footnote-1575844
+Ref: Numeric Functions-Footnote-2576528
+Ref: Numeric Functions-Footnote-3576580
+Node: String Functions576856
+Ref: String Functions-Footnote-1602686
+Ref: String Functions-Footnote-2602820
+Ref: String Functions-Footnote-3603080
+Node: Gory Details603167
+Ref: table-sub-escapes605074
+Ref: table-sub-proposed606720
+Ref: table-posix-sub608230
+Ref: table-gensub-escapes609918
+Ref: Gory Details-Footnote-1610852
+Node: I/O Functions611006
+Ref: table-system-return-values617693
+Ref: I/O Functions-Footnote-1619864
+Ref: I/O Functions-Footnote-2620012
+Node: Time Functions620132
+Ref: Time Functions-Footnote-1631288
+Ref: Time Functions-Footnote-2631364
+Ref: Time Functions-Footnote-3631526
+Ref: Time Functions-Footnote-4631637
+Ref: Time Functions-Footnote-5631755
+Ref: Time Functions-Footnote-6631990
+Node: Bitwise Functions632272
+Ref: table-bitwise-ops632874
+Ref: Bitwise Functions-Footnote-1639128
+Ref: Bitwise Functions-Footnote-2639307
+Node: Type Functions639504
+Node: I18N Functions643097
+Node: User-defined644840
+Node: Definition Syntax645660
+Ref: Definition Syntax-Footnote-1651488
+Node: Function Example651565
+Ref: Function Example-Footnote-1654544
+Node: Function Calling654566
+Node: Calling A Function655160
+Node: Variable Scope656130
+Node: Pass By Value/Reference659184
+Node: Function Caveats661916
+Ref: Function Caveats-Footnote-1664011
+Node: Return Statement664135
+Node: Dynamic Typing667190
+Node: Indirect Calls668146
+Node: Functions Summary679305
+Node: Library Functions682082
+Ref: Library Functions-Footnote-1685630
+Ref: Library Functions-Footnote-2685773
+Node: Library Names685948
+Ref: Library Names-Footnote-1689742
+Ref: Library Names-Footnote-2689969
+Node: General Functions690065
+Node: Strtonum Function691259
+Node: Assert Function694341
+Node: Round Function697793
+Node: Cliff Random Function699371
+Node: Ordinal Functions700404
+Ref: Ordinal Functions-Footnote-1703513
+Ref: Ordinal Functions-Footnote-2703765
+Node: Join Function703979
+Ref: Join Function-Footnote-1705782
+Node: Getlocaltime Function705986
+Node: Readfile Function709760
+Node: Shell Quoting711789
+Node: Isnumeric Function713245
+Node: Data File Management714657
+Node: Filetrans Function715289
+Node: Rewind Function719583
+Node: File Checking721562
+Ref: File Checking-Footnote-1722934
+Node: Empty Files723141
+Node: Ignoring Assigns725208
+Node: Getopt Function726782
+Ref: Getopt Function-Footnote-1742624
+Node: Passwd Functions742836
+Ref: Passwd Functions-Footnote-1752018
+Node: Group Functions752106
+Ref: Group Functions-Footnote-1760244
+Node: Walking Arrays760457
+Node: Library Functions Summary763505
+Node: Library Exercises764929
+Node: Sample Programs765416
+Node: Running Examples766198
+Node: Clones766950
+Node: Cut Program768222
+Node: Egrep Program778663
+Node: Id Program787980
+Node: Split Program798094
+Ref: Split Program-Footnote-1808329
+Node: Tee Program808516
+Node: Uniq Program811425
+Node: Wc Program819290
+Node: Bytes vs. Characters819685
+Node: Using extensions821287
+Node: wc program822067
+Node: Miscellaneous Programs827073
+Node: Dupword Program828302
+Node: Alarm Program830365
+Node: Translate Program835278
+Ref: Translate Program-Footnote-1840019
+Node: Labels Program840297
+Ref: Labels Program-Footnote-1843738
+Node: Word Sorting843830
+Node: History Sorting848024
+Node: Extract Program850299
+Node: Simple Sed858568
+Node: Igawk Program861784
+Ref: Igawk Program-Footnote-1877031
+Ref: Igawk Program-Footnote-2877237
+Ref: Igawk Program-Footnote-3877367
+Node: Anagram Program877494
+Node: Signature Program880590
+Node: Programs Summary881842
+Node: Programs Exercises883100
+Ref: Programs Exercises-Footnote-1887416
+Node: Advanced Features887502
+Node: Nondecimal Data889996
+Node: Boolean Typed Values891626
+Node: Array Sorting893601
+Node: Controlling Array Traversal894330
+Ref: Controlling Array Traversal-Footnote-1902837
+Node: Array Sorting Functions902959
+Ref: Array Sorting Functions-Footnote-1909078
+Node: Two-way I/O909286
+Ref: Two-way I/O-Footnote-1917281
+Ref: Two-way I/O-Footnote-2917472
+Node: TCP/IP Networking917554
+Node: Profiling920734
+Node: Persistent Memory930444
+Ref: Persistent Memory-Footnote-1938958
+Node: Extension Philosophy939089
+Node: Advanced Features Summary940624
+Node: Internationalization942894
+Node: I18N and L10N944600
+Node: Explaining gettext945295
+Ref: Explaining gettext-Footnote-1951448
+Ref: Explaining gettext-Footnote-2951643
+Node: Programmer i18n951808
+Ref: Programmer i18n-Footnote-1956921
+Node: Translator i18n956970
+Node: String Extraction957806
+Ref: String Extraction-Footnote-1958984
+Node: Printf Ordering959082
+Ref: Printf Ordering-Footnote-1961944
+Node: I18N Portability962012
+Ref: I18N Portability-Footnote-1964586
+Node: I18N Example964657
+Ref: I18N Example-Footnote-1968057
+Ref: I18N Example-Footnote-2968133
+Node: Gawk I18N968250
+Node: I18N Summary968906
+Node: Debugger970307
+Node: Debugging971331
+Node: Debugging Concepts971780
+Node: Debugging Terms973606
+Node: Awk Debugging976219
+Ref: Awk Debugging-Footnote-1977196
+Node: Sample Debugging Session977336
+Node: Debugger Invocation977888
+Node: Finding The Bug979517
+Node: List of Debugger Commands986203
+Node: Breakpoint Control987580
+Node: Debugger Execution Control991412
+Node: Viewing And Changing Data994892
+Node: Execution Stack998630
+Node: Debugger Info1000311
+Node: Miscellaneous Debugger Commands1004610
+Node: Readline Support1009863
+Node: Limitations1010809
+Node: Debugging Summary1013453
+Node: Namespaces1014756
+Node: Global Namespace1015883
+Node: Qualified Names1017328
+Node: Default Namespace1018363
+Node: Changing The Namespace1019138
+Node: Naming Rules1020832
+Node: Internal Name Management1022747
+Node: Namespace Example1023817
+Node: Namespace And Features1026400
+Node: Namespace Summary1027857
+Node: Arbitrary Precision Arithmetic1029370
+Node: Computer Arithmetic1030889
+Ref: table-numeric-ranges1034706
+Ref: table-floating-point-ranges1035204
+Ref: Computer Arithmetic-Footnote-11035863
+Node: Math Definitions1035922
+Ref: table-ieee-formats1038967
+Node: MPFR features1039541
+Node: MPFR On Parole1039994
+Ref: MPFR On Parole-Footnote-11040838
+Node: MPFR Intro1040997
+Node: FP Math Caution1042687
+Ref: FP Math Caution-Footnote-11043761
+Node: Inexactness of computations1044138
+Node: Inexact representation1045169
+Node: Comparing FP Values1046552
+Node: Errors accumulate1047810
+Node: Strange values1049277
+Ref: Strange values-Footnote-11051943
+Node: Getting Accuracy1052048
+Node: Try To Round1054785
+Node: Setting precision1055692
+Ref: table-predefined-precision-strings1056397
+Node: Setting the rounding mode1058282
+Ref: table-gawk-rounding-modes1058664
+Ref: Setting the rounding mode-Footnote-11062722
+Node: Arbitrary Precision Integers1062905
+Ref: Arbitrary Precision Integers-Footnote-11066117
+Node: Checking for MPFR1066273
+Node: POSIX Floating Point Problems1067763
+Ref: POSIX Floating Point Problems-Footnote-11072627
+Node: Floating point summary1072665
+Node: Dynamic Extensions1074929
+Node: Extension Intro1076528
+Node: Plugin License1077836
+Node: Extension Mechanism Outline1078649
+Ref: figure-load-extension1079100
+Ref: figure-register-new-function1080680
+Ref: figure-call-new-function1081785
+Node: Extension API Description1083904
+Node: Extension API Functions Introduction1085633
+Ref: table-api-std-headers1087531
+Node: General Data Types1091995
+Ref: General Data Types-Footnote-11101163
+Node: Memory Allocation Functions1101478
+Ref: Memory Allocation Functions-Footnote-11106203
+Node: Constructor Functions1106302
+Node: API Ownership of MPFR and GMP Values1110207
+Node: Registration Functions1111768
+Node: Extension Functions1112472
+Node: Exit Callback Functions1118048
+Node: Extension Version String1119367
+Node: Input Parsers1120062
+Node: Output Wrappers1133436
+Node: Two-way processors1138144
+Node: Printing Messages1140505
+Ref: Printing Messages-Footnote-11141719
+Node: Updating ERRNO1141874
+Node: Requesting Values1142673
+Ref: table-value-types-returned1143426
+Node: Accessing Parameters1144535
+Node: Symbol Table Access1145819
+Node: Symbol table by name1146335
+Ref: Symbol table by name-Footnote-11149546
+Node: Symbol table by cookie1149678
+Ref: Symbol table by cookie-Footnote-11153959
+Node: Cached values1154023
+Ref: Cached values-Footnote-11157667
+Node: Array Manipulation1157824
+Ref: Array Manipulation-Footnote-11158927
+Node: Array Data Types1158964
+Ref: Array Data Types-Footnote-11161786
+Node: Array Functions1161886
+Node: Flattening Arrays1166915
+Node: Creating Arrays1173967
+Node: Redirection API1178817
+Node: Extension API Variables1181838
+Node: Extension Versioning1182563
+Ref: gawk-api-version1183000
+Node: Extension GMP/MPFR Versioning1184788
+Node: Extension API Informational Variables1186494
+Node: Extension API Boilerplate1187655
+Node: Changes from API V11191791
+Node: Finding Extensions1193425
+Node: Extension Example1194000
+Node: Internal File Description1194824
+Node: Internal File Ops1199148
+Ref: Internal File Ops-Footnote-11210706
+Node: Using Internal File Ops1210854
+Ref: Using Internal File Ops-Footnote-11213285
+Node: Extension Samples1213563
+Node: Extension Sample File Functions1215132
+Node: Extension Sample Fnmatch1223270
+Node: Extension Sample Fork1224865
+Node: Extension Sample Inplace1226141
+Node: Extension Sample Ord1229813
+Node: Extension Sample Readdir1230689
+Ref: table-readdir-file-types1231586
+Node: Extension Sample Revout1232724
+Node: Extension Sample Rev2way1233321
+Node: Extension Sample Read write array1234073
+Node: Extension Sample Readfile1237347
+Node: Extension Sample Time1238478
+Node: Extension Sample API Tests1240294
+Node: gawkextlib1240802
+Node: Extension summary1243838
+Node: Extension Exercises1247696
+Node: Language History1248974
+Node: V7/SVR3.11250688
+Node: SVR41253038
+Node: POSIX1254570
+Node: BTL1255995
+Node: POSIX/GNU1256764
+Node: Feature History1263295
+Node: Common Extensions1282360
+Node: Ranges and Locales1283729
+Ref: Ranges and Locales-Footnote-11288530
+Ref: Ranges and Locales-Footnote-21288557
+Ref: Ranges and Locales-Footnote-31288796
+Node: Contributors1289019
+Node: History summary1295224
+Node: Installation1296670
+Node: Gawk Distribution1297634
+Node: Getting1298126
+Node: Extracting1299125
+Node: Distribution contents1300837
+Node: Unix Installation1308917
+Node: Quick Installation1309739
+Node: Compiling with MPFR1312285
+Node: Shell Startup Files1312991
+Node: Additional Configuration Options1314148
+Node: Configuration Philosophy1316535
+Node: Compiling from Git1319037
+Node: Building the Documentation1319596
+Node: Non-Unix Installation1321008
+Node: PC Installation1321484
+Node: PC Binary Installation1322357
+Node: PC Compiling1323262
+Node: PC Using1324440
+Node: Cygwin1328168
+Node: MSYS1329424
+Node: OpenVMS Installation1330056
+Node: OpenVMS Compilation1330737
+Ref: OpenVMS Compilation-Footnote-11332220
+Node: OpenVMS Dynamic Extensions1332282
+Node: OpenVMS Installation Details1333918
+Node: OpenVMS Running1336353
+Node: OpenVMS GNV1340490
+Node: Bugs1341245
+Node: Bug definition1342169
+Node: Bug address1345820
+Node: Usenet1349411
+Node: Performance bugs1350642
+Node: Asking for help1353660
+Node: Maintainers1355651
+Node: Other Versions1356678
+Node: Installation summary1365610
+Node: Notes1366994
+Node: Compatibility Mode1367804
+Node: Additions1368626
+Node: Accessing The Source1369571
+Node: Adding Code1371106
+Node: New Ports1378242
+Node: Derived Files1382752
+Ref: Derived Files-Footnote-11388599
+Ref: Derived Files-Footnote-21388634
+Ref: Derived Files-Footnote-31389251
+Node: Future Extensions1389365
+Node: Implementation Limitations1390037
+Node: Extension Design1391279
+Node: Old Extension Problems1392443
+Ref: Old Extension Problems-Footnote-11394019
+Node: Extension New Mechanism Goals1394080
+Ref: Extension New Mechanism Goals-Footnote-11397576
+Node: Extension Other Design Decisions1397777
+Node: Extension Future Growth1399976
+Node: Notes summary1400600
+Node: Basic Concepts1401813
+Node: Basic High Level1402498
+Ref: figure-general-flow1402780
+Ref: figure-process-flow1403482
+Ref: Basic High Level-Footnote-11406878
+Node: Basic Data Typing1407067
+Node: Glossary1410485
+Node: Copying1443607
+Node: GNU Free Documentation License1481368
+Node: Index1506691
 
 End Tag Table
 
diff --git a/doc/gawk.texi b/doc/gawk.texi
index 3ef80aa1..ee88ab06 100644
--- a/doc/gawk.texi
+++ b/doc/gawk.texi
@@ -654,6 +654,8 @@ particular records in a file and perform operations upon 
them.
 * Special Caveats::                     Things to watch out for.
 * Close Files And Pipes::               Closing Input and Output Files and
                                         Pipes.
+* Close Return Value::                  Using the return value from
+                                        @code{close()}.
 * Nonfatal::                            Enabling Nonfatal Output.
 * Output Summary::                      Output summary.
 * Output Exercises::                    Exercises.
@@ -11210,6 +11212,10 @@ Doing so results in unpredictable behavior.
 @cindex coprocesses @subentry closing
 @cindex @code{getline} command @subentry coprocesses, using from
 
+@menu
+* Close Return Value::          Using the return value from @code{close()}.
+@end menu
+
 If the same @value{FN} or the same shell command is used with @code{getline}
 more than once during the execution of an @command{awk} program
 (@pxref{Getline}),
@@ -11375,79 +11381,8 @@ delayed until
 @ref{Two-way I/O},
 which describes it in more detail and gives an example.
 
-@cindex sidebar @subentry Using @code{close()}'s Return Value
-@ifdocbook
-@docbook
-<sidebar><title>Using @code{close()}'s Return Value</title>
-@end docbook
-
-@cindex dark corner @subentry @code{close()} function
-@cindex @code{close()} function @subentry return value
-@cindex return value, @code{close()} function
-@cindex differences in @command{awk} and @command{gawk} @subentry 
@code{close()} function
-@cindex Unix @command{awk} @subentry @code{close()} function and
-
-In many older versions of Unix @command{awk}, the @code{close()} function
-is actually a statement.
-@value{DARKCORNER}
-It is a syntax error to try and use the return
-value from @code{close()}:
-
-@example
-command = "@dots{}"
-command | getline info
-retval = close(command)  # syntax error in many Unix awks
-@end example
-
-@cindex @command{gawk} @subentry @code{ERRNO} variable in
-@cindex @code{ERRNO} variable @subentry with @command{close()} function
-@command{gawk} treats @code{close()} as a function.
-The return value is @minus{}1 if the argument names something
-that was never opened with a redirection, or if there is
-a system problem closing the file or process.
-In these cases, @command{gawk} sets the predefined variable
-@code{ERRNO} to a string describing the problem.
-
-In @command{gawk}, starting with @value{PVERSION} 4.2, when closing a pipe or
-coprocess (input or output), the return value is the exit status of the
-command, as described in @ref{table-close-pipe-return-values}.@footnote{Prior
-to @value{PVERSION} 4.2, the return value from closing a pipe or co-process
-was the full 16-bit exit value as defined by the @code{wait()} system
-call.} Otherwise, it is the return value from the system's @code{close()}
-or @code{fclose()} C functions when closing input or output files,
-respectively.  This value is zero if the close succeeds, or @minus{}1
-if it fails.
-
-@float Table,table-close-pipe-return-values
-@caption{Return values from @code{close()} of a pipe}
-@multitable @columnfractions .50 .50
-@headitem Situation @tab Return value from @code{close()}
-@item Normal exit of command @tab Command's exit status
-@item Death by signal of command @tab 256 + number of murderous signal
-@item Death by signal of command with core dump @tab 512 + number of murderous 
signal
-@item Some kind of error @tab @minus{}1
-@end multitable
-@end float
-
-@cindex POSIX mode
-The POSIX standard is very vague; it says that @code{close()}
-returns zero on success and a nonzero value otherwise.  In general,
-different implementations vary in what they report when closing
-pipes; thus, the return value cannot be used portably.
-@value{DARKCORNER}
-In POSIX mode (@pxref{Options}), @command{gawk} just returns zero
-when closing a pipe.
-
-@docbook
-</sidebar>
-@end docbook
-@end ifdocbook
-
-@ifnotdocbook
-@cartouche
-@center @b{Using @code{close()}'s Return Value}
-
-
+@node Close Return Value
+@subsection Using @code{close()}'s Return Value
 @cindex dark corner @subentry @code{close()} function
 @cindex @code{close()} function @subentry return value
 @cindex return value, @code{close()} function
@@ -11484,6 +11419,8 @@ call.} Otherwise, it is the return value from the 
system's @code{close()}
 or @code{fclose()} C functions when closing input or output files,
 respectively.  This value is zero if the close succeeds, or @minus{}1
 if it fails.
+Recent versions of BWK @command{awk} also return the same values
+from @command{close()}.
 
 @float Table,table-close-pipe-return-values
 @caption{Return values from @code{close()} of a pipe}
@@ -11504,8 +11441,6 @@ pipes; thus, the return value cannot be used portably.
 @value{DARKCORNER}
 In POSIX mode (@pxref{Options}), @command{gawk} just returns zero
 when closing a pipe.
-@end cartouche
-@end ifnotdocbook
 
 @node Nonfatal
 @section Enabling Nonfatal Output
@@ -27626,13 +27561,10 @@ We hope you find them both interesting and enjoyable.
 A common error when writing large amounts of prose is to accidentally
 duplicate words.  Typically you will see this in text as something like ``the
 the program does the following@dots{}''  When the text is online, often
-the duplicated words occur at the end of one line and the
+the duplicated words occur at the end of one line and at the
 @iftex
 the
 @end iftex
-@iflatex
-the
-@end iflatex
 beginning of
 another, making them very difficult to spot.
 @c as here!
@@ -42851,7 +42783,7 @@ The generated Info file for
 
 @item doc/pm-gawk.1
 The @command{troff} source for a manual page describing the
-the persistent memory features presented in @ref{Persistent Memory}.
+persistent memory features presented in @ref{Persistent Memory}.
 
 @item doc/igawk.1
 The @command{troff} source for a manual page describing the @command{igawk}
@@ -43540,12 +43472,12 @@ recipe works ``out of the box.''
 This @value{SUBSECTION} describes how to compile and install @command{gawk} 
under OpenVMS.
 
 @menu
-* OpenVMS Compilation::           How to compile @command{gawk} under OpenVMS.
+* OpenVMS Compilation::          How to compile @command{gawk} under OpenVMS.
 * OpenVMS Dynamic Extensions::   Compiling @command{gawk} dynamic extensions
                                  on OpenVMS.
-* OpenVMS Installation Details::  How to install @command{gawk} under OpenVMS.
-* OpenVMS Running::               How to run @command{gawk} under OpenVMS.
-* OpenVMS GNV::                   The OpenVMS GNV Project.
+* OpenVMS Installation Details:: How to install @command{gawk} under OpenVMS.
+* OpenVMS Running::              How to run @command{gawk} under OpenVMS.
+* OpenVMS GNV::                  The OpenVMS GNV Project.
 @end menu
 
 @node OpenVMS Compilation
diff --git a/doc/gawktexi.in b/doc/gawktexi.in
index c3e57598..fe9d31d0 100644
--- a/doc/gawktexi.in
+++ b/doc/gawktexi.in
@@ -649,6 +649,8 @@ particular records in a file and perform operations upon 
them.
 * Special Caveats::                     Things to watch out for.
 * Close Files And Pipes::               Closing Input and Output Files and
                                         Pipes.
+* Close Return Value::                  Using the return value from
+                                        @code{close()}.
 * Nonfatal::                            Enabling Nonfatal Output.
 * Output Summary::                      Output summary.
 * Output Exercises::                    Exercises.
@@ -10638,6 +10640,10 @@ Doing so results in unpredictable behavior.
 @cindex coprocesses @subentry closing
 @cindex @code{getline} command @subentry coprocesses, using from
 
+@menu
+* Close Return Value::          Using the return value from @code{close()}.
+@end menu
+
 If the same @value{FN} or the same shell command is used with @code{getline}
 more than once during the execution of an @command{awk} program
 (@pxref{Getline}),
@@ -10803,7 +10809,8 @@ delayed until
 @ref{Two-way I/O},
 which describes it in more detail and gives an example.
 
-@sidebar Using @code{close()}'s Return Value
+@node Close Return Value
+@subsection Using @code{close()}'s Return Value
 @cindex dark corner @subentry @code{close()} function
 @cindex @code{close()} function @subentry return value
 @cindex return value, @code{close()} function
@@ -10840,6 +10847,8 @@ call.} Otherwise, it is the return value from the 
system's @code{close()}
 or @code{fclose()} C functions when closing input or output files,
 respectively.  This value is zero if the close succeeds, or @minus{}1
 if it fails.
+Recent versions of BWK @command{awk} also return the same values
+from @command{close()}.
 
 @float Table,table-close-pipe-return-values
 @caption{Return values from @code{close()} of a pipe}
@@ -10860,7 +10869,6 @@ pipes; thus, the return value cannot be used portably.
 @value{DARKCORNER}
 In POSIX mode (@pxref{Options}), @command{gawk} just returns zero
 when closing a pipe.
-@end sidebar
 
 @node Nonfatal
 @section Enabling Nonfatal Output
@@ -26508,13 +26516,10 @@ We hope you find them both interesting and enjoyable.
 A common error when writing large amounts of prose is to accidentally
 duplicate words.  Typically you will see this in text as something like ``the
 the program does the following@dots{}''  When the text is online, often
-the duplicated words occur at the end of one line and the
+the duplicated words occur at the end of one line and at the
 @iftex
 the
 @end iftex
-@iflatex
-the
-@end iflatex
 beginning of
 another, making them very difficult to spot.
 @c as here!
@@ -41694,7 +41699,7 @@ The generated Info file for
 
 @item doc/pm-gawk.1
 The @command{troff} source for a manual page describing the
-the persistent memory features presented in @ref{Persistent Memory}.
+persistent memory features presented in @ref{Persistent Memory}.
 
 @item doc/igawk.1
 The @command{troff} source for a manual page describing the @command{igawk}
@@ -42383,12 +42388,12 @@ recipe works ``out of the box.''
 This @value{SUBSECTION} describes how to compile and install @command{gawk} 
under OpenVMS.
 
 @menu
-* OpenVMS Compilation::           How to compile @command{gawk} under OpenVMS.
+* OpenVMS Compilation::          How to compile @command{gawk} under OpenVMS.
 * OpenVMS Dynamic Extensions::   Compiling @command{gawk} dynamic extensions
                                  on OpenVMS.
-* OpenVMS Installation Details::  How to install @command{gawk} under OpenVMS.
-* OpenVMS Running::               How to run @command{gawk} under OpenVMS.
-* OpenVMS GNV::                   The OpenVMS GNV Project.
+* OpenVMS Installation Details:: How to install @command{gawk} under OpenVMS.
+* OpenVMS Running::              How to run @command{gawk} under OpenVMS.
+* OpenVMS GNV::                  The OpenVMS GNV Project.
 @end menu
 
 @node OpenVMS Compilation

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog             |    5 +
 NEWS                  |   15 +-
 README                |    2 +-
 build-aux/ChangeLog   |    4 +
 build-aux/texinfo.tex |  231 +++++----
 doc/ChangeLog         |    7 +-
 doc/gawk.info         | 1309 +++++++++++++++++++++++++------------------------
 doc/gawk.texi         |  100 +---
 doc/gawktexi.in       |   27 +-
 9 files changed, 829 insertions(+), 871 deletions(-)


hooks/post-receive
-- 
gawk



reply via email to

[Prev in Thread] Current Thread [Next in Thread]