1c0ff6aa23
Later, the aports folder will probably get split up in its own repository. But right now this is simply convenient.
69 lines
2.1 KiB
Diff
69 lines
2.1 KiB
Diff
From 6c149f4d9afaed9edb75c88b784ad900c1f40700 Mon Sep 17 00:00:00 2001
|
|
From: Denys Vlasenko <vda.linux@googlemail.com>
|
|
Date: Wed, 12 Apr 2017 21:31:32 +0200
|
|
Subject: [PATCH 14/14] 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>
|
|
---
|
|
shell/ash.c | 22 +++++++++++++++-------
|
|
1 file changed, 15 insertions(+), 7 deletions(-)
|
|
|
|
diff --git a/shell/ash.c b/shell/ash.c
|
|
index 044f166..e170bec 100644
|
|
--- a/shell/ash.c
|
|
+++ b/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;
|
|
--
|
|
2.9.3
|
|
|