Denys Vlasenko
e33bd4aaa2
libbb: use narrow isqrt() when 64-bit one is not needed (only "factor" uses it)
...
function old new delta
isqrt_ull - 84 +84
create_J 1809 1808 -1
isqrt 106 38 -68
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 0/2 up/down: 84/-69) Total: 15 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2026-02-04 19:47:11 +01:00
Martin Storsjö
993d416d02
md5/sha1sum: Honor the -b flag in the output
...
The output of md5sum/sha1sum contains a character to indicate
what mode was used to read the file - '*' for binary, and ' '
for text or where binary is insignificant.
This flag character makes a difference for the ffmpeg testsuite.
This testsuite contains a number of reference files (e.g. [1]),
containing the expected md5sum output for those files, which is
checked verbatim.
By making busybox's md5sum honor this flag in the output,
ffmpeg's testsuite can run successfully on top of busybox.
The flag is only partially implemented; in coreutils md5sum,
a later "-t" option overrides an earlier "-b" option. Here,
just check if a "-b" option was specified or not. Neither
flag affects how the files actually are read.
[1] 894da5ca7d/tests/ref/acodec/flac
Signed-off-by: Martin Storsjö <martin@martin.st>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2026-01-18 03:09:52 +01:00
Denys Vlasenko
26e9afe22d
coreutils: fixes for coreutils/id_test.sh script
...
Patch from Tito
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2026-01-18 01:37:53 +01:00
Denys Vlasenko
b8cf048880
dd: fix overflow for very large count/seek/skip values
...
function old new delta
xatoull_range_sfx - 49 +49
dd_main 1607 1640 +33
bb_banner 47 46 -1
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 1/1 up/down: 82/-1) Total: 81 bytes
Signed-off-by: Sertonix <sertonix@posteo.net>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2025-11-08 07:42:34 +01:00
Denys Vlasenko
d549c8be86
ls: restore functionality of --color
...
Since commit 551bfdb97 (ls: implement -q, fix -w0, reduce startup
time) the '--color' option behaves as though the default argument
'always' had been specified.
This is due to an explicit short option for '--color' being given,
but without specifying that an argument is expected.
function old new delta
.rodata 106027 106029 +2
Signed-off-by: Ron Yorston <rmy@pobox.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2025-11-08 07:42:34 +01:00
Denys Vlasenko
a0017a5b50
cp: fix cp -aT overwriting symlink to directories
...
busybox cp refuses to overwrite another symlink to a directory due to
an incorrect stat() call that should be lstat(). When using -T, we want
to consider the target argument directly without resolving symlinks.
function old new delta
cp_main 496 514 +18
Signed-off-by: Dominique Martinet <dominique.martinet@atmark-techno.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2025-10-07 10:05:08 +02:00
Denys Vlasenko
2d7ff2c909
ls: don't do unnecessary tty operations when called from ftpd
...
function old new delta
ls_main 660 690 +30
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2025-08-01 18:16:46 +02:00
Denys Vlasenko
4f43bda947
ls: code shrink
...
Looks like gcc can figure this out by itself, but let's be explicit
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2025-08-01 12:10:22 +02:00
Denys Vlasenko
4f3a56dc12
ls: fix -Q to match GNU
...
function old new delta
print_name 137 229 +92
display_files 375 402 +27
c_escape_conv_str00 - 24 +24
display 1476 1485 +9
conv_str 33 - -33
------------------------------------------------------------------------------
(add/remove: 2/1 grow/shrink: 3/0 up/down: 152/-33) Total: 119 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2025-08-01 01:02:43 +02:00
Denys Vlasenko
bb18473216
ls: lack of -q should not suppress -Q
...
function old new delta
print_name 134 137 +3
display_files 374 375 +1
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/0 up/down: 4/0) Total: 4 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2025-07-31 19:24:08 +02:00
Denys Vlasenko
551bfdb97f
ls: implement -q, fix -w0, reduce startup time
...
function old new delta
ls_main 598 660 +62
ls_longopts - 47 +47
G_isatty - 36 +36
print_name 102 134 +32
display_files 358 374 +16
.rodata 105829 105833 +4
vgetopt32 1330 1317 -13
static.ls_longopts 47 - -47
------------------------------------------------------------------------------
(add/remove: 2/1 grow/shrink: 4/1 up/down: 197/-60) Total: 137 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2025-07-31 18:35:11 +02:00
Ladislav Michl
427f808732
date: return failure exit code on clock_settime error
...
Signed-off-by: Ladislav Michl <ladis@linux-mips.org>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2025-07-30 19:44:39 +02:00
Andy Knowles
dcbb69e0a5
sha384sum: new applet
...
function old new delta
sha512384_end - 198 +198
packed_usage 35021 35134 +113
init384 - 80 +80
sha384_begin - 19 +19
sha384_end - 10 +10
applet_names 2823 2833 +10
md5_sha1_sum_main 501 507 +6
sha3_end 54 59 +5
applet_main 1628 1632 +4
show_usage_if_dash_dash_help 79 72 -7
hash_file 358 344 -14
sha512_end 197 10 -187
------------------------------------------------------------------------------
(add/remove: 4/0 grow/shrink: 5/3 up/down: 445/-208) Total: 237 bytes
Signed-off-by: Andy Knowles <aknowles@galleonec.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2025-07-30 18:39:46 +02:00
Denys Vlasenko
4b1f1da358
df: -k overrides block size to 1k even if $POSIXLY_CORRECT
...
function old new delta
df_main 1060 1070 +10
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2025-07-01 19:26:50 +02:00
Denys Vlasenko
14f57f5357
cut: code shrink
...
move "linenum" manipulations to the one place where it is used.
function old new delta
cut_main 1373 1360 -13
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-12-21 00:43:45 +01:00
Denys Vlasenko
1ea89fa98a
cut: code shrink
...
This change eliminates one temporary:
- if (dcount++ < cut_list[cl_pos].startpos)
+ dcount++;
+ if (dcount <= cut_list[cl_pos].startpos)
function old new delta
cut_main 1402 1373 -29
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-12-21 00:24:30 +01:00
Denys Vlasenko
b03f5162ac
cut: fix up -D/-s behavior with -F
...
function old new delta
cut_main 1388 1402 +14
packed_usage 34934 34933 -1
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/1 up/down: 14/-1) Total: 13 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-12-20 22:12:33 +01:00
Denys Vlasenko
dd40b40ee5
cut: remove unnecessary initialization of regmatch_t
...
function old new delta
cut_main 1404 1388 -16
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-12-20 21:46:32 +01:00
Denys Vlasenko
e2304d47a9
cut: shorten error messages on bad syntax even more
...
$ cut -s -b3
cut: -s requires -f or -F
$ cut -d@ -b3
cut: -d DELIM requires -f or -F
function old new delta
static.requires_f - 19 +19
static._op_on_field 32 - -32
------------------------------------------------------------------------------
(add/remove: 1/1 grow/shrink: 0/0 up/down: 19/-32) Total: -13 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-12-16 01:12:17 +01:00
Denys Vlasenko
ee8b94acbf
cut: shorten error messages on bad syntax
...
We don't need to mimic GNU cut error messages.
$ cut -d@ -b3
cut: -d DELIM makes sense only with -f or -F
$ cut -s -b3
cut: -s makes sense only with -f or -F
function old new delta
static._op_on_field 31 32 +1
.rodata 105659 105598 -61
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/1 up/down: 1/-61) Total: -60 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-12-16 00:53:51 +01:00
Denys Vlasenko
0bd84c9472
cut: terminate cut_list[] so that we don't need "size of the array" variable
...
function old new delta
cut_main 1410 1404 -6
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-12-16 00:32:57 +01:00
Denys Vlasenko
ba9651b803
cut: we can't get empty cut_list[], remove the check for that
...
function old new delta
.rodata 105685 105659 -26
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-12-16 00:19:43 +01:00
Denys Vlasenko
e8622f0d85
cut: disallow -f '' and -f '-'
...
function old new delta
cut_main 1391 1410 +19
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-12-15 12:27:33 +01:00
Denys Vlasenko
b25ea3f156
cut: fix -F n-m to match toybox
...
function old new delta
cut_main 1339 1391 +52
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-12-14 13:58:49 +01:00
Denys Vlasenko
d48400d8fb
cut: simplify getopt32 code
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-12-13 20:35:28 +01:00
Denys Vlasenko
7624077772
cut: "it's legal to pass an empty list" seems to be untrue
...
function old new delta
cut_main 1344 1339 -5
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-12-13 20:22:05 +01:00
Denys Vlasenko
f4f8dc6864
cut: whitespace fixes
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-12-13 19:43:53 +01:00
Denys Vlasenko
ed6561685c
cut: tweak comments
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-12-13 19:39:34 +01:00
Denys Vlasenko
96a230f17b
cut: fix handling of -d ''
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-12-13 19:31:41 +01:00
Denys Vlasenko
9adafbc118
cut: prevent infinite loop if -F REGEX matches empty delimiter
...
function old new delta
cut_main 1339 1348 +9
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-12-13 19:13:20 +01:00
Denys Vlasenko
a4894eaf71
cut: tweak --help
...
function old new delta
packed_usage 34901 34934 +33
cut_main 1353 1339 -14
.rodata 105724 105685 -39
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/2 up/down: 33/-53) Total: -20 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-12-11 01:10:05 +01:00
Denys Vlasenko
9e364b16d1
cut: fix -d$'\n' --output-delimiter=@@ behavior
...
function old new delta
cut_main 1261 1353 +92
packed_usage 34925 34901 -24
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/1 up/down: 92/-24) Total: 68 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-12-10 21:01:52 +01:00
Denys Vlasenko
a208fa03de
cut: implement --output-delimiter
...
function old new delta
cut_main 1204 1261 +57
static.cut_longopts - 20 +20
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 1/0 up/down: 77/0) Total: 77 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-12-10 18:49:10 +01:00
Denys Vlasenko
b402b13fab
cut: with -F disabled in .config, don't show it in --help
...
function old new delta
packed_usage 34897 34849 -48
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-12-10 18:09:07 +01:00
Denys Vlasenko
38a3c0ad32
cut: comment out code which seems to be not needed
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-12-10 17:50:29 +01:00
Denys Vlasenko
103139d0e6
cut: fix "echo 1.2 | cut -d. -f1,3" (print "1", not "1.")
...
function old new delta
cut_main 1228 1201 -27
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-12-10 17:21:30 +01:00
Denys Vlasenko
470f009552
cut: with -F, do not regcomp() pattern for every file
...
function old new delta
cut_main 1218 1228 +10
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-12-10 02:55:58 +01:00
Denys Vlasenko
55fc6a18da
cut: rename "cut_lists" to "cut_list"
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-12-10 02:29:48 +01:00
Denys Vlasenko
1220b1519d
cut: rename some variables to hopefully better names
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-12-10 02:15:25 +01:00
Denys Vlasenko
808155ebf3
cut: "orig_line" is redundant, remove it
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-12-10 01:55:25 +01:00
Denys Vlasenko
478ac90f2c
cut: allocate "printed" only if OPT_CHAR or OPT_BYTE
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-12-10 01:50:58 +01:00
Denys Vlasenko
ad12ab439b
cut: localize 'spos' variable, convert !NUMVAR to NUMVAR == 0
...
This imporves readability
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-12-10 01:44:13 +01:00
Denys Vlasenko
73e9d25d75
cut: simplify OPT_ names, eliminate one variable
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-12-10 01:38:31 +01:00
Ron Yorston
f020414413
cut: improve detection of invalid ranges
...
Commit 0068ce2fa (cut: add toybox-compatible options -O OUTSEP,
-D, -F LIST) added detection of reversed ranges. Further
improvements are possible.
- The test for reversed ranges compared the start after it had been
decremented with the end before decrement. It thus missed ranges
of the form 2-1.
- Zero isn't a valid start value for a range. (Nor is it a valid
end value, but that's caught by the test for a reversed range.)
- The code
if (!*ltok)
e = INT_MAX;
duplicates a check that's already been made.
- Display the actual range in the error message to make it easier
to find which range was at fault.
function old new delta
.rodata 100273 100287 +14
cut_main 1239 1237 -2
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/1 up/down: 14/-2) Total: 12 bytes
Signed-off-by: Ron Yorston <rmy@pobox.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-12-10 01:29:44 +01:00
Colin McAllister
50e2b59370
cut: fix "-s" flag to omit blank lines
...
Using cut with the delimiter flag ("-d") with the "-s" flag to only
output lines containing the delimiter will print blank lines. This is
deviant behavior from cut provided by GNU Coreutils. Blank lines should
be omitted if "-s" is used with "-d".
This change introduces a somewhat naiive, yet efficient solution, where
line length is checked before looping though bytes. If line length is
zero and the "-s" flag is used, the code will jump to parsing the next
line to avoid printing a newline character.
function old new delta
cut_main 1196 1185 -11
Signed-off-by: Colin McAllister <colinmca242@gmail.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-12-10 01:27:04 +01:00
Denys Vlasenko
0929a129fc
test: -x can return 0/1 early if all X bits are the same
...
function old new delta
nexpr 702 725 +23
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-10-07 07:33:58 +02:00
Denys Vlasenko
96b0607302
ash: cache more of uid/gid syscalls
...
Testcase:
setuidgid 1:1 strace ash -c 'test -x TODO; test -x TODO; echo $?'
should show that second "test -x" does not query ids again.
function old new delta
ash_main 1236 1256 +20
get_cached_euid - 19 +19
get_cached_egid - 19 +19
test_main 56 72 +16
test_exec 119 135 +16
is_in_supplementary_groups 52 57 +5
nexpr 718 702 -16
------------------------------------------------------------------------------
(add/remove: 2/0 grow/shrink: 4/1 up/down: 95/-16) Total: 79 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-10-07 07:28:44 +02:00
Denys Vlasenko
d26e958725
ash: make "test -x" use cached groupinfo
...
function old new delta
test_main2 - 407 +407
testcmd 10 23 +13
test_main 418 56 -362
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 1/1 up/down: 420/-362) Total: 58 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-10-07 07:14:27 +02:00
Denys Vlasenko
4c1d645c86
libbb: simplify parameter passing in is_in_supplementary_groups()
...
function old new delta
is_in_supplementary_groups 54 52 -2
nexpr 721 718 -3
test_exec 125 119 -6
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/3 up/down: 0/-11) Total: -11 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-10-07 06:36:00 +02:00
Denys Vlasenko
748b168154
libbb: move is_in_supplementary_groups() from test to libbb
...
function old new delta
is_in_supplementary_groups - 54 +54
nexpr 766 721 -45
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 0/1 up/down: 54/-45) Total: 9 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-10-07 01:20:43 +02:00