<feed xmlns='http://www.w3.org/2005/Atom'>
<title>busybox-w32/win32/mingw.c, branch cron_changes</title>
<subtitle>A mirror of https://github.com/rmyorston/busybox-w32.git
</subtitle>
<id>https://git.lua4.win/busybox-w32/atom?h=cron_changes</id>
<link rel='self' href='https://git.lua4.win/busybox-w32/atom?h=cron_changes'/>
<link rel='alternate' type='text/html' href='https://git.lua4.win/busybox-w32/'/>
<updated>2026-05-04T10:51:00+00:00</updated>
<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: disable urandom/zero devices if dd is disabled</title>
<updated>2026-04-27T07:40:06+00:00</updated>
<author>
<name>Ron Yorston</name>
<email>rmy@pobox.com</email>
</author>
<published>2026-04-27T07:40:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/busybox-w32/commit/?id=750a5e863cc04584ba50722d8b003e279cd67d24'/>
<id>urn:sha1:750a5e863cc04584ba50722d8b003e279cd67d24</id>
<content type='text'>
Support for /dev/urandom and /dev/zero relies on having a working
dd.  If the dd applet is disabled attempts to access them should
fail.

Theoretically a third-party dd utility could also work, but let's
not encourage that sort of heresy.
</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>win32: expose /dev/urandom and /dev/zero</title>
<updated>2026-04-26T09:59:27+00:00</updated>
<author>
<name>Ron Yorston</name>
<email>rmy@pobox.com</email>
</author>
<published>2026-04-26T09:59:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/busybox-w32/commit/?id=354d8e9e6b7367f081cfa57130fea4abf23f9bb3'/>
<id>urn:sha1:354d8e9e6b7367f081cfa57130fea4abf23f9bb3</id>
<content type='text'>
Previously the special devices /dev/urandom and /dev/zero could
only be used via the 'dd' applet.  They were also used internally
by some applets.

Expose /dev/urandom and /dev/zero so they can be used as file
arguments to applets and a source of redirections in the shell.
They're also now visible to 'stat' and 'ls', but only if given
as an explicit argument.

Adds 122-144 bytes.

(GitHub issues #98, #282)
</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>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>mkdir: correctly report directory creation</title>
<updated>2025-11-22T09:22:28+00:00</updated>
<author>
<name>Ron Yorston</name>
<email>rmy@pobox.com</email>
</author>
<published>2025-11-22T09:22:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/busybox-w32/commit/?id=18ad143f86ded661ae4d2bef0e3a36490e786963'/>
<id>urn:sha1:18ad143f86ded661ae4d2bef0e3a36490e786963</id>
<content type='text'>
It was found that 'mkdir -p --verbose C:/' incorrectly reported
that 'C:/' was created.

Commit 0e0b5e9ff8 (mingw.c: ignore EACCES from mkdir if directory
exists) fixed a failure to create directories but caused the
`mkdir` applet to issue the wrong diagnostic.

The underlying problem is in the Windows runtime implementation
of _mkdir(): it can return the wrong errno in some cases, EACCES
instead of EEXIST.

Having the mkdir(2) wrapper return the correct errno should fix
both the directory creation and verbose diagnostic problems.

The website referenced in the previous commit is no longer
available.  archive.org has a copy:

   https://web.archive.org/web/20150224075238/http://www.apijunkie.com/APIJunkie/blog/post/2009/12/22/_mkdir-C-runtime-library-function-might-return-unexpected-error-values.aspx

(GitHub issue #546)
</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>
<entry>
<title>win32: use RtlGenRandom for /dev/urandom</title>
<updated>2025-10-09T06:49:58+00:00</updated>
<author>
<name>Ron Yorston</name>
<email>rmy@pobox.com</email>
</author>
<published>2025-10-09T06:49:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/busybox-w32/commit/?id=255e7ea4e2a0e3d28c0abf2750f42713eff711d7'/>
<id>urn:sha1:255e7ea4e2a0e3d28c0abf2750f42713eff711d7</id>
<content type='text'>
Use the (somewhat ancient) Microsoft RtlGenRandom() function to
provide random data for /dev/urandom.

Saves 176-240 bytes.

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