mirror of
git://git.code.sf.net/p/zsh/code
synced 2024-09-22 03:40:47 +02:00
16400, 16401: preserve empty words that result from brace expansion.
This commit is contained in:
parent
31634c24e7
commit
0524ab98ff
17
Src/subst.c
17
Src/subst.c
@ -49,8 +49,8 @@ char nulstring[] = {Nularg, '\0'};
|
||||
mod_export void
|
||||
prefork(LinkList list, int flags)
|
||||
{
|
||||
LinkNode node;
|
||||
int asssub = (flags & PF_TYPESET) && isset(KSHTYPESET);
|
||||
LinkNode node, stop = 0;
|
||||
int keep = 0, asssub = (flags & PF_TYPESET) && isset(KSHTYPESET);
|
||||
|
||||
queue_signals();
|
||||
for (node = firstnode(list); node; incnode(node)) {
|
||||
@ -78,15 +78,22 @@ prefork(LinkList list, int flags)
|
||||
}
|
||||
}
|
||||
for (node = firstnode(list); node; incnode(node)) {
|
||||
if (node == stop)
|
||||
keep = 0;
|
||||
if (*(char *)getdata(node)) {
|
||||
remnulargs(getdata(node));
|
||||
if (unset(IGNOREBRACES) && !(flags & PF_SINGLE))
|
||||
while (hasbraces(getdata(node)))
|
||||
if (unset(IGNOREBRACES) && !(flags & PF_SINGLE)) {
|
||||
if (!keep)
|
||||
stop = nextnode(node);
|
||||
while (hasbraces(getdata(node))) {
|
||||
keep = 1;
|
||||
xpandbraces(list, &node);
|
||||
}
|
||||
}
|
||||
if (unset(SHFILEEXPANSION))
|
||||
filesub((char **)getaddrdata(node),
|
||||
flags & (PF_TYPESET|PF_ASSIGN));
|
||||
} else if (!(flags & PF_SINGLE))
|
||||
} else if (!(flags & PF_SINGLE) && !keep)
|
||||
uremnode(list, node);
|
||||
if (errflag) {
|
||||
unqueue_signals();
|
||||
|
Loading…
Reference in New Issue
Block a user