hush: fix passing of $n on NOMMU
This commit is contained in:
parent
16a0c74f63
commit
30db43b5c5
12
shell/hush.c
12
shell/hush.c
@ -2342,11 +2342,13 @@ static void re_execute_shell(const char *s) NORETURN;
|
||||
static void re_execute_shell(const char *s)
|
||||
{
|
||||
struct variable *cur;
|
||||
char **argv, **pp;
|
||||
char **argv, **pp, **pp2;
|
||||
unsigned cnt;
|
||||
|
||||
/* hush -$<pid> -?<exitcode> -D<depth> ... -c <cmd> NULL */
|
||||
cnt = 7;
|
||||
/* 1:hush 2:-$<pid> 3:-?<exitcode> 4:-D<depth> <vars...>
|
||||
* 5:-c 6:<cmd> <argN...> 7:NULL
|
||||
*/
|
||||
cnt = 7 + G.global_argc;
|
||||
for (cur = G.top_var; cur; cur = cur->next) {
|
||||
if (!cur->flg_export || cur->flg_read_only)
|
||||
cnt += 2;
|
||||
@ -2370,7 +2372,9 @@ static void re_execute_shell(const char *s)
|
||||
}
|
||||
*pp++ = (char *) "-c";
|
||||
*pp++ = (char *) s;
|
||||
//TODO: pass $N
|
||||
pp2 = G.global_argv;
|
||||
while (*pp2)
|
||||
*pp++ = *pp2++;
|
||||
*pp = NULL;
|
||||
//TODO: pass traps and functions
|
||||
|
||||
|
7
shell/hush_test/hush-vars/param_subshell.right
Normal file
7
shell/hush_test/hush-vars/param_subshell.right
Normal file
@ -0,0 +1,7 @@
|
||||
1=1
|
||||
2=2
|
||||
3=3
|
||||
4=4
|
||||
5=5
|
||||
6=6
|
||||
7=7
|
13
shell/hush_test/hush-vars/param_subshell.tests
Executable file
13
shell/hush_test/hush-vars/param_subshell.tests
Executable file
@ -0,0 +1,13 @@
|
||||
if test $# = 0; then
|
||||
"$THIS_SH" "$0" 1 2 3 4 5 6 7 8 9
|
||||
exit
|
||||
fi
|
||||
echo 1=$1
|
||||
{ echo 2=$2; }
|
||||
{ echo 3=$3; } &
|
||||
usleep 100000
|
||||
( echo 4=$4 )
|
||||
( echo 5=$5 ) &
|
||||
usleep 100000
|
||||
true | echo 6=$6 | cat
|
||||
true | { echo 7=$7; } | cat
|
Loading…
Reference in New Issue
Block a user