| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Now that a binary with a UTF-8 manifest can run on Windows XP
it's possible to configure a build which supports Unicode on
Windows 10+ but which still runs on legacy systems.
- Add the config file mingw32w_defconfig. This is a 32-bit build
with the UTF-8 manifest which also runs on legacy systems.
- A new config option, FEATURE_FAIL_IF_UTF8_MANIFEST_UNSUPPORTED,
allows the check for legacy systems to be skipped.
- An incompatibility with Windows XP in writeCon_utf8() has been
fixed.
See this GitHub issue for details:
https://github.com/skeeto/w64devkit/issues/315
|
| |
|
|
|
|
|
|
|
|
|
| |
Convert the icons to PNG format (by simply exporting them from
GIMP and selecting the 'Compressed (PNG)' chackbox). Allow these
to be selected instead of ICO format at build time.
Use the PNG icons by default in the Unicode and aarch64 builds.
Saves 26KB in those cases.
(GitHub PR #540)
|
| |
|
|
|
|
|
|
|
| |
Use the Gnulib implementation of flock(2) to allow the flock
applet to be enabled.
Costs 900-984 bytes.
(GitHub issue #528)
|
| |
|
|
|
|
|
|
|
| |
Use the (somewhat ancient) Microsoft RtlGenRandom() function to
provide random data for /dev/urandom.
Saves 176-240 bytes.
(GitHub issue #519)
|
| |
|
|
|
|
|
|
| |
The default configuration for Windows on ARM now:
- omits unwind tables;
- supports Unicode.
|
| | |
|
| |
|
|
|
|
| |
The ARM64 build had native Windows support for TLS by default,
but not checksums. Add this, so the ARM 64 build matches the
Unicode build.
|
| |
|
|
|
| |
Update the default build configurations to enable the native TLS
library in the 64-bit Unicode and ARM64 builds.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Implement a minimal stty applet for Windows.
- Display and set terminal rows and columns
- Enable/disable raw/cooked mode
- Enable/disable echo mode
- Implement 'stty sane' to reset raw/cooked/echo
Adds 2120-2304 bytes.
(GitHub issue #58)
|
| |
|
|
| |
This reverts commit 7e164c132659f536e7ceae1d22cd1428e91adc51.
|
| |
|
|
|
|
|
|
|
|
|
| |
The -a, -i and -B options are controlled by FEATURE_DF_FANCY in
the build-time configuration. Enable this by default in the
Windows builds, but with -i disabled as it provides no useful
information.
Adds 144-168 bytes.
(GitHub issue #503)
|
| |
|
|
|
|
|
|
| |
SSL was broken by the recent introduction of the Windows crypto
library. Disable its use until this can be fixed. Only the 64-bit
Unicode build is affected.
(GitHub PR #498)
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Add a new feature to libbb, FEATURE_USE_CNG_API, which enables the
use of the Cryptography API: Next Generation library to calculate
checksums. It is disabled by default except in the mingw64u default
config, as the API requires Windows 10+ to function. Usage of this
API provides a size benefit and delegates hardware optimizations to
the operating system cryptography library.
Based on GitHub PR #498 by rfl890.
Saves 4064 bytes in the mingw64u case.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Commit 9b80b903c7 (build system: stop .eh_frame generation) added
compiler flags to prevent unwind tables being included in the
binary. BusyBox doesn't normally require such tables and the size
of the binary was much reduced.
Windows' Control Flow Guard feature needs unwind tables. Without
them calls to longjmp(3), widely used in BusyBox, fail.
Add a configuration option to control whether or not unwind tables
are included.
(GitHub issue #495)
|
| |
|
|
|
|
|
| |
The default size of the line edit buffer is 1024 bytes which was
found to be too restrictive. Increase it to 8192 bytes.
(GitHub issue #429)
|
| |\ |
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
I developed this application to test the Linux kernel series [1]. As
described in it I could not use the iproute2 package since the
microcontroller is without MMU.
function old new delta
do_set_can - 920 +920
packed_usage 34645 34908 +263
get_float_1000 - 164 +164
.rodata 105427 105539 +112
do_iplink 1313 1381 +68
------------------------------------------------------------------------------
(add/remove: 2/0 grow/shrink: 3/0 up/down: 1527/0) Total: 1527 bytes
cc: Marc Kleine-Budde <mkl@pengutronix.de>
[1] https://marc.info/?l=linux-netdev&m=167999323611710&w=2
Signed-off-by: Dario Binacchi <dario.binacchi@amarulasolutions.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Now that POSIX.1-2024 has been released we can replace all
references to the 202X draft standard with 2024.
Make this change throughout the code and testsuite.
The pragma 'posix_2024' has been added. 'posix_202x' remains as
an alias for the same.
The 2024 standard is enforced by default in POSIX mode.
|
| | |
| |
| |
| |
| |
| |
| |
| |
| | |
The default POSIX level to be enforced in strict mode is now a
configuration option.
Print details of supported POSIX levels in the usage message.
Adds 56-64 bytes.
|
| | |
| |
| |
| |
| |
| |
| |
| | |
Allow the default history size (used if HISTFILESIZE isn't set)
to be configured at build time. This may be less than or equal
to the standard history size.
(GitHub issue #411)
|
| | |
| |
| |
| |
| |
| |
| | |
The upstream default history size is 255. Increase it to 1023
for default busybox-w32 builds.
(GitHub issue #411)
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The web server in BusyBox has an optional feature to allow pages
with a given suffix to be processed by a script interpreter: PHP,
for example.
Enable this in the busybox-w32 build.
Costs 256-320 bytes.
(GitHub issue #266)
|
| | |
| |
| |
| |
| |
| |
| | |
The top-level Makefile hardcoded the host and cross compiler name
to "gcc". Make it possible to set different values either on the
command line (make CROSS_COMPILER=clang) or in the configuration
file.
|
| | |
| |
| |
| |
| |
| | |
Add a default configuration for ARM64. This just changes the cross
toolchain prefix and disables CONFIG_STATIC_LIBGCC. The latter is
harmless but results in many warnings.
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The upstream code uses fork/exec when running a CGI process.
Emulate this by:
- Spawning a child httpd process with the special '-I 0' option,
along with the options provided on the server command line. This
sets up the proper state then calls the cgi_handler() function.
- The cgi_handler() function fixes the pipe file descriptors and
starts another child process to run the CGI script.
These processes are detached from the console on creation. When
spawn() functions are run in P_DETACH mode they don't connect to
the standard file descriptors. Normally this doesn't matter but
the process which runs the CGI scripts needs to inherit the pipe
endpoints. The create_detached_process() function handles this.
See:
https://github.com/rprichard/win32-console-docs/blob/master/README.md
Adds about 2.9Kb to the size of the binary.
(GitHub issue #266)
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The environment variable BB_OVERRIDE_APPLETS provides control over
which applets are preferred in standalone shell mode. Allow a
similar list to be hardcoded in the binary with the OVERRIDE_APPLETS
configuration string.
The environment variable is checked first. If it doesn't override
the applet the hardcoded string is then checked too.
The default for OVERRIDE_APPLETS is an empty string. In this case
the size and behaviour of the binary is unchanged.
|
| |\| |
|
| | |
| |
| |
| |
| | |
Signed-off-by: Christian Franke <christian.franke@t-online.de>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Add shell options:
- 'nohiddenglob' excludes files with the hidden attribute from
globbing
- 'nohidsysglob' excludes files with the hidden and system attributes
from globbing
If both options are enabled 'nohiddenglob' takes precedence.
These options also affect tab completion.
Files that are hidden because they start with a period aren't
affected (unless they also have the hidden attribute).
Costs 160-208 bytes.
(GitHub issue #367)
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The default configurations now include the provided standard or
UTF-8 manifest.
This works best if the build toolchain doesn't provide a default
manifest (which Fedora and w64devkit don't, by default).
If the toolchain does have a default manifest some bloat will
result.
(GitHub issue #366)
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The UTF-8 manifest has been updated to include features from the
standard application manifest.
Include a copy of the standard application manifest for toolchains
that don't provide one.
(GitHub issue #366)
|
| | | |
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Previously, the unicode build required console (out) codepage of UTF8
in order for unicode output to be printed correctly - e.g. at the
shell command prompt or the output of `ls` for unicode file names.
This is inconvenient, because by default it's not UTF8, and so unless
the user invoked 'chcp 65001' - by default unicode output didn't work.
This feature (which is now enabled for the unicode build) makes it
print unicode output correctly regardless of the console CP, by
using a new stream-conversion funcion from UTF8 chars to wchar_t,
and writing those using WriteConsoleW.
If the console CP happens to be UTF8 - this conversion is disabled.
We could have instead changed the console CP to UTF8, but that's
a slippery slope, and some old program which expect the default CP
might get broken, so achieving the same result without touching
the console CP is hopefully better.
|
| | | |
|
| | | |
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Commit 93a63809f (win32: add support for the euro currency symbol)
made various changes to enable support for the euro symbol.
One of these changes allows the euro to be entered from the console
even if the current code page doesn't support it. This is probably
of limited use: the symbol can be entered but won't be displayed
correctly.
Move this capability into a separate configuration option,
FEATURE_EURO_INPUT, which is disabled by default.
Saves 48-64 bytes in the new default case.
(GitHub issue #335)
|
| | |
| |
| |
| |
| |
| | |
For some reason the progress bar in wget has never been enabled.
Costs 1536-1600 bytes.
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
No further problems with CRLF handling have been reported. Remove
the configuration option that allowed some recent changes to be
turned off.
Also, prevent some WIN32 code from being included in the POSIX
build. The faulty code is from commit 64c8f5f3d (ash: add support
for INT trap).
These changes don't alter the default WIN32 build.
|
| | |
| |
| |
| |
| |
| |
| |
| |
| | |
The cdrop and pdrop variants don't require the binary to include
a shell. Removing this dependency makes it possible to build
cdrop/pdrop as a much smaller standalone binaries.
Update the default configuration to build a standalone make binary
to exclude drop/cdrop/pdrop.
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Add cdrop and pdrop applets as aliases for drop. If a command
isn't specified these use cmd.exe and PowerShell instead of the
BusyBox shell.
This makes it possible to choose the default shell used for SSH
connections even in older versions of OpenSSH that don't support
the DefaultShellArguments registry key.
Note that to get cmd.exe to run a command rather than an interactive
shell it's necessary to set the DefaultShellCommandOption registry
key to '/c'.
Costs 248-272 bytes.
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Remove the runuser applet, leaving only drop. Move drop from
util-linux to miscutils.
A command of the form 'drop -c command' causes the BusyBox shell
to be used, just like 'drop' without any arguments. A simple
OpenSSH configuration with 'drop.exe' as DefaultShell and no
DefaultShellArguments now works both for interactive login and
to run a command. This is useful for older versions of OpenSSH
which don't support DefaultShellArguments.
Saves 208-232 bytes.
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Add a cut down, Windows-specific implementation of `runuser` from
util-linux.
This allows elevated privileges to be dropped when running in an
SSH session. It also works when using `su` or starting busybox-w32
'as administrator'.
There are complications:
- The method used to drop privileges leaves the access token in the
TokenIsElevated state. Detecting this is likely to be fragile.
- The unprivileged shell is started by CreateProcessAsUserA(). In
older versions of Windows this has to be loaded dynamically.
Adds about 900 bytes.
(GitHub issue #240)
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Add the environment variable BB_TERMINAL_MODE as a more general way
of controlling console/terminal mode setting. The default remains
unchanged: use virtual terminal mode for output if possible but
fall back to the console API with emulated ANSI escape sequences.
Currently valid settings are:
0 Force use of console mode
1 Force use of virtual terminal mode for output
5 Prefer virtual terminal mode for output, fall back to console
Other values won't do anything useful until code elsewhere has been
updated.
BB_SKIP_ANSI_EMULATION remains available for backwards compatibility.
If both variables are set BB_TERMINAL_MODE takes precedence.
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
As noted in commit 2d848eba5 (ash: fix CRLF handling) all CRs are
removed when scripts are read. Allow an alternative approach
(configurable at build-time, enabled by default):
- Do not strip CRs from input.
- Treat CR as similar to space or tab in base syntax mode.
- Adjust pgetc_eatbnl() to handle backslash-CRLF in the same way
as backslash-LF.
With these changes scripts containing CRLF line endings are more
likely to work.
Adds 48-56 bytes.
(GitHub issue #285)
|
| | |
| |
| |
| |
| | |
This allows additional flexibility when another 'make' program is
present.
|
| | |
| |
| |
| |
| |
| | |
Add a configuration that just includes make and a shell.
Add 'pdpmake' as an alias for 'make'.
|
| | |
| |
| |
| |
| |
| | |
The sleep applet can call xfunc_die() in a variety of circumstances.
This makes the code unsuitable for use as a shell builtin. Disable
it in the default configuration.
|
| | |
| |
| |
| |
| |
| |
| |
| |
| | |
Upstream BusyBox has supported fractional arguments to 'read -t'
since 2017. For some reason it was never enabled in busybox-w32.
Costs 48-80 bytes.
(GitHub issue #269)
|
| | |
| |
| |
| | |
The new 'tree' applet uses scandir(3) and has been disabled by default.
|
| | |
| |
| |
| |
| |
| |
| |
| |
| | |
This is an experimental implementation of make for busybox-w32,
based on my public domain POSIX make:
https://frippery.org/make/
(GitHub issue #44)
|