mirror of
https://github.com/sheumann/hush.git
synced 2024-06-14 09:29:38 +00:00
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;
|
int i;
|
||||||
|
|
||||||
while ((i = nextopt("a")) != '\0') {
|
while (nextopt("a") != '\0') {
|
||||||
if (i == 'a') {
|
rmaliases();
|
||||||
rmaliases();
|
return 0;
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
for (i = 0; *argptr; argptr++) {
|
for (i = 0; *argptr; argptr++) {
|
||||||
if (unalias(*argptr)) {
|
if (unalias(*argptr)) {
|
||||||
|
@ -9354,7 +9352,14 @@ truecmd(int argc UNUSED_PARAM, char **argv UNUSED_PARAM)
|
||||||
static int FAST_FUNC
|
static int FAST_FUNC
|
||||||
execcmd(int argc UNUSED_PARAM, char **argv)
|
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 */
|
iflag = 0; /* exit on error */
|
||||||
mflag = 0;
|
mflag = 0;
|
||||||
optschanged();
|
optschanged();
|
||||||
|
@ -9370,7 +9375,10 @@ execcmd(int argc UNUSED_PARAM, char **argv)
|
||||||
/*setsignal(SIGTSTP); - unnecessary because of mflag=0 */
|
/*setsignal(SIGTSTP); - unnecessary because of mflag=0 */
|
||||||
/*setsignal(SIGTTOU); - 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 */
|
/* NOTREACHED */
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user