hush: fix passing of $n on NOMMU

This commit is contained in:
Denis Vlasenko 2009-04-05 02:10:39 +00:00
parent 16a0c74f63
commit 30db43b5c5
3 changed files with 28 additions and 4 deletions

View File

@ -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

View File

@ -0,0 +1,7 @@
1=1
2=2
3=3
4=4
5=5
6=6
7=7

View 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