<feed xmlns='http://www.w3.org/2005/Atom'>
<title>busybox-w32/include/mingw.h, branch mount_point</title>
<subtitle>A mirror of https://github.com/rmyorston/busybox-w32.git
</subtitle>
<id>https://git.lua4.win/busybox-w32/atom?h=mount_point</id>
<link rel='self' href='https://git.lua4.win/busybox-w32/atom?h=mount_point'/>
<link rel='alternate' type='text/html' href='https://git.lua4.win/busybox-w32/'/>
<updated>2026-06-15T11:42:54+00:00</updated>
<entry>
<title>win32: Unix-like support for volume mounts</title>
<updated>2026-06-15T11:42:54+00:00</updated>
<author>
<name>Ron Yorston</name>
<email>rmy@pobox.com</email>
</author>
<published>2026-06-15T11:26:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/busybox-w32/commit/?id=862f87a8725d5cc9693021066869e94512d5d8e1'/>
<id>urn:sha1:862f87a8725d5cc9693021066869e94512d5d8e1</id>
<content type='text'>
Add code to distinguish between volume mount points and junctions.
Volume mount points are to be treated like directries while
junctions are like symlinks.

Update the 'mntent' functions to scan drive letters first, then
volume names and their associated mount points.  By default the
filesystem is returned as a drive letter, if possible, though
the volume name is also returned.

The function 'find_mount_point()' has been updated to use the
new 'mntent' routines.

Adds 772-803 bytes.

Signed-off-by: Ron Yorston &lt;rmy@pobox.com&gt;
</content>
</entry>
<entry>
<title>win32: extend handling of virtual disks</title>
<updated>2026-06-08T13:02:15+00:00</updated>
<author>
<name>Ron Yorston</name>
<email>rmy@pobox.com</email>
</author>
<published>2026-06-08T13:02:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/busybox-w32/commit/?id=1313ab2691128c2255ac1ccdeea7021dbb9b4fe4'/>
<id>urn:sha1:1313ab2691128c2255ac1ccdeea7021dbb9b4fe4</id>
<content type='text'>
Commit 62e4c5d29 (win32: special treatment for virtual hard disk)
added special treatment for mount points associated with virtual
hard disks.  One statement made there was incorrect:  a VHD without
a drive letter containing no files *does* have a '.' directory.
The error message for this case was misleading.

The changes made to handle VHDs were insufficiently general:

- lstat(2) only resolved symlinks for the explicit path '.'.
  It should also do so for paths of the form 'path/to/.'.

- opendir(3) only generated entries for '.' and '..' directories
  when FindFirstFileA() failed for the path '.'.  It should also
  do so for any path which resolves to a volume mount point.

Make the necessary changes.

Adds 64-80 bytes.

(GitHub issue #597)

Signed-off-by: Ron Yorston &lt;rmy@pobox.com&gt;
</content>
</entry>
<entry>
<title>win32: allow stat(2) to skip costly check for execute</title>
<updated>2026-05-18T06:55:54+00:00</updated>
<author>
<name>Ron Yorston</name>
<email>rmy@pobox.com</email>
</author>
<published>2026-05-18T06:55:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/busybox-w32/commit/?id=1fb1a65064748a54fba4bf4b5e8700f8e61f003f'/>
<id>urn:sha1:1fb1a65064748a54fba4bf4b5e8700f8e61f003f</id>
<content type='text'>
If 'ls' is invoked without the '-l' option (or something that's
equivalent) and colour output isn't required, there's no need to
perform the expensive check for execute permission.

Allow 'ls' to inform stat(2) not to call has_exec_format().  This
has been combined with the existing mechanism to enable counting
subdirectories.

With this change the command 'ls | wc -l' used in issue #589
doesn't perform the test which upset Windows' anti-malware thing.

Adds 32-48 bytes.

(GitHub issue #589)
</content>
</entry>
<entry>
<title>win32: add FAST_FUNC annotations</title>
<updated>2026-05-04T10:51:00+00:00</updated>
<author>
<name>Ron Yorston</name>
<email>rmy@pobox.com</email>
</author>
<published>2026-05-04T10:51:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/busybox-w32/commit/?id=f26b970e4d22e1b2e3ca6209c3412fa0f683d953'/>
<id>urn:sha1:f26b970e4d22e1b2e3ca6209c3412fa0f683d953</id>
<content type='text'>
I've been far too lax in applying FAST_FUNC annotations.  These
can make function calls smaller and faster, but only on 32-bit
systems and for non-static, non-variadic functions with non-void
arguments.

Saves 4680 bytes in the 32-bit build; 64-bit builds are unaffected.
</content>
</entry>
<entry>
<title>win32: improve urandom/zero device handling</title>
<updated>2026-04-26T19:49:26+00:00</updated>
<author>
<name>Ron Yorston</name>
<email>rmy@pobox.com</email>
</author>
<published>2026-04-26T19:49:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/busybox-w32/commit/?id=164015bc98835934ed6437107d874e6987ad9418'/>
<id>urn:sha1:164015bc98835934ed6437107d874e6987ad9418</id>
<content type='text'>
Rearrange the code to avoid a superfluous process creation.

Saves 16 bytes in the 64-bit build, adds 24 in the 32-bit.
</content>
</entry>
<entry>
<title>ash: allow 'times' built-in to report process timing</title>
<updated>2026-04-12T10:49:29+00:00</updated>
<author>
<name>Ron Yorston</name>
<email>rmy@pobox.com</email>
</author>
<published>2026-04-12T10:49:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/busybox-w32/commit/?id=333c65ca71f1acb2cc6cd3920a346bb8ddf82dec'/>
<id>urn:sha1:333c65ca71f1acb2cc6cd3920a346bb8ddf82dec</id>
<content type='text'>
Move existing code which obtains process execution times into a
separate function.  Use it to allow times(2) to report execution
times for the current process, though not child execution times.

Change TICKS_PER_SECOND from 100 to 1000 to increase the displayed
resolution of process times (though the measured resolution may
well be less than this).

Adds 48-80 bytes.

(GitHub issue #574)
</content>
</entry>
<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>win32: add support for /dev/std{in,out,err}</title>
<updated>2026-02-02T15:53:01+00:00</updated>
<author>
<name>Ron Yorston</name>
<email>rmy@pobox.com</email>
</author>
<published>2026-02-02T15:53:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/busybox-w32/commit/?id=8e6a6312552343aec7f5cde795ef0a11ef83b8ff'/>
<id>urn:sha1:8e6a6312552343aec7f5cde795ef0a11ef83b8ff</id>
<content type='text'>
Allow applets to open the "files" /dev/stdin, /dev/stdout and
/dev/stderr.  The 'stat' and 'ls' applets pretend they exist.

Adds 48-56 bytes.
</content>
</entry>
<entry>
<title>win32: avoid failure when localtime() argument is out of range</title>
<updated>2025-11-26T12:56:11+00:00</updated>
<author>
<name>Ron Yorston</name>
<email>rmy@pobox.com</email>
</author>
<published>2025-11-26T12:56:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/busybox-w32/commit/?id=3b2f7ff1e0733c8224d0c6a0632abbbb87e8db91'/>
<id>urn:sha1:3b2f7ff1e0733c8224d0c6a0632abbbb87e8db91</id>
<content type='text'>
The implementation of localtime(3) in the Microsoft Windows
runtime only accepts arguments between the Unix epoch (1970)
and either 2038 or 3000 for 32-bit or 64-bit systems respectively.
For values outside those limits it returns a NULL pointer.

Unfortunately, upstream BusyBox hardly ever bothers to check the
return value.  Thus, when a call to stat(2) returned an all-zero
FILETIME for a file, the 'stat' applet failed.  An all-zero FILETIME
represents a date in 1600, which is clearly before the Unix epoch.

Add a wrapper to localtime(3) which detects an out-of-range value
and returns a valid 'struct tm' for the Unix epoch.  This is easier
than adding checks on the return value of every call to localtime(3).

Adds 32-48 bytes.

(GitHub issue #548)
</content>
</entry>
<entry>
<title>win32: allow use of /dev/tty</title>
<updated>2025-11-10T11:33:33+00:00</updated>
<author>
<name>Ron Yorston</name>
<email>rmy@pobox.com</email>
</author>
<published>2025-11-10T11:33:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/busybox-w32/commit/?id=f53dbcb8edbcfdad1721d0f5c9e8a16d54e983dc'/>
<id>urn:sha1:f53dbcb8edbcfdad1721d0f5c9e8a16d54e983dc</id>
<content type='text'>
Treat /dev/tty as an alias for Windows' 'con' device.  The code
is similar to that used for /dev/null.

Adds 24-48 bytes.

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