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>
This commit is contained in:
parent
e139ae307e
commit
6c149f4d9a
22
shell/ash.c
22
shell/ash.c
@ -3345,11 +3345,9 @@ unaliascmd(int argc UNUSED_PARAM, char **argv UNUSED_PARAM)
|
||||
{
|
||||
int i;
|
||||
|
||||
while ((i = nextopt("a")) != '\0') {
|
||||
if (i == 'a') {
|
||||
rmaliases();
|
||||
return 0;
|
||||
}
|
||||
while (nextopt("a") != '\0') {
|
||||
rmaliases();
|
||||
return 0;
|
||||
}
|
||||
for (i = 0; *argptr; argptr++) {
|
||||
if (unalias(*argptr)) {
|
||||
@ -9354,7 +9352,14 @@ truecmd(int argc UNUSED_PARAM, char **argv UNUSED_PARAM)
|
||||
static int FAST_FUNC
|
||||
execcmd(int argc UNUSED_PARAM, char **argv)
|
||||
{
|
||||
if (argv[1]) {
|
||||
optionarg = NULL;
|
||||
while (nextopt("a:") != '\0')
|
||||
/* nextopt() sets optionarg to "-a ARGV0" */;
|
||||
|
||||
argv = argptr;
|
||||
if (argv[0]) {
|
||||
char *prog;
|
||||
|
||||
iflag = 0; /* exit on error */
|
||||
mflag = 0;
|
||||
optschanged();
|
||||
@ -9370,7 +9375,10 @@ execcmd(int argc UNUSED_PARAM, char **argv)
|
||||
/*setsignal(SIGTSTP); - unnecessary because of mflag=0 */
|
||||
/*setsignal(SIGTTOU); - unnecessary because of mflag=0 */
|
||||
|
||||
shellexec(argv[1], argv + 1, pathval(), 0);
|
||||
prog = argv[0];
|
||||
if (optionarg)
|
||||
argv[0] = optionarg;
|
||||
shellexec(prog, argv, pathval(), 0);
|
||||
/* NOTREACHED */
|
||||
}
|
||||
return 0;
|
||||
|
Loading…
Reference in New Issue
Block a user