Commit Graph

15297 Commits

Author SHA1 Message Date
Denys Vlasenko
932b9971d0 hush: fix handling of raw ^C in scripts: "echo ^C"
function                                             old     new   delta
expand_vars_to_list                                 1133    1187     +54
parse_stream                                        2690    2719     +29

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-01-11 12:39:48 +01:00
Denys Vlasenko
aaf7a2e24d hush: remove dead code
function                                             old     new   delta
done_word                                            761     711     -50

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-01-11 11:19:00 +01:00
Denys Vlasenko
03c36e0be1 ash: ALWAYS_INLINE grabstackblock()
function                                             old     new   delta
grabstackblock                                         5       -      -5

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-01-10 15:18:35 +01:00
Denys Vlasenko
f2539c78d2 init: stop using static data
function                                             old     new   delta
init_action_list                                       4       -      -4
new_init_action                                      148     142      -6
------------------------------------------------------------------------------
(add/remove: 0/1 grow/shrink: 0/1 up/down: 0/-10)             Total: -10 bytes
   text	   data	    bss	    dec	    hex	filename
 927839	    481	   6832	 935152	  e44f0	busybox_old
 927833	    481	   6824	 935138	  e44e2	busybox_unstripped

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-01-10 13:32:20 +01:00
Denys Vlasenko
baa41c7855 ash: make ${v:N:M} more robust for very large M by clamping to MIN/MAX_INT
Before this patch, "${v:2:0x100000001}" = "${v:2:1}",
and similarly, constructs like "${v:2:9999999999}" may give wrong result
due to int overflows.

function                                             old     new   delta
substr_atoi                                            -      43     +43

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-01-10 13:22:25 +01:00
Denys Vlasenko
2c876774a9 dd: fixed partial count logic
$ busybox dd if=/dev/zero of=/dev/loop0 bs=100M count=8; echo $?
8+0 records in
7+0 records out  <=========== FIXED, was 7+1
805220352 bytes (767.9MB) copied, 0.464010 seconds, 1.6GB/s
1

function                                             old     new   delta
write_and_stats                                       97      99      +2

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-01-10 11:04:09 +01:00
Denys Vlasenko
5afd63a631 dd: exit with 1 if last write was incomplete
$ busybox dd if=/dev/zero of=/dev/loop0 bs=100M count=8; echo $?
8+0 records in
7+1 records out
805220352 bytes (767.9MB) copied, 0.464010 seconds, 1.6GB/s
1  <=========== FIXED

function                                             old     new   delta
write_and_stats                                       96      97      +1

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-01-10 10:58:55 +01:00
Denys Vlasenko
d1df1a709f ash: add comment explaining last change
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-01-09 17:25:58 +01:00
Denys Vlasenko
740058b42b ash: fix var_bash5.tests - ${VAR/pattern/repl} construct
function                                             old     new   delta
subevalvar                                          1198    1279     +81
rmescapes                                            308     330     +22
preglob                                                8      10      +2
parsefname                                           152     154      +2
expandarg                                            973     975      +2
argstr                                              1144    1146      +2
mklocal                                              290     288      -2
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 6/1 up/down: 111/-2)            Total: 109 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-01-09 17:07:06 +01:00
Shawn Landden
4261341281 umount: ignore -c
"-c, --no-canonicalize: Do not canonicalize paths."

As busybox doesn't canonicalize paths in the first place it is safe to ignore
this option.

See https://github.com/systemd/systemd/issues/7786

Signed-off-by: Shawn Landden <slandden@gmail.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-01-08 13:31:58 +01:00
Denys Vlasenko
2f55404bbc mknod: better --help, much clearer code
function                                             old     new   delta
packed_usage                                       32066   32091     +25
mknod_main                                           173     174      +1

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-01-08 11:22:37 +01:00
Denys Vlasenko
83c99ab446 less: code shrink
function                                             old     new   delta
less_main                                           2471    2464      -7

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-01-08 10:27:23 +01:00
Denys Vlasenko
562f63e9a4 dhcprelay: code shrink
function                                             old     new   delta
dhcprelay_main                                       961     958      -3

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-01-08 10:14:17 +01:00
Denys Vlasenko
c9807d787d nice: code shrink
function                                             old     new   delta
nice_main                                            157     152      -5

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-01-08 10:13:11 +01:00
Denys Vlasenko
cb9c3894e5 *: make "argc UNUSED_PARAM" consistent
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-01-08 09:43:51 +01:00
Denys Vlasenko
844a6c5abd awk: code shrink
function                                             old     new   delta
awk_main                                             955     948      -7

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-01-07 14:39:34 +01:00
Ingo van Lil
9c8e94bc0a ash: fail if 'shift' operand is out of range
If the numeric argument passed to ash's 'shift' built-in is greater than
'$#' the command performs no operation and exits successfully. It should
return a non-zero exit code instead:

http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#shift

This is consistent with bash and hush.

function                                             old     new   delta
shiftcmd                                             122     120      -2

Signed-off-by: Ingo van Lil <inguin@gmx.de>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-01-07 14:22:38 +01:00
Denys Vlasenko
6f4a785bd1 awk: fix 'delete array[var--]' decrementing var twice
function                                             old     new   delta
evaluate                                            3395    3390      -5

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-01-07 01:19:08 +01:00
Denys Vlasenko
7367a949a6 libbb: compile obscure() only if FEATURE_PASSWD_WEAK_CHECK=y
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-01-04 15:21:25 +01:00
Yann E. MORIN
a47375de8c build system: add rule to install without cloberring existing utilities
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-01-04 14:43:46 +01:00
Yann E. MORIN
952d5a6024 applets/install: accept more than one install option
Currently, it is impossible to pass more than one option to the isntall
script, so it totally prevents using --noclobber.

Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-01-04 14:43:46 +01:00
Yann E. MORIN
84be5ce0d8 applets/install: respect noclobber for script wrappers too
Simplify the handling of --noclobber so that it applies to all types of
installation types, even to script wrappers.

Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-01-04 14:36:17 +01:00
Denys Vlasenko
a034cab095 tc: enables this applet
function                                             old     new   delta
tc_main                                                -     946    +946
cbq_print_opt                                          -     517    +517
print_qdisc                                            -     475    +475
print_class                                            -     359    +359
llproto_names                                          -     264    +264
packed_usage                                       31853   32066    +213
ll_proto_a2n                                           -     112    +112
llproto_ids                                            -      86     +86
print_tc_classid                                       -      82     +82
static.objects                                         -      20     +20
static._q_                                             -      16     +16
applet_main                                         1564    1568      +4
print_filter                                           -       3      +3
applet_names                                        2708    2711      +3
------------------------------------------------------------------------------
(add/remove: 13/0 grow/shrink: 3/0 up/down: 3100/0)          Total: 3100 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-01-04 10:27:51 +01:00
Denys Vlasenko
d75f9081d4 Start 1.29.0 development cycle
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-01-02 06:11:19 +01:00
Denys Vlasenko
c0fab1ba49 Bump version to 1.28.0
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-01-02 06:07:28 +01:00
Denys Vlasenko
9c9a742e80 scripts/randomtest: do not try building static libbysubox
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2017-12-31 20:31:05 +01:00
Denys Vlasenko
b013bec31b chown: fix a mistake in opt_complementary change
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2017-12-31 17:59:16 +01:00
Denys Vlasenko
82d1c1f84a randomconfig fixes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2017-12-31 17:30:02 +01:00
Denys Vlasenko
36acc4631c ntpd: do run the script at leat once in 11 minutes
function                                             old     new   delta
ntpd_main                                           1197    1226     +29

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2017-12-26 20:19:37 +01:00
Ron Yorston
8d8ee910f0 env: -u option fails due to typo
The -u option is supposed to be allowed to appear multiple times; the
option string supplied to getopt32long requires it to be followed by a
nonnegative integer.

Reported-by: Keith Maxwell <keith.maxwell@gmail.com>
Signed-off-by: Ron Yorston <rmy@pobox.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2017-12-25 21:36:05 +01:00
Denys Vlasenko
a07fead823 tar: code shrink
function                                             old     new   delta
packed_usage                                       31863   31853     -10
tar_main                                            1013    1002     -11
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/2 up/down: 0/-21)             Total: -21 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2017-11-13 01:56:51 +01:00
Denys Vlasenko
931cf64ae7 tar: code shrink, better help text
function                                             old     new   delta
tar_main                                             994    1013     +19
packed_usage                                       31893   31863     -30
writeTarFile                                         250     207     -43
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/2 up/down: 19/-73)            Total: -54 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2017-11-13 01:40:28 +01:00
Denys Vlasenko
02e93b3a28 tar: improve help text
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2017-11-10 22:14:22 +01:00
Denys Vlasenko
2fee2bce6f inetd: fix for running by non-root
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2017-11-09 16:19:42 +01:00
Denys Vlasenko
1b510900e2 unshare: -r should map root to user, not the other way around
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2017-11-09 16:06:33 +01:00
Denys Vlasenko
b5a0d9d867 unshare: -r implies -U, not -u
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2017-11-09 15:59:22 +01:00
Eugene Rudoy
978810d7ac unzip: add missing -j to trivial usage
Signed-off-by: Eugene Rudoy <gene.devel@gmail.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2017-11-09 12:47:56 +01:00
Eugene Rudoy
c6f213ade4 unzip: fix content listing and filtering when -j is used
Original Info-ZIP's unzip uses unstripped filenames
while doing content listing and filtering, i.e.
 - in content listing mode -j is ignored completely
 - filtering is applied to non-stripped names, -j
   takes effect first while extracting the files

997ad2c64a strips path
components a little bit too early resulting in behavior
deviations.

Fix it by doing stripping after listing/filtering.

p.s. Info-ZIP's unzip behavior is the same as
     that of tar in --strip-components=NUM mode

Signed-off-by: Eugene Rudoy <gene.devel@gmail.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2017-11-09 12:45:50 +01:00
Denys Vlasenko
0a67722140 lineedit: get terminal width before printing prompt
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2017-11-08 13:38:12 +01:00
Denys Vlasenko
c3797d40a1 lineedit: do not tab-complete any strings which have control characters
function                                             old     new   delta
add_match                                             41      68     +27

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2017-11-08 12:35:02 +01:00
Denys Vlasenko
a5060b8364 ash: fix nofork bug where environment is not properly passed to a command
function                                             old     new   delta
listvars                                             144     252    +108
evalcommand                                         1500    1546     +46
showvars                                             142     147      +5
shellexec                                            242     245      +3
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 4/0 up/down: 162/0)             Total: 162 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2017-11-03 14:16:25 +01:00
Denys Vlasenko
f5e8b42788 init: reduce the window when init can lose reboot/poweroff signals
function                                             old     new   delta
init_main                                            695     712     +17

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2017-11-02 15:25:28 +01:00
Denys Vlasenko
9c143ce52d ash: retain envvars with bad names in initial environment. Closes 10231
Reworks "ash: [VAR] Sanitise environment variable names on entry"
commit.

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2017-11-02 12:56:24 +01:00
Denys Vlasenko
d5c1482fba ntpd: skip over setting next DNS resolution attempt if it is not needed
function                                             old     new   delta
ntpd_main                                           1177    1197     +20
resolve_peer_hostname                                127     129      +2

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2017-10-31 16:53:23 +01:00
Denys Vlasenko
f1fdda4542 Fix build failures if MAXHOSTNAMELEN or MAXPATHLEN is not defined
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2017-10-31 15:59:19 +01:00
James Clarke
6bcc2c0f6c grep: skip grepping symlinks to directories
When grep is passed -r, recursive_action will treat any symlinks to
directories not in the root as normal files, since it lstat's them and
is therefore told they are not directories. However, file_action_grep
will still try to fopen and read from them to see whether they match,
which varies in behaviour across platforms. Linux will give EISDIR and
thus grep will not find any matching lines, but FreeBSD will give the
raw contents of the directory itself, which may match the given pattern.
Also, if grep is passed -c, it will even print a count for these
symlinks, even on Linux.

Since this recursive_action behaviour is required for the correct
functioning of other applets, such as tar, grep should handle this
special case and skip any such symlinks.

function                                             old     new   delta
file_action_grep                                      80     161     +81

Signed-off-by: James Clarke <jrtc27@jrtc27.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2017-10-31 15:23:55 +01:00
Denys Vlasenko
59a5604a79 ntpd: mention in help text that -d can be repeated
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2017-10-31 12:47:27 +01:00
Denys Vlasenko
6a4f223122 ntpd: improve treatment of DNS resolution failures
function                                             old     new   delta
ntpd_main                                           1106    1177     +71
resolve_peer_hostname                                122     127      +5
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/0 up/down: 76/0)               Total: 76 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2017-10-31 12:44:37 +01:00
James Clarke
518fb3ba19 udp_io, traceroute: Standardise IPv6 PKTINFO handling to be portable
The current standard (RFC 3542) is for IPV6_RECVPKTINFO to be given to
setsockopt, and IPV6_PKTINFO to be used as the packet type. Previously,
RFC 2292 required IPV6_PKTINFO to be used for both, but RFC 3542
re-purposed IPV6_PKTINFO when given to setsockopt. The special
Linux-specific IPV6_2292PKTINFO has the same semantics as IPV6_PKTINFO
in RFC 2292, but was introduced at the same time as IPV6_RECVPKTINFO.

Therefore, if we have IPV6_RECVPKTINFO available, we can use the RFC
3542 style, and if not, we assume that only the RFC 2292 API is
available, using IPV6_PKTINFO for both.

Signed-off-by: James Clarke <jrtc27@jrtc27.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2017-10-30 16:06:50 +01:00
James Clarke
d1535216ca df: Use statvfs instead of non-standard statfs
Platforms differ on what their implementations of statfs include.
Importantly, FreeBSD's does not include a f_frsize member inside struct
statfs. However, statvfs is specified by POSIX and includes everything
we need, so we can just use that instead.

Signed-off-by: James Clarke <jrtc27@jrtc27.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2017-10-30 15:30:59 +01:00