9d4dc84a76
ash: protect WIFSTOPPED use with #if JOBS
...
This change fixes the build in setups where there are
no headers defining WIFSTOPPED and WSTOPSIG (where JOBS has to be
set to 0).
This partially reverts 4700fb5be
(ash: make dowait() a bit more
readable. Logic is unchanged, 2015-10-09).
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de >
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2017-07-15 11:38:00 +02:00
2ed74e25d3
hush: make "wait %1" work even if the job is dead
...
Example script:
sleep 1 | (sleep 1;exit 3) &
sleep 2
echo Zero:$?
wait %1
echo Three:$?
function old new delta
clean_up_last_dead_job - 24 +24
process_wait_result 426 447 +21
builtin_wait 285 293 +8
insert_job_into_table 264 269 +5
builtin_jobs 68 73 +5
remove_job_from_table 59 57 -2
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 4/1 up/down: 63/-2) Total: 61 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2017-07-14 19:58:46 +02:00
0c5657e911
hush: remove superfluous comparison
...
function old new delta
builtin_wait 291 285 -6
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2017-07-14 19:27:03 +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
b057806a6a
hush: add TODO for "set -e"
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2017-07-10 10:33:27 +02:00
9e55a156f8
hush: simplify insert_job_into_table() a bit
...
function old new delta
done_word 767 761 -6
insert_job_into_table 325 264 -61
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/2 up/down: 59/-126) Total: -67 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2017-07-10 10:01:12 +02:00
1609629a91
hush: rename a few functions
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2017-07-10 10:00:28 +02:00
13102634bb
hush: explain why wait5.tests is failing
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2017-07-08 00:24:32 +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
69a5ec9dcc
main: fix the case where user has "halt" as login shell. Closes 9986
...
halt::0:0::/:/sbin/halt
function old new delta
run_applet_and_exit 748 751 +3
run_applet_no_and_exit 467 459 -8
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2017-07-07 19:08:56 +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
1ff1a75710
ash: rename redir5.tests (hush has redir5.tests which is different)
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2017-07-06 21:00:19 +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
bb963bda62
shell: syncronize ash and hush heredoc3.tests
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2017-07-06 18:19:35 +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
637982f5bb
hush: correctly handle quoting in "case" even if !BASH_PATTERN_SUBST
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2017-07-06 01:52:23 +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
4142f0187d
ash: fix escaping of a few characters (broken by last commits)
...
Add a testcase which tests all ASCII punctuation escapes.
NB: hush is failing this test!
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2017-07-05 22:19:28 +02:00
ed79a63623
ash: tweak in comment
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2017-07-05 19:20:43 +02:00
92b8d9c9fa
ash: note which versions of glibc exhibit "rho bug"
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2017-07-05 19:13:44 +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
d4e4fdb5ce
fixes for bugs found by make_single_applets.sh
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2017-07-03 21:31:16 +02:00
2e989ef232
msh: delete this applet
...
It's deprecated since 2009 and interferes with make_single_applets.sh tests.
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2017-07-03 16:56:37 +02:00
4ee824f6ba
randomconfig fixes
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2017-07-03 01:22:13 +02:00
48c803a206
ash: fix $HOME/.profile reading if !ASH_EXPAND_PRMT, take 2
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2017-07-01 23:26:12 +02:00
e9aba3e7ea
ash: fix 'trap - 65'
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2017-07-01 21:09:27 +02:00
f56ddf2e4c
ash: fix $HOME/.profile reading if !ASH_EXPAND_PRMT
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2017-06-27 17:51:07 +02:00
6683d1cbb4
ash: fix incorrect path in describe_command
...
$ PATH=/extra/path:/usr/sbin:/usr/bin:/sbin:/bin \
> busybox sh -xc 'command -V ls; command -V ls; command -Vp ls; command -vp ls'
+ command -V ls
ls is /bin/ls
+ command -V ls
ls is a tracked alias for /bin/ls
+ command -Vp ls
ls is a tracked alias for (null)
+ command -vp ls
Segmentation fault
describe_command should respect `path' argument. Looking up in the hash table
may gives incorrect index in entry.u.index and finally causes incorrect output
or SIGSEGV.
function old new delta
describe_command 386 313 -73
Signed-off-by: Youfu Zhang <zhangyoufu@gmail.com >
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2017-05-26 17:37:35 +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
6c149f4d9a
ash: implement "exec -a ARGV0 CMD ARGV1..."
...
function old new delta
execcmd 71 112 +41
shellexec 221 224 +3
evalcommand 1158 1161 +3
localcmd 364 366 +2
unaliascmd 163 154 -9
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 4/1 up/down: 49/-9) Total: 40 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2017-04-12 21:31:32 +02:00
e139ae307e
ash: make shellexec capable of using separate argv[0] and filename to exec
...
function old new delta
execcmd 71 78 +7
shellexec 221 224 +3
evalcommand 1158 1161 +3
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 3/0 up/down: 13/0) Total: 13 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2017-04-12 21:02:33 +02:00
835ad3a984
libbb: GETOPT_RESET macro
...
Signed-off-by: Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi >
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2017-04-12 20:11:34 +02:00
5f7c82b32f
ash: add INT_OFF/ON around allocations
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2017-02-03 13:00:06 +01:00
b5b21126ca
ash: improve / fix glob expansion
...
When using musl libc glob() a very long string can cause glob() to fail,
which leads to an out of memory error being raised by ash.
This can happen easily if a very long quoted string contains *, even
though no glob expansion should ever be performed on it (since it's
quoted).
Fix this by properly parsing control characters and escaping and only
accept unquoted metacharacters. While we're at it, unify this check for
libc and built-in glob expansion
Signed-off-by: Felix Fietkau <nbd@nbd.name >
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2017-01-31 21:58:55 +01:00
67f6db6b27
wget: add a big explanation what TLS code implements and what does not
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2017-01-30 16:27:37 +01:00
205d48e948
*: add comment about APPLET_ODDNAME format
...
It confused me more than once
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2017-01-29 14:57:33 +01:00
786c9dc0c1
sh: fix FEATURE_SH_STANDALONE help text: it does not enable NOFORK
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2017-01-26 18:31:51 +01:00
098b713c7b
ash: commented-out possible fix for 7694
...
bash has a feature: it restores termios after a successful wait for
a foreground job which had at least one stopped or sigkilled member.
The probable rationale is that SIGSTOP and SIGKILL can preclude task from
properly restoring tty state. Should we do this too?
A reproducer: ^Z an interactive python:
$ python
Python 2.7.12 (...)
>>> ^Z
{ python leaves tty in -icanon -echo state. We do survive that... }
[1]+ Stopped python
{ ...however, next program (python no.2) does not survive it well: }
$ python
Python 2.7.12 (...)
>>> Traceback (most recent call last):
{ above, I typed "qwerty<CR>", but -echo state is still in effect }
File "<stdin>", line 1, in <module>
NameError: name 'qwerty' is not defined
The implementation is modeled on bash code and seems to work.
However, I'm not sure we should do this. For one: what if I'd fg
the stopped python instead? It'll be confused by "restored" tty state.
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2017-01-11 19:59:03 +01:00
4c179373e0
ash: 16-bit ->nprocs field is a pain for many CPUs
...
function old new delta
getoptscmd 527 540 +13
getjob 280 286 +6
makejob 278 282 +4
forkchild 602 600 -2
waitcmd 208 205 -3
showjob 382 379 -3
getstatus 83 80 -3
dowait 408 405 -3
freejob 93 89 -4
fg_bgcmd 290 286 -4
forkshell 260 255 -5
killcmd 224 218 -6
jobno 17 11 -6
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 3/10 up/down: 23/-39) Total: -16 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2017-01-11 18:44:15 +01:00