<feed xmlns='http://www.w3.org/2005/Atom'>
<title>busybox-w32/shell, branch long_paths</title>
<subtitle>A mirror of https://github.com/rmyorston/busybox-w32.git
</subtitle>
<id>https://git.lua4.win/busybox-w32/atom?h=long_paths</id>
<link rel='self' href='https://git.lua4.win/busybox-w32/atom?h=long_paths'/>
<link rel='alternate' type='text/html' href='https://git.lua4.win/busybox-w32/'/>
<updated>2026-02-25T09:33:36+00:00</updated>
<entry>
<title>ash: allow execution of busybox-w32 binary without extension</title>
<updated>2026-02-25T09:33:36+00:00</updated>
<author>
<name>Ron Yorston</name>
<email>rmy@pobox.com</email>
</author>
<published>2026-02-25T09:33:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/busybox-w32/commit/?id=35e590816a844e3ccc707c841b756e83987d09eb'/>
<id>urn:sha1:35e590816a844e3ccc707c841b756e83987d09eb</id>
<content type='text'>
If the busybox-w32 binary didn't have an extension the shell was
unable to spawn itself:

   $ ls -l busybox
   -rwxrwxr-x    1 rmy      rmy         661006 Feb 25 09:37 busybox
   $ ./busybox sh
   $ ls
   sh: unable to spawn shell

This happened because the shell used spawnve() from the C runtime
to execute itself.  Microsoft insists on trying to add an extension
to the name of the binary unless it has an explicit '.' as its
last character.

Use the internal spawnveq() instead, as it handles various quirks
like the above.

Adds 16-32 bytes.

(GitHub issue #566)
</content>
</entry>
<entry>
<title>ash: fix execution of applets via Unix-style path</title>
<updated>2026-02-14T21:09:47+00:00</updated>
<author>
<name>Ron Yorston</name>
<email>rmy@pobox.com</email>
</author>
<published>2026-02-14T21:09:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/busybox-w32/commit/?id=686a0803f9747206eef5337100c5338431891e45'/>
<id>urn:sha1:686a0803f9747206eef5337100c5338431891e45</id>
<content type='text'>
Merging of upstream changes to ash failed to ensure that applets
could be executed using a Unix-style path.

Move the necessary code from shellexec() to tryexec().

(GitHub issue #565)
</content>
</entry>
<entry>
<title>Merge branch 'busybox' into merge</title>
<updated>2026-02-12T12:58:38+00:00</updated>
<author>
<name>Ron Yorston</name>
<email>rmy@pobox.com</email>
</author>
<published>2026-02-12T12:50:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/busybox-w32/commit/?id=de7b34e8c779d8baca5abba1394284e0b6e87dc6'/>
<id>urn:sha1:de7b34e8c779d8baca5abba1394284e0b6e87dc6</id>
<content type='text'>
</content>
</entry>
<entry>
<title>ash: fix help builtin and tab completion of builtins</title>
<updated>2026-02-09T10:53:01+00:00</updated>
<author>
<name>Ron Yorston</name>
<email>rmy@pobox.com</email>
</author>
<published>2026-02-09T10:53:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/busybox-w32/commit/?id=610e1f9ff848d6b07540dc86d12708991786a7d1'/>
<id>urn:sha1:610e1f9ff848d6b07540dc86d12708991786a7d1</id>
<content type='text'>
Commit 56143ea63 (ash: code shrink: eliminate pstrcmp1()) changed
the layout of struct builtincmd so the name member points to the
start of the name, not the flag in the first element of the string.
This broke the help builtin and tab completion of builtins.

Remove the unnecessary '+ 1' in ash_command_name() and helpcmd().

This patch has been submitted upstream.
</content>
</entry>
<entry>
<title>Merge branch 'busybox' into merge</title>
<updated>2026-02-09T10:52:28+00:00</updated>
<author>
<name>Ron Yorston</name>
<email>rmy@pobox.com</email>
</author>
<published>2026-02-09T10:52:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/busybox-w32/commit/?id=e23652908aa6419566a4f8c783e8e5595d4d91d4'/>
<id>urn:sha1:e23652908aa6419566a4f8c783e8e5595d4d91d4</id>
<content type='text'>
</content>
</entry>
<entry>
<title>*: use is_prefixed_with() where appropriate</title>
<updated>2026-02-07T00:10:55+00:00</updated>
<author>
<name>Denys Vlasenko</name>
<email>vda.linux@googlemail.com</email>
</author>
<published>2026-02-07T00:10:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/busybox-w32/commit/?id=9693daaaef1b996d0efc5338cf3707bb6205fee9'/>
<id>urn:sha1:9693daaaef1b996d0efc5338cf3707bb6205fee9</id>
<content type='text'>
function                                             old     new   delta
resume_main                                          560     556      -4
uuidcache_check_device                               107     101      -6
ntp_init                                            1005     997      -8
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/3 up/down: 0/-18)             Total: -18 bytes

Signed-off-by: Denys Vlasenko &lt;vda.linux@googlemail.com&gt;
</content>
</entry>
<entry>
<title>*: use xasprintf_inplace() in more places</title>
<updated>2026-02-06T10:19:11+00:00</updated>
<author>
<name>Denys Vlasenko</name>
<email>vda.linux@googlemail.com</email>
</author>
<published>2026-02-06T10:19:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/busybox-w32/commit/?id=9b2a50efe227048e3d5029148619d5cc5ad089be'/>
<id>urn:sha1:9b2a50efe227048e3d5029148619d5cc5ad089be</id>
<content type='text'>
function                                             old     new   delta
.rodata                                           107009  107018      +9
parse_stream                                        3075    3069      -6
buffer_print                                         612     603      -9
expand_args                                          159     144     -15
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/3 up/down: 9/-30)             Total: -21 bytes

Signed-off-by: Denys Vlasenko &lt;vda.linux@googlemail.com&gt;
</content>
</entry>
<entry>
<title>Merge branch 'busybox' into merge</title>
<updated>2026-02-04T14:11:59+00:00</updated>
<author>
<name>Ron Yorston</name>
<email>rmy@pobox.com</email>
</author>
<published>2026-02-04T14:11:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/busybox-w32/commit/?id=7d8a39ae7f059a3b878a259a1366fe588f6d5753'/>
<id>urn:sha1:7d8a39ae7f059a3b878a259a1366fe588f6d5753</id>
<content type='text'>
</content>
</entry>
<entry>
<title>ash: remove unnecessary conditional compilation</title>
<updated>2026-01-30T08:47:45+00:00</updated>
<author>
<name>Ron Yorston</name>
<email>rmy@pobox.com</email>
</author>
<published>2026-01-30T08:47:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/busybox-w32/commit/?id=7f32f25ba1652f799e9e7ffe756dcee08c710e70'/>
<id>urn:sha1:7f32f25ba1652f799e9e7ffe756dcee08c710e70</id>
<content type='text'>
Additional support for background jobs was added in commits
010abea6f and 1403d81c4.

The condition ENABLE_PLATFORM_POSIX || JOBS_WIN32 in showjob()
is always true.  The conditional compilation can be removed.
</content>
</entry>
<entry>
<title>ash: don't skip exec() if std streams are invalid</title>
<updated>2026-01-29T08:02:09+00:00</updated>
<author>
<name>Ron Yorston</name>
<email>rmy@pobox.com</email>
</author>
<published>2026-01-29T08:02:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/busybox-w32/commit/?id=4c41b562c07c20c6df03d0cda3e28bda3295ffba'/>
<id>urn:sha1:4c41b562c07c20c6df03d0cda3e28bda3295ffba</id>
<content type='text'>
This didn't produce the expected output when run from ash:

   ash -c "echo abc | sed s/a/x/" &lt;&amp;-

In general, if the last command in the pipe read from stdin the
command didn't work; if it read from file descriptor 0 (e.g. cat)
it did.

Closing a file descriptor caused the corresponding stream to
become invalid.  For performance reasons the shell in busybox-w32
runs applets without an exec(), but that results in their seeing
the invalid stream from their parent.

Avoid the problem by calling exec() in such cases.  This causes the
child process to get a new stdin stream initialised from the file
descriptor.  The test also applies to stdout and stderr.  There's
no discernable affect on performance when running the test suite.

Adds 64-96 bytes.

(GitHub issue #558)
</content>
</entry>
</feed>
