<feed xmlns='http://www.w3.org/2005/Atom'>
<title>busybox-w32/shell, branch master</title>
<subtitle>A mirror of https://github.com/rmyorston/busybox-w32.git
</subtitle>
<id>https://git.lua4.win/busybox-w32/atom?h=master</id>
<link rel='self' href='https://git.lua4.win/busybox-w32/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://git.lua4.win/busybox-w32/'/>
<updated>2026-06-30T16:50:30+00:00</updated>
<entry>
<title>ash: only report background jobs in root shell</title>
<updated>2026-06-30T16:50:30+00:00</updated>
<author>
<name>Ron Yorston</name>
<email>rmy@pobox.com</email>
</author>
<published>2026-06-30T16:50:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/busybox-w32/commit/?id=c2bf59a9ff757c0b1dc45dcf5a42dcc08a3c7d57'/>
<id>urn:sha1:c2bf59a9ff757c0b1dc45dcf5a42dcc08a3c7d57</id>
<content type='text'>
Background jobs were being reported in shells other than an
interactive, top-level shell.

Suppress this unnecessary report.

Adds 16 bytes.

Signed-off-by: Ron Yorston &lt;rmy@pobox.com&gt;
</content>
</entry>
<entry>
<title>ash: only copy jobtab if needed for job hack</title>
<updated>2026-06-30T16:31:20+00:00</updated>
<author>
<name>Ron Yorston</name>
<email>rmy@pobox.com</email>
</author>
<published>2026-06-30T16:31:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/busybox-w32/commit/?id=f16e9b40a381618573211b4e82162e819eec1587'/>
<id>urn:sha1:f16e9b40a381618573211b4e82162e819eec1587</id>
<content type='text'>
This script:

  #!/bin/bash

  (
    ( true ) &amp;
    ( true ) &amp;
    ( true ) &amp;
    ( true ) &amp;
    ( true ) &amp;
  )

resulted in a crash.  The problem was introduced by commit
7b692ddf0c (ash: improved support for jobs built-in).  This
commit copies the job table into child shells for use by the
'jobs' built-in.

The crash happens because when the job table is cleared in the
child it becomes available for reuse.  If only four jobs are
required this is OK but going over four causes the table to be
reallocated.  This doesn't work because in the child it's in
shared memory.

The fix is not to pass the job table to the child unless it's
required by the 'jobs' built-in.  This is also more efficient.

Adds 0-16 bytes.

(GitHub issue #604)

Signed-off-by: Ron Yorston &lt;rmy@pobox.com&gt;
</content>
</entry>
<entry>
<title>ash: scan drives directly for 'pwd -a'</title>
<updated>2026-06-15T11:42:36+00:00</updated>
<author>
<name>Ron Yorston</name>
<email>rmy@pobox.com</email>
</author>
<published>2026-06-15T10:44:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/busybox-w32/commit/?id=c5ff19688135ff077190a46de17f6cd7c005d1fc'/>
<id>urn:sha1:c5ff19688135ff077190a46de17f6cd7c005d1fc</id>
<content type='text'>
The shell builtin 'pwd' takes a Windows-specific '-a' option to
display the current directory on each drive.

Use Windows APIs directly to scan for valid drives instead of
'getmntent()'.  Future changes will result in 'getmntent()'
returning mounted volumes as well as drives.

Signed-off-by: Ron Yorston &lt;rmy@pobox.com&gt;
</content>
</entry>
<entry>
<title>ash: don't treat process substitutions as background jobs</title>
<updated>2026-05-31T14:10:05+00:00</updated>
<author>
<name>Ron Yorston</name>
<email>rmy@pobox.com</email>
</author>
<published>2026-05-31T14:10:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/busybox-w32/commit/?id=c2c2944a9e93fe549d4c5c873bc93de4a486e3e1'/>
<id>urn:sha1:c2c2944a9e93fe549d4c5c873bc93de4a486e3e1</id>
<content type='text'>
Commit bda604a70 (ash: prevent leakage of process handles) added
job tracking for process substitutions.  This had the unwanted
side-effect that if the user tried to exit from the shell after
a command involving process substitution the shell reported that
background jobs were present and refused to exit.

Use the flag introduced in commit e6c716317 (ash: don't report
completion of process substitution) to avoid this.

Adds 16 bytes.

(GitHub issue #587)

Signed-off-by: Ron Yorston &lt;rmy@pobox.com&gt;
</content>
</entry>
<entry>
<title>ash: read built-in should respect stty -echo</title>
<updated>2026-05-24T18:06:25+00:00</updated>
<author>
<name>Ron Yorston</name>
<email>rmy@pobox.com</email>
</author>
<published>2026-05-24T14:56:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/busybox-w32/commit/?id=0ab4bc6ce5f6480b03093866b04c17e5d13ef046'/>
<id>urn:sha1:0ab4bc6ce5f6480b03093866b04c17e5d13ef046</id>
<content type='text'>
If echo has been disabled by the command 'stty -echo' the shell
'read' built-in should match its behaviour on Linux and not echo
keyboard input.

Adds 32-48 bytes.

(GitHub issue #594)

Signed-off-by: Ron Yorston &lt;rmy@pobox.com&gt;
</content>
</entry>
<entry>
<title>ash: don't report completion of process substitution</title>
<updated>2026-05-17T10:18:32+00:00</updated>
<author>
<name>Ron Yorston</name>
<email>rmy@pobox.com</email>
</author>
<published>2026-05-17T10:11:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/busybox-w32/commit/?id=e6c716317e760d2441d2cfeba3cf5a6b5ee0415d'/>
<id>urn:sha1:e6c716317e760d2441d2cfeba3cf5a6b5ee0415d</id>
<content type='text'>
Commit bda604a70 (ash: prevent leakage of process handles) added
job tracking for process substitutions.  This had the unwanted
side-effect that the completion of such processes was then
reported in interactive shells.

Set a flag in such jobs so their completion isn't reported.

Adds 32 bytes.

(GitHub issue #587)
</content>
</entry>
<entry>
<title>ash: prevent leakage of process handles</title>
<updated>2026-05-13T11:32:26+00:00</updated>
<author>
<name>Ron Yorston</name>
<email>rmy@pobox.com</email>
</author>
<published>2026-05-13T11:32:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/busybox-w32/commit/?id=bda604a70761e7791e5bfd00337bfc6f9e6ae640'/>
<id>urn:sha1:bda604a70761e7791e5bfd00337bfc6f9e6ae640</id>
<content type='text'>
When the shell invoked process substitution it retained a process
handle to the child.  These handles could accumulate without limit.

The shell in upstream BusyBox doesn't bother to create a job
structure for process substitutions or here documents.  This isn't
appropriate on Windows, where we need to track the child process
handles.  Create job structures as required.

Saves 32-48 bytes.

(GitHub issue #587)
</content>
</entry>
<entry>
<title>ash: further fixes to merge of upstream changes</title>
<updated>2026-05-06T12:57:04+00:00</updated>
<author>
<name>Ron Yorston</name>
<email>rmy@pobox.com</email>
</author>
<published>2026-05-06T12:57:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/busybox-w32/commit/?id=169694ebdba292f6533f78aeea678bfbb907396c'/>
<id>urn:sha1:169694ebdba292f6533f78aeea678bfbb907396c</id>
<content type='text'>
Commits e23652908 and 686a0803f (ash: fix execution of applets via
Unix-style path) were necessary following a major revision of the
shell upstream.

Another problem was found:

   $ sh
   $ PATH="/usr/bin;$PATH" exec non-existent

resulted in a segfault.  This happened because during a PATH search
tryexec() modified argv[0] when it detected a Unix-style path (in
this case '/usr/bin/non-existent') but failed to restore it if the
execution failed.

There were other issues:

- The logic of the new code failed to match the original:  the test
  for a Unix-style path should only have happened if an attempt to
  execute the full path had already failed.

- The test for a script running an interpreter which is an applet
  also modified argv.  If the execution failed argv should have
  been restored to its original state.

- During a PATH search the 'path' pointer walked through the
  elements of the path.  This pointer was also used to determine
  if an applet was overridden by an executable.  This is wrong:
  the full PATH variable should have been used.

The code around tryexec()/shellexec() has been rewritten to take
these issues into account.

Adds 32-48 bytes.

(GitHub issue #584)
</content>
</entry>
<entry>
<title>ash: fix build failure if SH_STANDALONE is disabled</title>
<updated>2026-05-05T07:14:22+00:00</updated>
<author>
<name>Ron Yorston</name>
<email>rmy@pobox.com</email>
</author>
<published>2026-05-05T07:14:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/busybox-w32/commit/?id=9351ea0819bfb05da32389d93964acc56b076c8d'/>
<id>urn:sha1:9351ea0819bfb05da32389d93964acc56b076c8d</id>
<content type='text'>
It wasn't possible to build ash if FEATURE_SH_STANDALONE was
disabled.

This issue was introduced during the large merge of upstream
changes to ash in commit e23652908.
</content>
</entry>
<entry>
<title>Merge branch 'busybox' into merge</title>
<updated>2026-03-11T10:14:49+00:00</updated>
<author>
<name>Ron Yorston</name>
<email>rmy@pobox.com</email>
</author>
<published>2026-03-11T10:14:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/busybox-w32/commit/?id=ede205bd07573813337b5706acb0cae3b127a36f'/>
<id>urn:sha1:ede205bd07573813337b5706acb0cae3b127a36f</id>
<content type='text'>
</content>
</entry>
</feed>
