mirror of
git://git.code.sf.net/p/zsh/code
synced 2024-09-22 11:51:04 +02:00
41020: Fix "command -p"; "-p" was incorrectly left in command arguments
Also add tests for known precommand modifier issues.
This commit is contained in:
parent
d7110d8f01
commit
ed4e37e45c
@ -1,3 +1,8 @@
|
||||
2017-04-28 Peter Stephenson <p.stephenson@samsung.com>
|
||||
|
||||
* 41020: Src/exec.c, Test/A01grammar.ztst: "command -p" was
|
||||
broken by 41008, also add more tests for precommand modifiers.
|
||||
|
||||
2017-04-27 Peter Stephenson <p.w.stephenson@ntlworld.com>
|
||||
|
||||
* 41012: Src/builtin.c, Src/exec.c, Src/signals.c,
|
||||
|
@ -2824,7 +2824,7 @@ execcmd_exec(Estate state, Execcmd_params eparams,
|
||||
* Otherwise, just leave marked as BINF_COMMAND
|
||||
* modifier with no additional action.
|
||||
*/
|
||||
LinkNode argnode, oldnode;
|
||||
LinkNode argnode, oldnode, pnode = NULL;
|
||||
char *argdata, *cmdopt;
|
||||
int has_p = 0, has_vV = 0, has_other = 0;
|
||||
argnode = firstnode(preargs);
|
||||
@ -2845,6 +2845,7 @@ execcmd_exec(Estate state, Execcmd_params eparams,
|
||||
* also traditional behaviour.
|
||||
*/
|
||||
has_p = 1;
|
||||
pnode = argnode;
|
||||
break;
|
||||
case 'v':
|
||||
case 'V':
|
||||
@ -2882,6 +2883,12 @@ execcmd_exec(Estate state, Execcmd_params eparams,
|
||||
} else if (has_p) {
|
||||
/* Use default path */
|
||||
use_defpath = 1;
|
||||
/*
|
||||
* We don't need this node as we're not treating
|
||||
* "command" as a builtin this time.
|
||||
*/
|
||||
if (pnode)
|
||||
uremnode(preargs, pnode);
|
||||
}
|
||||
/*
|
||||
* Else just any trailing
|
||||
|
@ -116,9 +116,11 @@
|
||||
|
||||
(\exec /bin/sh -c 'echo Test one'; print Not reached)
|
||||
('exec' /bin/sh -c 'echo Test two'; print Not reached)
|
||||
0:exec with quotes
|
||||
(\exec -c /bin/sh -c 'echo Test three'; print Not reached)
|
||||
0:precommand modifiers with quotes
|
||||
>Test one
|
||||
>Test two
|
||||
>Test three
|
||||
|
||||
cat() { echo Function cat executed; }
|
||||
command cat && unfunction cat
|
||||
@ -126,6 +128,14 @@
|
||||
<External command cat executed
|
||||
>External command cat executed
|
||||
|
||||
(command -p echo this is output)
|
||||
(\command -p echo this is more output)
|
||||
('command' -p echo this is yet more output)
|
||||
0: command -p without -v or -V
|
||||
>this is output
|
||||
>this is more output
|
||||
>this is yet more output
|
||||
|
||||
command -pv cat
|
||||
command -pv echo
|
||||
command -p -V cat
|
||||
|
Loading…
Reference in New Issue
Block a user