<feed xmlns='http://www.w3.org/2005/Atom'>
<title>busybox.git/shell/ash.c, branch master</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.
</subtitle>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/busybox.git/'/>
<entry>
<title>ash: change procargs() to match recent dash change</title>
<updated>2025-09-23T02:46:49+00:00</updated>
<author>
<name>Denys Vlasenko</name>
<email>vda.linux@googlemail.com</email>
</author>
<published>2025-09-23T02:46:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/busybox.git/commit/?id=381a40a049c1ff9b14c51fa8ce91e7f5953a682f'/>
<id>381a40a049c1ff9b14c51fa8ce91e7f5953a682f</id>
<content type='text'>
Signed-off-by: Denys Vlasenko &lt;vda.linux@googlemail.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Signed-off-by: Denys Vlasenko &lt;vda.linux@googlemail.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ash: implement &lt;&lt;&lt;here_string syntax</title>
<updated>2025-09-02T09:46:11+00:00</updated>
<author>
<name>Denys Vlasenko</name>
<email>vda.linux@googlemail.com</email>
</author>
<published>2025-09-02T09:46:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/busybox.git/commit/?id=106546961db9b30ca44894a3a09fa3113ed85e46'/>
<id>106546961db9b30ca44894a3a09fa3113ed85e46</id>
<content type='text'>
function                                             old     new   delta
write2pipe                                             -     133    +133
.rodata                                           105992  106009     +17
readtoken1                                          3101    3111     +10
cmdtxt                                               631     641     +10
nodesize                                              27      28      +1
redirect                                             961     916     -45
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 4/1 up/down: 171/-45)           Total: 126 bytes

Signed-off-by: Denys Vlasenko &lt;vda.linux@googlemail.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
function                                             old     new   delta
write2pipe                                             -     133    +133
.rodata                                           105992  106009     +17
readtoken1                                          3101    3111     +10
cmdtxt                                               631     641     +10
nodesize                                              27      28      +1
redirect                                             961     916     -45
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 4/1 up/down: 171/-45)           Total: 126 bytes

Signed-off-by: Denys Vlasenko &lt;vda.linux@googlemail.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ash: parser: Invalid redirections are run-time, not syntax errors</title>
<updated>2025-08-11T16:43:02+00:00</updated>
<author>
<name>Denys Vlasenko</name>
<email>vda.linux@googlemail.com</email>
</author>
<published>2025-08-11T16:43:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/busybox.git/commit/?id=1cd53c15a2b370487c7951345efff3b43f228d1d'/>
<id>1cd53c15a2b370487c7951345efff3b43f228d1d</id>
<content type='text'>
Upstream commit

    Date: Wed, 14 Dec 2022 02:06:05 +0100
    parser: Invalid redirections are run-time, not syntax errors

    This fixes a long-standing bug where
      echo 'echo &gt;&amp;a' | sh
    errors out with
      sh: 2: Syntax error: Bad fd number
    despite the error being on line 1

    This patch makes the error
      sh: 1: Bad fd number: a
    as expected

Signed-off-by: Denys Vlasenko &lt;vda.linux@googlemail.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Upstream commit

    Date: Wed, 14 Dec 2022 02:06:05 +0100
    parser: Invalid redirections are run-time, not syntax errors

    This fixes a long-standing bug where
      echo 'echo &gt;&amp;a' | sh
    errors out with
      sh: 2: Syntax error: Bad fd number
    despite the error being on line 1

    This patch makes the error
      sh: 1: Bad fd number: a
    as expected

Signed-off-by: Denys Vlasenko &lt;vda.linux@googlemail.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ash: converge waiting code to dash in its form, add comments, no code changes</title>
<updated>2025-08-10T21:39:44+00:00</updated>
<author>
<name>Denys Vlasenko</name>
<email>vda.linux@googlemail.com</email>
</author>
<published>2025-08-10T21:39:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/busybox.git/commit/?id=ea2022efb32661e33ec43f3cd9f5cae8bc2b9547'/>
<id>ea2022efb32661e33ec43f3cd9f5cae8bc2b9547</id>
<content type='text'>
Signed-off-by: Denys Vlasenko &lt;vda.linux@googlemail.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Signed-off-by: Denys Vlasenko &lt;vda.linux@googlemail.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ash: move 100 bytes off global .data / .bss, no logic changes</title>
<updated>2025-08-10T18:18:10+00:00</updated>
<author>
<name>Denys Vlasenko</name>
<email>vda.linux@googlemail.com</email>
</author>
<published>2025-08-10T18:18:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/busybox.git/commit/?id=f6fb3c603a330d8b9b4910763f8fcee0fa90bba3'/>
<id>f6fb3c603a330d8b9b4910763f8fcee0fa90bba3</id>
<content type='text'>
   text	   data	    bss	    dec	    hex	filename
1067871	    559	   5184	1073614	 1061ce	busybox_old
1068067	    555	   5088	1073710	 10622e	busybox_unstripped
            ^^^^^^^^^^^
function                                             old     new   delta
pgetc                                                580     623     +43
parse_command                                       1633    1651     +18
ash_main                                            1226    1239     +13
popstring                                            115     126     +11
redirect                                             951     961     +10
popfile                                              105     115     +10
expandstr                                            252     262     +10
evalbltin                                            306     314      +8
pushstring                                           155     162      +7
pushfile                                              31      38      +7
freestrings                                           90      97      +7
setinputstring                                        68      74      +6
readtoken1                                          3095    3101      +6
pungetc                                                9      15      +6
nlprompt                                              39      45      +6
nlnoprompt                                            33      39      +6
unwindfiles                                           20      25      +5
dotcmd                                               309     314      +5
setinputfile                                         190     194      +4
init                                                 429     432      +3
forkchild                                            617     620      +3
evalcommand                                         1616    1617      +1
ash_vmsg                                             141     142      +1
g_parsefile                                            4       -      -4
commandname                                            4       -      -4
basepf                                                84       -     -84
------------------------------------------------------------------------------
(add/remove: 0/3 grow/shrink: 23/0 up/down: 196/-92)          Total: 104 bytes

Signed-off-by: Denys Vlasenko &lt;vda.linux@googlemail.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
   text	   data	    bss	    dec	    hex	filename
1067871	    559	   5184	1073614	 1061ce	busybox_old
1068067	    555	   5088	1073710	 10622e	busybox_unstripped
            ^^^^^^^^^^^
function                                             old     new   delta
pgetc                                                580     623     +43
parse_command                                       1633    1651     +18
ash_main                                            1226    1239     +13
popstring                                            115     126     +11
redirect                                             951     961     +10
popfile                                              105     115     +10
expandstr                                            252     262     +10
evalbltin                                            306     314      +8
pushstring                                           155     162      +7
pushfile                                              31      38      +7
freestrings                                           90      97      +7
setinputstring                                        68      74      +6
readtoken1                                          3095    3101      +6
pungetc                                                9      15      +6
nlprompt                                              39      45      +6
nlnoprompt                                            33      39      +6
unwindfiles                                           20      25      +5
dotcmd                                               309     314      +5
setinputfile                                         190     194      +4
init                                                 429     432      +3
forkchild                                            617     620      +3
evalcommand                                         1616    1617      +1
ash_vmsg                                             141     142      +1
g_parsefile                                            4       -      -4
commandname                                            4       -      -4
basepf                                                84       -     -84
------------------------------------------------------------------------------
(add/remove: 0/3 grow/shrink: 23/0 up/down: 196/-92)          Total: 104 bytes

Signed-off-by: Denys Vlasenko &lt;vda.linux@googlemail.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ash: redir: Retry open on EINTR</title>
<updated>2025-08-09T18:17:31+00:00</updated>
<author>
<name>Denys Vlasenko</name>
<email>vda.linux@googlemail.com</email>
</author>
<published>2025-08-09T18:14:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/busybox.git/commit/?id=9b67dde8cdd40f5401b78fabed3f3fa245724006'/>
<id>9b67dde8cdd40f5401b78fabed3f3fa245724006</id>
<content type='text'>
Upstream commit:

    Date: Thu, 28 May 2020 21:31:45 +1000
    redir: Retry open64 on EINTR

    It is possible for open64 to block on named pipes, and therefore
    it can be interrupted by signals and return EINTR.  We should only
    let it fail with EINTR if real signals are pending (i.e., it should
    not fail on SIGCHLD if SIGCHLD has not been trapped).

    This patch adds a new helper sh_open to retry the open64 call if
    necessary.  It also calls sh_error when appropriate.

    Fixes: 3800d4934391 ("[JOBS] Fix dowait signal race")

Signed-off-by: Denys Vlasenko &lt;vda.linux@googlemail.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Upstream commit:

    Date: Thu, 28 May 2020 21:31:45 +1000
    redir: Retry open64 on EINTR

    It is possible for open64 to block on named pipes, and therefore
    it can be interrupted by signals and return EINTR.  We should only
    let it fail with EINTR if real signals are pending (i.e., it should
    not fail on SIGCHLD if SIGCHLD has not been trapped).

    This patch adds a new helper sh_open to retry the open64 call if
    necessary.  It also calls sh_error when appropriate.

    Fixes: 3800d4934391 ("[JOBS] Fix dowait signal race")

Signed-off-by: Denys Vlasenko &lt;vda.linux@googlemail.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ash: eval: Reset handler when entering a subshell</title>
<updated>2025-08-09T15:52:09+00:00</updated>
<author>
<name>Denys Vlasenko</name>
<email>vda.linux@googlemail.com</email>
</author>
<published>2025-08-09T15:52:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/busybox.git/commit/?id=81274d8b3085d59bf5c01a35c17bac3d6952b53d'/>
<id>81274d8b3085d59bf5c01a35c17bac3d6952b53d</id>
<content type='text'>
Upstream commit:

    Date: Sun, 3 Mar 2019 21:57:50 +0800
    eval: Reset handler when entering a subshell

    As it is a subshell can execute code that is only meant for the
    parent shell when it executes a longjmp that is caught by something
    like evalcommand.  This patch fixes it by resetting the handler
    when entering a subshell.

function                                             old     new   delta
evalsubshell                                         169     183     +14
evalpipe                                             342     356     +14
argstr                                              1406    1416     +10
ash_main                                            1236    1226     -10
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 4/1 up/down: 65/-10)             Total: 28 bytes

Signed-off-by: Denys Vlasenko &lt;vda.linux@googlemail.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Upstream commit:

    Date: Sun, 3 Mar 2019 21:57:50 +0800
    eval: Reset handler when entering a subshell

    As it is a subshell can execute code that is only meant for the
    parent shell when it executes a longjmp that is caught by something
    like evalcommand.  This patch fixes it by resetting the handler
    when entering a subshell.

function                                             old     new   delta
evalsubshell                                         169     183     +14
evalpipe                                             342     356     +14
argstr                                              1406    1416     +10
ash_main                                            1236    1226     -10
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 4/1 up/down: 65/-10)             Total: 28 bytes

Signed-off-by: Denys Vlasenko &lt;vda.linux@googlemail.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ahs: jobs: Block signals during tcsetpgrp</title>
<updated>2025-08-09T15:39:44+00:00</updated>
<author>
<name>Denys Vlasenko</name>
<email>vda.linux@googlemail.com</email>
</author>
<published>2025-08-09T15:39:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/busybox.git/commit/?id=4ce8afe6b2a989a0360c09a81c6bf9d43d6ba24a'/>
<id>4ce8afe6b2a989a0360c09a81c6bf9d43d6ba24a</id>
<content type='text'>
Upstream commit:

    Date: Wed, 6 Jan 2021 15:45:12 +1100
    jobs: Block signals during tcsetpgrp

    Harald van Dijk &lt;harald@gigawatt.nl&gt; wrote:
    &gt; On 19/12/2020 22:21, Steffen Nurpmeso wrote:
    &gt;&gt; Steffen Nurpmeso wrote in
    &gt;&gt;   &lt;20201219172838.1B-WB%steffen@sdaoden.eu&gt;:
    &gt;&gt;   |Long story short, after falsely accusing BSD make of not working
    &gt;&gt;
    &gt;&gt; After dinner i shortened it a bit more, and attach it again, ok?
    &gt;&gt; It is terrible, but now less redundant than before.
    &gt;&gt; Sorry for being so terse, that problem crosses my head for about
    &gt;&gt; a week, and i was totally mislead and if you bang your head
    &gt;&gt; against the wall so many hours bugs or misbehaviours in a handful
    &gt;&gt; of other programs is not the expected outcome.
    &gt;
    &gt; I think a minimal test case is simply
    &gt;
    &gt; all:
    &gt;         $(SHELL) -c 'trap "echo TTOU" TTOU; set -m; echo all good'
    &gt;
    &gt; unless I accidentally oversimplified.
    &gt;
    &gt; The SIGTTOU is caused by setjobctl's xtcsetpgrp(fd, pgrp) call to make
    &gt; its newly started process group the foreground process group when job
    &gt; control is enabled, where xtcsetpgrp is a wrapper for tcsetpgrp. (That's
    &gt; in dash, the other variants may have some small differences.) tcsetpgrp
    &gt; has this little bit in its specification:
    &gt;
    &gt;        Attempts to use tcsetpgrp() from a process which is a member of
    &gt;        a background process group on a fildes associated with its con‐
    &gt;        trolling  terminal  shall  cause the process group to be sent a
    &gt;        SIGTTOU signal. If the calling thread is blocking SIGTTOU  sig‐
    &gt;        nals  or  the  process is ignoring SIGTTOU signals, the process
    &gt;        shall be allowed to perform the operation,  and  no  signal  is
    &gt;        sent.
    &gt;
    &gt; Ordinarily, when job control is enabled, SIGTTOU is ignored. However,
    &gt; when a trap action is specified for SIGTTOU, the signal is not ignored,
    &gt; and there is no blocking in place either, so the tcsetpgrp() call is not
    &gt; allowed.
    &gt;
    &gt; The lowest impact change to make here, the one that otherwise preserves
    &gt; the existing shell behaviour, is to block signals before calling
    &gt; tcsetpgrp and unblocking them afterwards. This ensures SIGTTOU does not
    &gt; get raised here, but also ensures that if SIGTTOU is sent to the shell
    &gt; for another reason, there is no window where it gets silently ignored.
    &gt;
    &gt; Another way to fix this is by not trying to make the shell start a new
    &gt; process group, or at least not make it the foreground process group.
    &gt; Most other shells appear to not try to do this.

    This patch implements the blocking of SIGTTOU (and everything else)
    while we call tcsetpgrp.

Signed-off-by: Denys Vlasenko &lt;vda.linux@googlemail.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Upstream commit:

    Date: Wed, 6 Jan 2021 15:45:12 +1100
    jobs: Block signals during tcsetpgrp

    Harald van Dijk &lt;harald@gigawatt.nl&gt; wrote:
    &gt; On 19/12/2020 22:21, Steffen Nurpmeso wrote:
    &gt;&gt; Steffen Nurpmeso wrote in
    &gt;&gt;   &lt;20201219172838.1B-WB%steffen@sdaoden.eu&gt;:
    &gt;&gt;   |Long story short, after falsely accusing BSD make of not working
    &gt;&gt;
    &gt;&gt; After dinner i shortened it a bit more, and attach it again, ok?
    &gt;&gt; It is terrible, but now less redundant than before.
    &gt;&gt; Sorry for being so terse, that problem crosses my head for about
    &gt;&gt; a week, and i was totally mislead and if you bang your head
    &gt;&gt; against the wall so many hours bugs or misbehaviours in a handful
    &gt;&gt; of other programs is not the expected outcome.
    &gt;
    &gt; I think a minimal test case is simply
    &gt;
    &gt; all:
    &gt;         $(SHELL) -c 'trap "echo TTOU" TTOU; set -m; echo all good'
    &gt;
    &gt; unless I accidentally oversimplified.
    &gt;
    &gt; The SIGTTOU is caused by setjobctl's xtcsetpgrp(fd, pgrp) call to make
    &gt; its newly started process group the foreground process group when job
    &gt; control is enabled, where xtcsetpgrp is a wrapper for tcsetpgrp. (That's
    &gt; in dash, the other variants may have some small differences.) tcsetpgrp
    &gt; has this little bit in its specification:
    &gt;
    &gt;        Attempts to use tcsetpgrp() from a process which is a member of
    &gt;        a background process group on a fildes associated with its con‐
    &gt;        trolling  terminal  shall  cause the process group to be sent a
    &gt;        SIGTTOU signal. If the calling thread is blocking SIGTTOU  sig‐
    &gt;        nals  or  the  process is ignoring SIGTTOU signals, the process
    &gt;        shall be allowed to perform the operation,  and  no  signal  is
    &gt;        sent.
    &gt;
    &gt; Ordinarily, when job control is enabled, SIGTTOU is ignored. However,
    &gt; when a trap action is specified for SIGTTOU, the signal is not ignored,
    &gt; and there is no blocking in place either, so the tcsetpgrp() call is not
    &gt; allowed.
    &gt;
    &gt; The lowest impact change to make here, the one that otherwise preserves
    &gt; the existing shell behaviour, is to block signals before calling
    &gt; tcsetpgrp and unblocking them afterwards. This ensures SIGTTOU does not
    &gt; get raised here, but also ensures that if SIGTTOU is sent to the shell
    &gt; for another reason, there is no window where it gets silently ignored.
    &gt;
    &gt; Another way to fix this is by not trying to make the shell start a new
    &gt; process group, or at least not make it the foreground process group.
    &gt; Most other shells appear to not try to do this.

    This patch implements the blocking of SIGTTOU (and everything else)
    while we call tcsetpgrp.

Signed-off-by: Denys Vlasenko &lt;vda.linux@googlemail.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ash: eval: Add vfork support</title>
<updated>2025-08-09T15:36:18+00:00</updated>
<author>
<name>Denys Vlasenko</name>
<email>vda.linux@googlemail.com</email>
</author>
<published>2025-08-09T15:36:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/busybox.git/commit/?id=df154028dc1257a03cbbcf322a6c31eb9552a661'/>
<id>df154028dc1257a03cbbcf322a6c31eb9552a661</id>
<content type='text'>
Upstream commit:

    Date: Sat, 19 May 2018 02:39:56 +0800
    eval: Add vfork support

    This patch adds basic vfork support for the case of a simple command.

Upstream commit:

    Date: Tue, 12 Jan 2021 17:11:19 +1100
    jobs: Always reset SIGINT/SIGQUIT handlers

    On Fri, Jan 08, 2021 at 08:55:41PM +0000, Harald van Dijk wrote:
    &gt; On 18/05/2018 19:39, Herbert Xu wrote:
    &gt; &gt; This patch adds basic vfork support for the case of a simple command.
    &gt; &gt; ...  @@ -879,17 +892,30 @@ forkchild(struct job *jp, union node *n, int
    &gt; &gt; mode)
    &gt; &gt;   		}
    &gt; &gt;   	}
    &gt; &gt;   	if (!oldlvl &amp;&amp; iflag) {
    &gt; &gt; -		setsignal(SIGINT);
    &gt; &gt; -		setsignal(SIGQUIT);
    &gt; &gt; +		if (mode != FORK_BG) {
    &gt; &gt; +			setsignal(SIGINT);
    &gt; &gt; +			setsignal(SIGQUIT);
    &gt; &gt; +		}
    &gt; &gt;   		setsignal(SIGTERM);
    &gt; &gt;   	}
    &gt; &gt; +
    &gt; &gt; +	if (lvforked)
    &gt; &gt; +		return;
    &gt; &gt; +
    &gt; &gt;   	for (jp = curjob; jp; jp = jp-&gt;prev_job)
    &gt; &gt;   		freejob(jp);
    &gt; &gt;   }
    &gt;
    &gt; This leaves SIGQUIT ignored in background jobs in interactive shells.
    &gt;
    &gt;   ENV= dash -ic 'dash -c "kill -QUIT \$\$; echo huh" &amp; wait'
    &gt;
    &gt; As of dash 0.5.11, this prints "huh". Before, the subprocess process killed
    &gt; itself before it could print anything. Other shells do not leave SIGQUIT
    &gt; ignored.
    &gt;
    &gt; (In a few other shells, this also prints "huh", but in those other shells,
    &gt; that is because the inner shell chooses to ignore SIGQUIT, not because the
    &gt; outer shell leaves it ignored.)

    Thanks for catching this.  I have no idea how that got in there
    and it makes no sense whatsoever.  This patch removes the if
    conditional.

    Fixes: e94a964e7dd0 ("eval: Add vfork support")

Signed-off-by: Denys Vlasenko &lt;vda.linux@googlemail.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Upstream commit:

    Date: Sat, 19 May 2018 02:39:56 +0800
    eval: Add vfork support

    This patch adds basic vfork support for the case of a simple command.

Upstream commit:

    Date: Tue, 12 Jan 2021 17:11:19 +1100
    jobs: Always reset SIGINT/SIGQUIT handlers

    On Fri, Jan 08, 2021 at 08:55:41PM +0000, Harald van Dijk wrote:
    &gt; On 18/05/2018 19:39, Herbert Xu wrote:
    &gt; &gt; This patch adds basic vfork support for the case of a simple command.
    &gt; &gt; ...  @@ -879,17 +892,30 @@ forkchild(struct job *jp, union node *n, int
    &gt; &gt; mode)
    &gt; &gt;   		}
    &gt; &gt;   	}
    &gt; &gt;   	if (!oldlvl &amp;&amp; iflag) {
    &gt; &gt; -		setsignal(SIGINT);
    &gt; &gt; -		setsignal(SIGQUIT);
    &gt; &gt; +		if (mode != FORK_BG) {
    &gt; &gt; +			setsignal(SIGINT);
    &gt; &gt; +			setsignal(SIGQUIT);
    &gt; &gt; +		}
    &gt; &gt;   		setsignal(SIGTERM);
    &gt; &gt;   	}
    &gt; &gt; +
    &gt; &gt; +	if (lvforked)
    &gt; &gt; +		return;
    &gt; &gt; +
    &gt; &gt;   	for (jp = curjob; jp; jp = jp-&gt;prev_job)
    &gt; &gt;   		freejob(jp);
    &gt; &gt;   }
    &gt;
    &gt; This leaves SIGQUIT ignored in background jobs in interactive shells.
    &gt;
    &gt;   ENV= dash -ic 'dash -c "kill -QUIT \$\$; echo huh" &amp; wait'
    &gt;
    &gt; As of dash 0.5.11, this prints "huh". Before, the subprocess process killed
    &gt; itself before it could print anything. Other shells do not leave SIGQUIT
    &gt; ignored.
    &gt;
    &gt; (In a few other shells, this also prints "huh", but in those other shells,
    &gt; that is because the inner shell chooses to ignore SIGQUIT, not because the
    &gt; outer shell leaves it ignored.)

    Thanks for catching this.  I have no idea how that got in there
    and it makes no sense whatsoever.  This patch removes the if
    conditional.

    Fixes: e94a964e7dd0 ("eval: Add vfork support")

Signed-off-by: Denys Vlasenko &lt;vda.linux@googlemail.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ash: rename got_sigchld, doing_jobctl, and INT_ON/OFF to match dash</title>
<updated>2025-08-09T15:17:48+00:00</updated>
<author>
<name>Denys Vlasenko</name>
<email>vda.linux@googlemail.com</email>
</author>
<published>2025-08-09T15:17:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/busybox.git/commit/?id=9f490785e00bd5c4deee09d9fee3badd8d70ada4'/>
<id>9f490785e00bd5c4deee09d9fee3badd8d70ada4</id>
<content type='text'>
Comparing code with dash is more difficult with these differences.
(We didn't know back then that dash will be revived...)

Signed-off-by: Denys Vlasenko &lt;vda.linux@googlemail.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Comparing code with dash is more difficult with these differences.
(We didn't know back then that dash will be revived...)

Signed-off-by: Denys Vlasenko &lt;vda.linux@googlemail.com&gt;
</pre>
</div>
</content>
</entry>
</feed>
