fix issue with read builtin delimiter in invaild mutibyte char; fix crash if caller passes negative count argument to one of the history file writing functions

This commit is contained in:
Chet Ramey
2024-08-09 10:01:38 -04:00
parent e45ec6f76b
commit 772e7e760e
19 changed files with 3135 additions and 2976 deletions
+40 -34
View File
@@ -4,9 +4,9 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<!-- This text is a brief description of the features that are present in
the Bash shell (version 5.3, 25 July 2024).
the Bash shell (version 5.3, 7 August 2024).
This is Edition 5.3, last updated 25 July 2024,
This is Edition 5.3, last updated 7 August 2024,
of The GNU Bash Reference Manual,
for Bash, Version 5.3.
@@ -77,10 +77,10 @@ Next: <a href="#Introduction" accesskey="n" rel="next">Introduction</a>, Previou
<h1 class="top" id="Bash-Features-1"><span>Bash Features<a class="copiable-link" href="#Bash-Features-1"> &para;</a></span></h1>
<p>This text is a brief description of the features that are present in
the Bash shell (version 5.3, 25 July 2024).
the Bash shell (version 5.3, 7 August 2024).
The Bash home page is <a class="url" href="http://www.gnu.org/software/bash/">http://www.gnu.org/software/bash/</a>.
</p>
<p>This is Edition 5.3, last updated 25 July 2024,
<p>This is Edition 5.3, last updated 7 August 2024,
of <cite class="cite">The GNU Bash Reference Manual</cite>,
for <code class="code">Bash</code>, Version 5.3.
</p>
@@ -1163,8 +1163,8 @@ the standard input for asynchronous commands, in the absence of any
explicit redirections, is redirected from <code class="code">/dev/null</code>.
</p>
<p>Commands separated by a &lsquo;<samp class="samp">;</samp>&rsquo; are executed sequentially; the shell
waits for each command to terminate in turn. The return status is the
exit status of the last command executed.
waits for each command to terminate in turn.
The return status is the exit status of the last command executed.
</p>
<p><small class="sc">AND</small> and <small class="sc">OR</small> lists are sequences of one or more pipelines
separated by the control operators &lsquo;<samp class="samp">&amp;&amp;</samp>&rsquo; and &lsquo;<samp class="samp">||</samp>&rsquo;,
@@ -6098,7 +6098,8 @@ command list immediately following a <code class="code">while</code> or <code cl
part of the test in an <code class="code">if</code> statement,
part of any command executed in a <code class="code">&amp;&amp;</code> or <code class="code">||</code> list except
the command following the final <code class="code">&amp;&amp;</code> or <code class="code">||</code>,
any command in a pipeline but the last,
any command in a pipeline but the last
(subject to the state of the <code class="code">pipefail</code> shell option),
or if the command&rsquo;s return status is being inverted with <code class="code">!</code>.
If a compound command other than a subshell
returns a non-zero status because a command failed
@@ -7886,7 +7887,7 @@ Assignment to this variable resets the count to the value assigned, and the
expanded value becomes the value assigned plus the number of seconds
since the assignment.
The number of seconds at shell invocation and the current time are always
determined by querying the system clock.
determined by querying the system clock at one-second resolution.
If <code class="env">SECONDS</code>
is unset, it loses its special properties,
even if it is subsequently reset.
@@ -10297,40 +10298,45 @@ or non-zero if an error occurs or an invalid option is encountered.
</dd>
<dt><a id="index-wait"></a><span><code class="code">wait</code><a class="copiable-link" href="#index-wait"> &para;</a></span></dt>
<dd><div class="example">
<pre class="example-preformatted">wait [-fn] [-p <var class="var">varname</var>] [<var class="var">jobspec</var> or <var class="var">pid</var> ...]
<pre class="example-preformatted">wait [-fn] [-p <var class="var">varname</var>] [<var class="var">id</var> ...]
</pre></div>
<p>Wait until the child process specified by each process <small class="sc">ID</small> <var class="var">pid</var>
or job specification <var class="var">jobspec</var> exits and return the exit status of the
last command waited for.
If a job spec is given, all processes in the job are waited for.
If no arguments are given,
<p>Wait until the child process specified by each <var class="var">id</var> exits and
return the exit status of the last <var class="var">id</var>.
Each <var class="var">id</var> may be a <var class="var">pid</var> or job specification <var class="var">jobspec</var>;
if a job spec is given, <code class="code">wait</code> waits for all processes in the job.
</p>
<p>If no options or <var class="var">id</var>s are supplied,
<code class="code">wait</code> waits for all running background jobs and
the last-executed process substitution, if its process id is the same as
<var class="var">$!</var>,
the last-executed process substitution,
if its process id is the same as <var class="var">$!</var>,
and the return status is zero.
If the <samp class="option">-n</samp> option is supplied, <code class="code">wait</code> waits for a single job
from the list of <var class="var">pid</var>s or <var class="var">jobspec</var>s or, if no arguments are
supplied, any job,
</p>
<p>If the <samp class="option">-n</samp> option is supplied, <code class="code">wait</code> waits for any one of
the <var class="var">id</var>s or, if no <var class="var">id</var>s are supplied, any job
or process substitution,
to complete and returns its exit status.
If none of the supplied arguments is a child of the shell, or if no arguments
are supplied and the shell has no unwaited-for children, the exit status
is 127.
If the <samp class="option">-p</samp> option is supplied, the process or job identifier of the job
for which the exit status is returned is assigned to the variable
<var class="var">varname</var> named by the option argument.
If none of the supplied <var class="var">id</var>s is a child of the shell,
or if no arguments are supplied and the shell has no unwaited-for children,
the exit status is 127.
</p>
<p>If the <samp class="option">-p</samp> option is supplied, the process or job identifier
of the job for which the exit status is returned is assigned to the
variable <var class="var">varname</var> named by the option argument.
The variable will be unset initially, before any assignment.
This is useful only when the <samp class="option">-n</samp> option is supplied.
Supplying the <samp class="option">-f</samp> option, when job control is enabled,
forces <code class="code">wait</code> to wait for each <var class="var">pid</var> or <var class="var">jobspec</var> to
terminate before returning its status, instead of returning when it changes
status.
If neither <var class="var">jobspec</var> nor <var class="var">pid</var> specifies an active child process
of the shell, the return status is 127.
If <code class="code">wait</code> is interrupted by a signal, the return status will be greater
</p>
<p>Supplying the <samp class="option">-f</samp> option, when job control is enabled,
forces <code class="code">wait</code> to wait for each <var class="var">id</var> to terminate before
returning its status, instead of returning when it changes status.
</p>
<p>If none of the <var class="var">id</var>s specify one of the shell&rsquo;s an active child
processes, the return status is 127.
If <code class="code">wait</code> is interrupted by a signal,
any <var class="var">varname</var> will remain unset,
and the return status will be greater
than 128, as described above (see <a class="pxref" href="#Signals">Signals</a>).
Otherwise, the return status is the exit status
of the last process or job waited for.
Otherwise, the return status is the exit status of the last <var class="var">id</var>.
</p>
</dd>
<dt><a id="index-disown"></a><span><code class="code">disown</code><a class="copiable-link" href="#index-disown"> &para;</a></span></dt>