Denys Vlasenko [Sat, 29 Jul 2017 18:43:26 +0000 (20:43 +0200)]
hush: fix handling of empty heredoc EOF marker
function old new delta
parse_stream 2609 2634 +25
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Sat, 29 Jul 2017 17:57:28 +0000 (19:57 +0200)]
ash: [PARSER] Removed noexpand/length check on eofmark
Upstream comment:
Date: Sun, 11 Nov 2007 14:21:23 +0800
[PARSER] Removed noexpand/length check on eofmark
On Tue, Oct 30, 2007 at 04:23:35AM +0000, Oleg Verych wrote:
>
> } 8<<""
> ======================
Actually this (the empty delim) only works with dash by accident.
I've tried bash and pdksh and they both terminate on the first
empty line which is what you would expect rather than EOF. The
real Korn shell does something completely different.
I've fixed this in dash to conform to bash/pdksh.
> In [0] it's stated, that delimiter isn't evaluated (expanded), only
> quoiting must be checked. That if() seems to be completely bogus.
OK I agree. The reason it was there is because the parser would
have already replaced the dollar sign by an internal representation.
I've fixed it properly with this patch.
Test case:
cat <<- $a
OK
$a
cat <<- ""
OK
echo OK
Old result:
dash: Syntax error: Illegal eof marker for << redirection
OK
echo OK
New result:
OK
OK
OK
function old new delta
parsefname 227 152 -75
readtoken1 2819 2651 -168
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/2 up/down: 0/-243) Total: -243 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Sat, 29 Jul 2017 16:54:53 +0000 (18:54 +0200)]
ash: "Undo all redirections" comment is wrong, delete it
No code changes.
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Ron Yorston [Sat, 29 Jul 2017 13:48:00 +0000 (14:48 +0100)]
libbb: remove vdprintf
Two reasons:
* it's only built for GNU C Library versions < 2 (released 1997)
* it isn't used anywhere in BusyBox
Signed-off-by: Ron Yorston <rmy@pobox.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Sat, 29 Jul 2017 00:27:12 +0000 (02:27 +0200)]
ps: tweak outdated comment, no code changes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Sat, 29 Jul 2017 00:20:17 +0000 (02:20 +0200)]
ps: implement -o sid
function old new delta
func_sid - 29 +29
out_spec 320 340 +20
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 1/0 up/down: 49/0) Total: 49 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Sat, 29 Jul 2017 00:19:01 +0000 (02:19 +0200)]
standalone shell / prefer_applets: fix "exe" in comm fields
function old new delta
main 92 106 +14
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Fri, 28 Jul 2017 23:20:53 +0000 (01:20 +0200)]
ash: make tryexec(cmd) parameter const char
Fewer casts this way.
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Fri, 28 Jul 2017 22:59:24 +0000 (00:59 +0200)]
shell: make standalone shell tab-complete "busybox"
function old new delta
busybox_main - 624 +624
packed_usage 31758 31777 +19
applet_names 2638 2646 +8
applet_main 1528 1532 +4
applet_install_loc 191 192 +1
run_applet_and_exit 681 78 -603
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 4/1 up/down: 656/-603) Total: 53 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Ron Yorston [Thu, 27 Jul 2017 12:53:39 +0000 (13:53 +0100)]
ash: support platforms that don't have '%m' printf specifier
The '%m' conversion specifier prints an error message based on the
current value of 'errno'. It is available in the GNU C library,
Cygwin (since 2012), uClibc and musl.
It is not available in various BSDs, BSD-derived systems (MacOS,
Android) or Microsoft Windows.
Use a symbol defined in platform.h to control how error messages
can be formatted to display the 'errno' message. On platforms that
support it use '%m'; on other platforms use '%s' and strerror().
On platforms that have '%m' there is essentially no change in the
size of the binary. Otherwise:
function old new delta
redirect 1287 1310 +23
xtcsetpgrp 27 44 +17
dup2_or_raise 34 51 +17
setinputfile 267 275 +8
.rodata 163379 163371 -8
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 4/1 up/down: 65/-8) Total: 57 bytes
Signed-off-by: Ron Yorston <rmy@pobox.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Fri, 28 Jul 2017 13:28:33 +0000 (15:28 +0200)]
ash: less hackish implementation of evaltreenr()
Defining a function alias with __attribute__ ((alias("evaltree"),__noreturn__))
is not that usual, and clang had a bug which made it misunderstand
this construct.
Switch to:
ALWAYS_INLINE NORETURN evaltreenr() { evaltree(); unreachable(); }
Older gcc's do not know unreachable(), on them we pay the price of having
a few extra calls to abort():
function old new delta
evalsubshell 151 156 +5
evalpipe 357 362 +5
argstr 1141 1144 +3
On newer gcc, code size does not change.
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Natanael Copa [Tue, 25 Jul 2017 18:44:50 +0000 (20:44 +0200)]
unzip: fix regression on big-endian machines
This fixes a regression which was introduced with commit
2a0867a5
("unzip: optional support for bzip2 and lzma") and causes unzip to exit
with error when extracting archives:
unzip: unsupported method 2048
Signed-off-by: Natanael Copa <ncopa@alpinelinux.org>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Thu, 27 Jul 2017 12:45:25 +0000 (14:45 +0200)]
config: more tweaking of help texts
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Thu, 27 Jul 2017 12:31:59 +0000 (14:31 +0200)]
rdate: tweak comments, no code changes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Thu, 27 Jul 2017 11:34:51 +0000 (13:34 +0200)]
inetd: improve --helpt text and config help text.
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Thu, 27 Jul 2017 10:53:20 +0000 (12:53 +0200)]
tweak examples/var_service/*
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Thu, 27 Jul 2017 10:34:56 +0000 (12:34 +0200)]
ed: fix "\n" removal in command line; make "w" set "dirty = 0"
function old new delta
doCommands 2184 2226 +42
getNum 345 343 -2
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/1 up/down: 42/-2) Total: 40 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Thu, 27 Jul 2017 09:58:25 +0000 (11:58 +0200)]
ed: code shrink
function old new delta
findString 117 115 -2
skip_blank 16 - -16
getNum 369 345 -24
doCommands 2448 2183 -265
------------------------------------------------------------------------------
(add/remove: 0/1 grow/shrink: 0/3 up/down: 0/-307) Total: -307 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Thu, 27 Jul 2017 09:17:15 +0000 (11:17 +0200)]
ed: fix --help and reorder functions, no code changes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Thu, 27 Jul 2017 08:58:08 +0000 (10:58 +0200)]
swapon: do not use FEATURE_MOUNT_LABEL, have your own FEATURE_SWAPONOFF_LABEL
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Thu, 27 Jul 2017 08:53:09 +0000 (10:53 +0200)]
config: trim/improve item names and help texts, take 2
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Thu, 27 Jul 2017 00:59:13 +0000 (02:59 +0200)]
config: trim/improve item names and help texts.
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Wed, 26 Jul 2017 21:08:36 +0000 (23:08 +0200)]
ash: force inlining of a trivial function
function old new delta
bltinlookup 5 - -5
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Wed, 26 Jul 2017 21:03:21 +0000 (23:03 +0200)]
ash: revert previous implementation of "A=1 A=2 B=$A cmd" code
Reverts this:
commit
0e6f661e23d358cca104c24f8438d0ec64df32f1
Date: Fri Feb 15 15:02:15 2008 +0000
ash: handle "A=1 A=2 B=$A; echo $B". closes bug 947.
A different fix from upstream has been imported by previous six commits.
Last seven commits, cumulative:
function old new delta
poplocalvars - 314 +314
mklocal - 288 +288
pushlocalvars - 48 +48
evalcommand 1372 1408 +36
unwindlocalvars - 22 +22
ash_main 1022 1029 +7
setvar 167 172 +5
localvar_stack - 4 +4
setvareq 303 302 -1
evalcase 271 269 -2
subevalvar 1202 1198 -4
localvars 4 - -4
cmdenviron 4 - -4
expandarg 984 973 -11
evalvar 589 574 -15
argstr 1164 1141 -23
dotcmd 335 303 -32
bltinlookup 51 5 -46
varvalue 709 596 -113
evalfun 456 270 -186
localcmd 364 44 -320
------------------------------------------------------------------------------
(add/remove: 5/2 grow/shrink: 3/11 up/down: 724/-761) Total: -37 bytes
text data bss dec hex filename
915353 485 6888 922726 e1466 busybox_old
915320 485 6880 922685 e143d busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Wed, 26 Jul 2017 18:06:48 +0000 (20:06 +0200)]
ash: [VAR] Fix loss of variables when hash collides
Upstream commit:
Date: Tue, 6 Jul 2010 17:40:53 +0800
[VAR] Fix loss of variables when hash collides
Brian Koropoff reported that the new var patches broke the following
script:
#!/bin/dash
GDM_LANG="bar"
OPTION="foo"
unset GDM_LANG
# OPTION has mysteriously become unset
echo "$OPTION"
He correctly diagnosed this as a result of removing all variables
in the hash chain preceding the one that should be removed in
setvareq.
He also provided a patch to fix this.
This patch is based on his but without keeping the original vpp.
As a result, we now store new variables at the end of the hash
chain instead of the beginning.
To make this work, setvareq/setvar now returns the vp pointer
modified. In case they're used to unset a variable the pointer
returned is undefined. This is because mklocal needs it and
used to get it by assuming that the new variable always appear
at the beginning of the chain.
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Wed, 26 Jul 2017 18:00:08 +0000 (20:00 +0200)]
ash: [VAR] Do not poplocalvars prematurely on regular utilities
Upstream commit:
Date: Thu, 27 May 2010 11:50:19 +0800
[VAR] Do not poplocalvars prematurely on regular utilities
The recent cmdenviron removal broke regular utilities by calling
poplocalvars too early. This patch fixes that by postponing the
poplocalvars for regular utilities until they have completed.
In order to ensure that local still works, it is now a special
built-in.
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Wed, 26 Jul 2017 17:55:31 +0000 (19:55 +0200)]
ash: [VAR] Fix poplocalvar on abnormal exit from function
Upstream commit:
Date: Thu, 27 May 2010 11:32:55 +0800
[VAR] Fix poplocalvar on abnormal exit from function
The new localvar code broke the abnormal exit from functions
and built-ins by not restoring the original localvar state.
This patch fixes this by storing the previous localvar state so
that we always unwind correctly in case of an abnormal exit.
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Wed, 26 Jul 2017 17:53:11 +0000 (19:53 +0200)]
ash: [VAR] Replace cmdenviron with localvars
Upstream commit:
Date: Wed, 26 May 2010 18:54:19 +0800
[VAR] Replace cmdenviron with localvars
This patch replaces the cmdenviron mechanism for temporary command
variables with the localvars mechanism used by functions.
This reduces code size, and more importantly, makes the variable
assignment take effect immediately as required by POSIX.
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Wed, 26 Jul 2017 17:25:40 +0000 (19:25 +0200)]
ash: [VAR] Fix poplocalvar leak
Upstream commit:
Date: Tue, 25 May 2010 18:14:32 +0800
[VAR] Fix poplocalvar leak
When a variable is marked as local, we set VSTRFIXED on its vp
recored. However, poplocalvar never clears this flag for variables
that were unset to begin with. Thus if you ever made an unset
variable local, it would get the VSTRFIXED bit and stick around
forever.
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Wed, 26 Jul 2017 17:22:34 +0000 (19:22 +0200)]
ash: [VAR] Add localvars nesting
Upstream commit:
Date: Mon, 24 May 2010 15:31:27 +0800
[VAR] Add localvars nesting
This patch adds localvars nesting infrastructure so we can reuse
the localvars mechanism for command evaluation.
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Wed, 26 Jul 2017 12:38:19 +0000 (14:38 +0200)]
ash: alloc slightly smaller buffer in cvtnum(); faster unsetvar()
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Wed, 26 Jul 2017 11:42:53 +0000 (13:42 +0200)]
ash: fix redir_leak.tests if STANDALONE=y
If STANDALONE and we run a NOEXEC applet, saved copies of redirected fds
were visible for the child. They have CLOEXEC bit, yes, but we do not exec
in this case.
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Tue, 25 Jul 2017 22:30:02 +0000 (00:30 +0200)]
shell: remove ${#+} tests, it is not a valid construct
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Tue, 25 Jul 2017 22:07:27 +0000 (00:07 +0200)]
hush: fix ${##}, ${#?}, ${#!} handling
function old new delta
parse_dollar 786 820 +34
expand_one_var 1579 1592 +13
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/0 up/down: 47/0) Total: 47 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Tue, 25 Jul 2017 18:31:14 +0000 (20:31 +0200)]
ash: [SHELL] Optimize dash -c "command" to avoid a fork
Upstream commit:
Date: Thu, 7 Jul 2011 13:58:48 +0800
[SHELL] Optimize dash -c "command" to avoid a fork
On Sun, Apr 10, 2011 at 07:36:49AM +0000, Jonathan Nieder wrote:
> From: Jilles Tjoelker <jilles@stack.nl>
> Date: Sat, 13 Jun 2009 16:17:45 -0500
>
> This change only affects strings passed to -c, when the -s option is
> not used.
>
> Use the EV_EXIT flag to inform the eval machinery that the string
> being passed is the entirety of input. This way, a fork may be
> omitted in many special cases.
>
> If there are empty lines after the last command, the evalcmd will not
> see the end early enough and forks will not be omitted. The same thing
> seems to happen in bash.
>
> Example:
> sh -c 'ps lT'
> No longer shows a shell process waiting for ps to finish.
>
> [jn: ported from FreeBSD SVN r194128. Bugs are mine.]
>
> Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Instead of detecting EOF using the input layer, I'm going to
use the parser instead. In either case, we always have to read
ahead in order to complete the parsing of the previous node.
Therefore we always know whether there is more to come, except
in the case where we see a newline/semicolon or similar.
For the purposes of sh -c, this should be sufficient.
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
function old new delta
evalstring 190 224 +34
ash_main 1014 1022 +8
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/0 up/down: 42/0) Total: 42 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Tue, 25 Jul 2017 18:06:17 +0000 (20:06 +0200)]
ash: allow "trap NUM [SIG]..." syntax
While at it, make get_signum() return -1 for numeric strings >= NSIG.
function old new delta
trapcmd 292 306 +14
get_signum 295 300 +5
builtin_trap 413 412 -1
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/1 up/down: 19/-1) Total: 18 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Tue, 25 Jul 2017 15:47:48 +0000 (17:47 +0200)]
ash: [REDIR] Replace GPL noclobberopen code with the FreeBSD version
Upstream commit:
Date: Thu, 10 Mar 2011 16:52:13 +0800
[REDIR] Replace GPL noclobberopen code with the FreeBSD version
Replace noclobberopen() from bash with the FreeBSD code for noclobber
opens.
This also reduces code size by eliminating an unnecessary check.
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
function old new delta
changepath 192 194 +2
localcmd 366 364 -2
expmeta 521 517 -4
redirect 1210 1135 -75
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/3 up/down: 2/-81) Total: -79 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Tue, 25 Jul 2017 15:37:57 +0000 (17:37 +0200)]
ash: sync up with dash with respect to redirection escaping
We fixed the problem differently than they. Let's not deviate.
Upstream commit:
Date: Thu, 27 May 2010 20:07:29 +1000
[EXPAND] Fix corruption of redirections with byte 0x81
In other ash variants, a partial implementation of ksh-like cmd >file*
adds and removes CTLESC bytes ('\x81') in redirection filenames,
preserving 8-bit transparency. Long ago, dash removed the code to add
the CTLESC bytes, but not the code to remove them, causing corruption of
filenames containing CTLESC. This commit removes the code to remove the
CTLESC bytes.
The CTLESC byte occurs frequently in UTF-8 encoded non-Latin text.
This bug has been reported various times to Ubuntu and Debian (e.g.
Launchpad Ubuntu #422298). This patch is the same as the one submitted
by Alexander Korolkov in Ubuntu #422298.
Signed-off-by: Jilles Tjoelker <jilles@stack.nl>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
function old new delta
changepath 194 192 -2
expandarg 1000 984 -16
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/2 up/down: 0/-18) Total: -18 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Tue, 25 Jul 2017 14:29:36 +0000 (16:29 +0200)]
ash: [VAR] Move unsetvar functionality into setvareq
Upstream commit:
Date: Tue, 25 May 2010 20:55:05 +0800
[VAR] Move unsetvar functionality into setvareq
This patch moves the unsetvar code into setvareq so that we can
no have a pathological case of an unset variable hanging around
unless it has a bit pinning it like VEXPORT.
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
function old new delta
setvareq 227 303 +76
expmeta 517 521 +4
localcmd 364 366 +2
unsetcmd 96 76 -20
unsetvar 129 7 -122
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 3/2 up/down: 82/-142) Total: -60 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Tue, 25 Jul 2017 13:25:07 +0000 (15:25 +0200)]
ash: import param_expand_default.tests from hush
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Tue, 25 Jul 2017 13:18:57 +0000 (15:18 +0200)]
hush: treat ${#?} as "length of $?"
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Tue, 25 Jul 2017 12:55:05 +0000 (14:55 +0200)]
ash: add a few tests from hush-vars/*
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Tue, 25 Jul 2017 12:22:08 +0000 (14:22 +0200)]
volume_id: enable minix detection
function old new delta
volume_id_probe_minix - 87 +87
fs2 64 68 +4
------------------------------------------------------------------------------
(add/remove: 2/0 grow/shrink: 1/0 up/down: 91/0) Total: 91 bytes
Patch by wdlkmpx <wdlkmpx@gmail.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Mon, 24 Jul 2017 18:03:24 +0000 (20:03 +0200)]
ash: fix comment, no code changes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Mon, 24 Jul 2017 17:42:46 +0000 (19:42 +0200)]
ash: copy three tests from hush_test/hush-signals/*
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Mon, 24 Jul 2017 16:51:40 +0000 (18:51 +0200)]
shell: some additions to *sh-misc/* tests
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Mon, 24 Jul 2017 15:20:13 +0000 (17:20 +0200)]
tar: postpone creation of symlinks with "suspicious" targets. Closes 8411
function old new delta
data_extract_all 968 1038 +70
tar_main 952 986 +34
scan_tree 258 262 +4
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 3/0 up/down: 108/0) Total: 108 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Mon, 24 Jul 2017 11:37:38 +0000 (13:37 +0200)]
udhcpc: downgrade "MAC X:X:X:X:X:X" message to log2 level
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Mon, 24 Jul 2017 10:49:49 +0000 (12:49 +0200)]
ash: add most of hush process subst tests
ash passes these.
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Mon, 24 Jul 2017 10:42:17 +0000 (12:42 +0200)]
hush: fix a case when redirect to a closed fd #1 is not restoring (closing) it
function old new delta
setup_redirects 200 245 +45
append_squirrel - 41 +41
save_fds_on_redirect 256 221 -35
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 1/1 up/down: 86/-35) Total: 51 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Mon, 24 Jul 2017 10:06:53 +0000 (12:06 +0200)]
udhcpc[6]: downgrade "adapter index N" messages to log2 level
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Mon, 24 Jul 2017 10:01:28 +0000 (12:01 +0200)]
udhcpc[6]: fix messages referring to select() while we use poll()
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Mon, 24 Jul 2017 00:49:56 +0000 (02:49 +0200)]
ash: add all hush parsing tests to ast tests
All pass.
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Mon, 24 Jul 2017 00:17:05 +0000 (02:17 +0200)]
hush: use mempcpy where useful
function old new delta
o_addblock 58 42 -16
expand_one_var 1618 1555 -63
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/2 up/down: 0/-79) Total: -79 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Sun, 23 Jul 2017 19:55:40 +0000 (21:55 +0200)]
ash: fix for last commit
"mempcpy(q, s, len) + len" is obviously no good :(
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Sun, 23 Jul 2017 19:46:02 +0000 (21:46 +0200)]
ash: use mempcpy() in more places
Most changes are taken from dash.
function old new delta
single_quote 127 129 +2
stack_nputstr 28 29 +1
path_advance 209 202 -7
rmescapes 346 308 -38
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/2 up/down: 3/-45) Total: -42 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Sat, 22 Jul 2017 01:04:20 +0000 (03:04 +0200)]
zcip: fix slow environment leak
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Sat, 22 Jul 2017 00:25:47 +0000 (02:25 +0200)]
crond: do not assume setenv() does not leak
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Sat, 22 Jul 2017 00:15:17 +0000 (02:15 +0200)]
libbb: avoid malloc/free in bb_unsetenv()
function old new delta
bb_unsetenv 55 83 +28
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Fri, 21 Jul 2017 23:47:19 +0000 (01:47 +0200)]
crond: allow $SHELL and starting user's shell override DEFAULT_SHELL. Closes 6458
function old new delta
crond_main 1134 1149 +15
fork_job 453 454 +1
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Fri, 21 Jul 2017 16:51:29 +0000 (18:51 +0200)]
ash: use mempcpy() where appropriate
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Fri, 21 Jul 2017 16:41:46 +0000 (18:41 +0200)]
basename: do not use argc
function old new delta
basename_main 153 148 -5
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Fri, 21 Jul 2017 15:43:14 +0000 (17:43 +0200)]
pgrep: fix "pgrep -v -P1"; also allow matching of comm - closes 10086
function old new delta
pgrep_main 662 720 +58
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Fri, 21 Jul 2017 14:07:13 +0000 (16:07 +0200)]
ping: fix help text to show what parameter -p takes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Fri, 21 Jul 2017 11:37:25 +0000 (13:37 +0200)]
ash: suppress readonly1.tests false positive; add readonly0.tests
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Fri, 21 Jul 2017 11:20:14 +0000 (13:20 +0200)]
ash: improve set -x to quote strings as necessary
Basen on the patch from Martijn Dekker <martijn@inlv.org>
function old new delta
evalcommand 1161 1302 +141
maybe_single_quote - 60 +60
getoptscmd 527 546 +19
readtoken1 2819 2823 +4
localcmd 366 364 -2
evaltreenr 495 479 -16
evaltree 495 479 -16
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 3/3 up/down: 224/-34) Total: 190 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Fri, 21 Jul 2017 10:04:22 +0000 (12:04 +0200)]
udhcpc[6]: on log level 1, three messages about raw socket is overkill
Move first two messages to log2 level:
08:46:32.23824 udhcpc: opening raw socket on ifindex 2
08:46:32.23825 udhcpc: got raw socket fd
08:46:32.26354 udhcpc: created raw socket
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Fri, 21 Jul 2017 09:58:43 +0000 (11:58 +0200)]
ping: better config help text for FEATURE_FANCY_PING
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Fri, 21 Jul 2017 07:50:55 +0000 (09:50 +0200)]
config: deindent all help texts
Those two spaces after tab have no effect, and always a nuisance when editing.
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Thu, 20 Jul 2017 21:28:00 +0000 (23:28 +0200)]
libarchive: FEATURE_LZMA_FAST should be visible if FEATURE_SEAMLESS_LZMA
While at it, tweak some config help texts.
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Thu, 20 Jul 2017 18:21:50 +0000 (20:21 +0200)]
unzip: sanitize filename length: malloc(1234mb) is not funny
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Thu, 20 Jul 2017 18:04:49 +0000 (20:04 +0200)]
unzip: implement -j, closes 9126
function old new delta
unzip_main 2642 2703 +61
packed_usage 31747 31770 +23
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/0 up/down: 84/0) Total: 84 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Thu, 20 Jul 2017 16:56:05 +0000 (18:56 +0200)]
unzip: robustify overwrite checks
function old new delta
get_lstat_mode - 55 +55
unzip_main 2667 2642 -25
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 0/1 up/down: 55/-25) Total: 30 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Thu, 20 Jul 2017 16:34:51 +0000 (18:34 +0200)]
unzip: support symlinks. Closes 10031
function old new delta
unzip_main 2519 2667 +148
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Thu, 20 Jul 2017 14:25:03 +0000 (16:25 +0200)]
bzcat,zcat: simplify code if gunzip/bunzip2 is not selected
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Thu, 20 Jul 2017 14:09:31 +0000 (16:09 +0200)]
shell: optional support for read -t N.NNN, closes 10101
function old new delta
shell_builtin_read 1097 1277 +180
dump_procs 353 359 +6
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Thu, 20 Jul 2017 11:42:19 +0000 (13:42 +0200)]
bootchartd: fix typo in comment
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Uwe Geuder [Wed, 19 Jul 2017 19:08:08 +0000 (22:08 +0300)]
bootchartd: prevent premature stop by device mapper
Kernel thread kdmflush was recognized as display manager kdm,
check for string length.
Signed-off-by: Uwe Geuder <busybox2017-ugeuder@snkmail.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Wed, 19 Jul 2017 15:56:56 +0000 (17:56 +0200)]
sparc: needs -fPIC
Pinted out by Thomas Petazzoni.
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Wed, 19 Jul 2017 12:39:30 +0000 (14:39 +0200)]
swapon/swapoff: trim config help text
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Wed, 19 Jul 2017 12:32:54 +0000 (14:32 +0200)]
Update remaining menuconfig items with approximate applet sizes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Ron Yorston [Wed, 19 Jul 2017 09:43:10 +0000 (10:43 +0100)]
od_bloaty: fix floating point output
Currently od_bloaty does this:
$ /bin/echo -en '\x00\x00\x00\x00\x00\x00\x00\x00' | busybox od -f
od: invalid character 'F' in type string 'fF'
$ /bin/echo -en '\x00\x00\x00\x00\x00\x00\x00\x00' | busybox od -t fD
od: invalid character 'D' in type string 'fD'
$ /bin/echo -en '\x00\x00\x00\x00\x00\x00\x00\x00' | busybox od -t f
0000000
0000010
The first two occur because the alphabetic length specifier isn't being
properly skipped. The third is due to the empty length specifier being
treated as alphabetic so we fall off the end of the FDL_sizeof array with
undetermined consequences. Coreutils defaults to printing a double in
this case.
With this patch the output is:
$ /bin/echo -en '\x00\x00\x00\x00\x00\x00\x00\x00' | ./busybox od -f
0000000 0.
0000000e+00 0.
0000000e+00
0000010
$ /bin/echo -en '\x00\x00\x00\x00\x00\x00\x00\x00' | ./busybox od -t fD
0000000 0.
000000000000000e+00
0000010
$ /bin/echo -en '\x00\x00\x00\x00\x00\x00\x00\x00' | ./busybox od -t f
0000000 0.
000000000000000e+00
0000010
I guess nobody uses BusyBox od to print floating point numbers.
Signed-off-by: Ron Yorston <rmy@pobox.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Tue, 18 Jul 2017 20:25:58 +0000 (22:25 +0200)]
hdparm: remove contradicting size info in config help
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Tue, 18 Jul 2017 20:25:12 +0000 (22:25 +0200)]
ash: remove contradicting size info in config help
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Tue, 18 Jul 2017 20:23:55 +0000 (22:23 +0200)]
hush: remove contradicting size info in config help
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Tue, 18 Jul 2017 20:01:24 +0000 (22:01 +0200)]
Update menuconfig items with approximate applet sizes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Tue, 18 Jul 2017 18:17:51 +0000 (20:17 +0200)]
Tweaks from mass recompile for 1.27.1 release
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Tue, 18 Jul 2017 16:14:42 +0000 (18:14 +0200)]
hush: tweak "help" output
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Ron Yorston [Tue, 18 Jul 2017 08:33:22 +0000 (09:33 +0100)]
printf: fix format string sanity check
One of the tests for printf checks for an invalid bare '%' in the
format string:
$ busybox printf '%' a b c
printf: %: invalid format
On x86_64 a slightly different test doesn't work correctly:
$ busybox printf '%' d e f
printf: invalid number 'd'
printf: invalid number 'e'
printf: invalid number 'f'
On other platforms the test fails randomly depending on how the
arguments are laid out in memory.
There are two places in the code where strchr is used to determine if
a character in the format string is valid. However, strchr also returns
a valid pointer if the character being searched for is the null terminator
thus causing the code to incorrectly suppose that a valid character has
been found.
Add explicit checks for the null terminator.
Signed-off-by: Ron Yorston <rmy@pobox.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Tue, 18 Jul 2017 13:58:02 +0000 (15:58 +0200)]
hush: fix readonly2.tests failure
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Tue, 18 Jul 2017 01:23:07 +0000 (03:23 +0200)]
hush: another testcase for "READONLY_VAR=VAL BLTIN ..."
Currently fails.
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Tue, 18 Jul 2017 00:44:06 +0000 (02:44 +0200)]
hush: do not assign to readonly VAR in "VAR=VAL CMD" syntax too
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Mon, 17 Jul 2017 23:40:01 +0000 (01:40 +0200)]
hush: add readonly testcase, fix fallout
function old new delta
helper_export_local 185 214 +29
run_pipe 1549 1560 +11
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/0 up/down: 40/0) Total: 40 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Mon, 17 Jul 2017 23:05:24 +0000 (01:05 +0200)]
hush: convert exp/ro/local parameters to bitfields in one flag param
function old new delta
helper_export_local 174 185 +11
set_local_var 424 420 -4
run_list 1048 1044 -4
set_vars_and_save_old 88 83 -5
set_local_var_from_halves 27 22 -5
run_pipe 1554 1549 -5
builtin_export 173 168 -5
set_pwd_var 40 34 -6
builtin_readonly 70 64 -6
expand_one_var 1625 1618 -7
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/9 up/down: 11/-47) Total: -36 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Mon, 17 Jul 2017 19:47:27 +0000 (21:47 +0200)]
hush: HUSH_READONLY depends on HUSH
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Mon, 17 Jul 2017 19:31:17 +0000 (21:31 +0200)]
hush: forgot to emit error on (failing) second "readonly VAR=VAL"
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Mon, 17 Jul 2017 19:19:53 +0000 (21:19 +0200)]
hush: smaller code in !READONLY configs
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Mon, 17 Jul 2017 19:10:50 +0000 (21:10 +0200)]
hush: implement "readonly" builtin
function old new delta
builtin_readonly - 70 +70
helper_export_local 152 174 +22
bltins1 348 360 +12
expand_one_var 1620 1625 +5
builtin_export 168 173 +5
set_pwd_var 36 40 +4
set_local_var 410 414 +4
set_vars_and_save_old 85 88 +3
set_local_var_from_halves 24 27 +3
run_pipe 1551 1554 +3
run_list 1046 1048 +2
builtin_type 116 114 -2
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 10/1 up/down: 133/-2) Total: 131 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Mon, 17 Jul 2017 15:49:11 +0000 (17:49 +0200)]
ash: more general format ${var:EXPR:EXPR}
function old new delta
subevalvar 1171 1202 +31
localcmd 364 366 +2
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Mon, 17 Jul 2017 15:11:48 +0000 (17:11 +0200)]
ash: "you disabled math" is wrong: user did not disable it, builder of ash did
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>