007ce9f807
shell: tweak getopts tests, no code changes
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2017-08-13 02:59:00 +02:00
419db0391e
hush: implement "silent" optstrings of ":opts"
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2017-08-11 17:21:14 +02:00
129e1ce72c
hush: add a test which fails due to uclibc bug in getopt()
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2017-08-11 17:00:39 +02:00
9a7d0a0191
shell: add OPTARG poisoning to getopt_optarg.tests
...
ash fails this!
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2017-08-11 02:37:48 +02:00
81f962f3df
hush: teach getopts to set/unset OPTARG
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2017-08-11 02:05:21 +02:00
74d4058928
hush: getopts builtin
...
function old new delta
builtin_getopts - 271 +271
bltins1 372 384 +12
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 1/0 up/down: 283/0) Total: 283 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2017-08-11 01:32:46 +02:00
19c9f31af1
nofork: fix a bug uncovered by hush testsuite (forgotten fflush)
...
function old new delta
run_nofork_applet 280 287 +7
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2017-08-03 19:52:47 +02:00
39701204cf
hush: do not accept "if() { echo; }" function def
...
function old new delta
parse_stream 2634 2692 +58
msg_and_die_if_script - 21 +21
syntax_error_unexpected_ch 41 46 +5
syntax_error_at 14 18 +4
die_if_script 31 28 -3
setup_redirects 319 308 -11
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 3/2 up/down: 88/-14) Total: 74 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2017-08-02 19:46:14 +02:00
5b3d2eb327
hush: fix "true | func_with_return" not allowing return.
...
function old new delta
pseudo_exec_argv 305 312 +7
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2017-07-31 18:02:28 +02:00
75481d3634
hush: functions have priority over builtins (!)
...
function old new delta
pseudo_exec_argv 291 305 +14
run_pipe 1560 1555 -5
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/1 up/down: 14/-5) Total: 9 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2017-07-31 05:27:09 +02:00
035486c750
ash: significant overhaul of redirect saving logic
...
New code is similar to what hush is doing.
Make CLOSED to -1: same as dash.
popredir() loses "restore" parameter: same as dash.
COPYFD_RESTORE bit is no longer necessary.
This change fixes this interactive bug:
$ ls -l /proc/$$/fd 10>&-
ash: can't set tty process group: Bad file descriptor
ash: can't set tty process group: Bad file descriptor
[1]+ Done(2) ls -l /proc/${\$}/fd 10>&4294967295
function old new delta
unwindredir 29 27 -2
tryexec 154 152 -2
evaltree 503 501 -2
evalcommand 1369 1367 -2
cmdloop 187 185 -2
redirect 1029 1018 -11
popredir 153 123 -30
need_to_remember 36 - -36
is_hidden_fd 68 - -68
------------------------------------------------------------------------------
(add/remove: 0/2 grow/shrink: 0/7 up/down: 0/-155) Total: -155 bytes
text data bss dec hex filename
914572 485 6848 921905 e1131 busybox_old
914553 485 6848 921886 e111e busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2017-07-31 04:21:46 +02:00
0f018b3070
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 >
2017-07-29 20:43:26 +02:00
b0648b0e78
shell: remove ${#+} tests, it is not a valid construct
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2017-07-26 00:30:02 +02:00
2093ad296f
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 >
2017-07-26 00:07:27 +02:00
b28d4c3462
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 >
2017-07-25 16:29:36 +02:00
be669fa1fd
ash: import param_expand_default.tests from hush
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2017-07-25 15:25:07 +02:00
645c697372
hush: treat ${#?} as "length of $?"
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2017-07-25 15:18:57 +02:00
64925384c9
ash: add a few tests from hush-vars/*
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2017-07-25 14:55:05 +02:00
ca50caacad
shell: some additions to *sh-misc/* tests
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2017-07-24 18:51:40 +02:00
621fc50e83
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 >
2017-07-24 12:42:17 +02:00
eae12688c9
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 >
2017-07-20 16:09:31 +02:00
cf5110978b
hush: fix readonly2.tests failure
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2017-07-18 15:58:02 +02:00
f645e1573c
hush: another testcase for "READONLY_VAR=VAL BLTIN ..."
...
Currently fails.
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2017-07-18 03:23:07 +02:00
5b2cc0aaee
hush: do not assign to readonly VAR in "VAR=VAL CMD" syntax too
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2017-07-18 02:44:06 +02:00
38ef39a1ab
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 >
2017-07-18 01:40:01 +02:00
e32b6503e7
hush: support ${VAR:N:-M}
...
function old new delta
expand_one_var 1602 1615 +13
builtin_type 114 116 +2
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2017-07-17 16:46:57 +02:00
9f904a22ff
shell: and_or_and_backgrounding.tests is no longer "UNFIXED BUG"
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2017-07-15 22:54:46 +02:00
ee553b929c
hush: fix and_or_and_backgrounding.tests failure
...
function old new delta
done_pipe 133 218 +85
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2017-07-15 22:51:55 +02:00
9fda609a60
hush: add support for "set -e"
...
function old new delta
run_list 978 1046 +68
o_opt_strings 24 32 +8
reset_traps_to_defaults 136 142 +6
pick_sighandler 57 60 +3
packed_usage 31772 31770 -2
hush_main 983 961 -22
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 4/2 up/down: 85/-24) Total: 61 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2017-07-14 13:36:48 +02:00
840a4355d0
hush: fix "(sleep 1; exit 3) & sleep 2; echo $?; wait $!; echo $?"
...
function old new delta
process_wait_result 414 426 +12
builtin_wait 283 291 +8
run_list 974 978 +4
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 3/0 up/down: 24/0) Total: 24 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2017-07-07 22:56:02 +02:00
2db74610cd
hush: fix two redirection testcase failures
...
function old new delta
save_fds_on_redirect 183 256 +73
fcntl_F_DUPFD - 46 +46
restore_redirects 74 96 +22
xdup_and_close 51 72 +21
setup_redirects 196 200 +4
hush_main 988 983 -5
static.C 12 - -12
run_pipe 1595 1551 -44
------------------------------------------------------------------------------
(add/remove: 1/1 grow/shrink: 4/2 up/down: 166/-61) Total: 105 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2017-07-07 22:07:28 +02:00
111cdcf295
shell: sync redir/* tests
...
Note: hush-redir/redir_to_bad_fd.tests currently fails
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2017-07-06 21:01:50 +02:00
50b8b2914b
hush: add a TODO about redir3.tests failure
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2017-07-06 20:57:37 +02:00
a107ef2a6a
hush: rename hush-redir/redir3.tests (ash has redir3.tests which id different)
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2017-07-06 20:36:40 +02:00
e59591a364
hush: Print error messages on shift -1
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2017-07-06 20:12:44 +02:00
74d20e6379
typo fix
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2017-07-06 19:50:42 +02:00
5dad7bdc3b
hush: implement negative start in the ${v: -n[:m]} idiom
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2017-07-06 19:48:20 +02:00
3234045d07
hush: "adopt" ash var-utf8-length.tests
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2017-07-06 19:29:23 +02:00
7456298472
hush: "adopt" ash signal4.tests
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2017-07-06 18:40:45 +02:00
b18b04c8a8
shell: remove duplicate sigint1.tests (another copies are in signals/)
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2017-07-06 18:37:30 +02:00
cafb2d195d
hush: add tickquote1.tests from ash testsuite
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2017-07-06 18:31:47 +02:00
959cb67428
shell: syncronize ash and hush heredoc1.tests
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2017-07-06 18:16:18 +02:00
9a8ece5158
shell: syncronize ash_test/run-all and hush_test/run-all a bit
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2017-07-06 17:59:25 +02:00
bd43c6784f
hush: fix quoted_punct.tests failure
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2017-07-05 23:12:15 +02:00
fda9fafe27
ash: fix matching of unicode greek letter rho (cf 81) and similar cases
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2017-07-05 19:10:21 +02:00
f547041940
ash,hush: fix SIGCHLD interrupting read builtin
...
function old new delta
readcmd 169 217 +48
shell_builtin_read 1087 1097 +10
localcmd 366 364 -2
builtin_read 197 193 -4
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/2 up/down: 58/-6) Total: 52 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2017-05-22 19:34:45 +02:00
10ad622dc2
Spelling fixes in comments, documentation, tests and examples
...
By klemens <ka7@github.com >
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2017-04-17 16:13:32 +02:00
2b1559056c
hush: fix a bug in argv restoration after sourcing a file
...
if sourced file "shift"ed argvs so that $1 is NULL, restore wasn't done.
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2017-01-09 08:13:21 +01:00
86584e134e
ash: fix open fds leaking in redirects. Closes 9561
...
commit e19923f665
deleted clearredir()
call in shellexec():
ash: [REDIR] Remove redundant CLOEXEC calls
Upstream commit:
Now that we're marking file descriptors as CLOEXEC in savefd, we no longer
need to close them on exec or in setinputfd.
but it missed one place where we don't set CLOEXEC. Fixing this.
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2017-01-07 10:16:56 +01:00
ea7d2f6ec0
ash: fix error code regression
...
The commit 'ash,hush: set exit code 127 in "sh /does/not/exist" case'
only partly implemented the dash commit '[ERROR] Allow the originator
of EXERROR to set the exit status'. This resulted in incorrect error
codes for a syntax error:
$ )
$ echo $?
0
or a redirection error for a special builtin:
$ rm -f xxx
$ eval cat <xxx
$ echo $?
0
Signed-off-by: Ron Yorston <rmy@pobox.com >
Reported-by: Martijn Dekker <martijn@inlv.org >
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2017-01-03 11:18:23 +01:00