mirror of
git://git.code.sf.net/p/zsh/code
synced 2025-09-03 10:21:46 +02:00
Equivalence of $(...) and ...
in ${(e)...}.
This commit is contained in:
parent
ae9c181d6b
commit
5fdcd3a2b4
3 changed files with 22 additions and 7 deletions
|
@ -1,3 +1,8 @@
|
|||
2001-09-25 Bart Schaefer <schaefer@zsh.org>
|
||||
|
||||
* 15871, 15872: Src/subst.c, Test/D04parameter.ztst: Equivalence
|
||||
of `...` and $(...) in parameter substitutions, e.g. ${(e)...}.
|
||||
|
||||
2001-09-25 Sven Wischnowsky <wischnow@zsh.org>
|
||||
|
||||
* 15868, 15869: Src/text.c: job text building code couldn't handle
|
||||
|
|
13
Src/subst.c
13
Src/subst.c
|
@ -133,7 +133,7 @@ stringsubst(LinkList list, LinkNode node, int ssub, int asssub)
|
|||
str3 = (char *)getdata(node);
|
||||
continue;
|
||||
}
|
||||
} else if ((qt = c == Qtick) || c == Tick)
|
||||
} else if ((qt = c == Qtick) || (c == Tick ? (mult_isarr = 1) : 0))
|
||||
comsub: {
|
||||
LinkList pl;
|
||||
char *s, *str2 = str;
|
||||
|
@ -724,9 +724,12 @@ subst_parse_str(char **sp, int single, int err)
|
|||
int qt = 0;
|
||||
|
||||
for (; *s; s++)
|
||||
if (!qt && *s == Qstring)
|
||||
*s = String;
|
||||
else if (*s == Dnull)
|
||||
if (!qt) {
|
||||
if (*s == Qstring)
|
||||
*s = String;
|
||||
else if (*s == Qtick)
|
||||
*s = Tick;
|
||||
} else if (*s == Dnull)
|
||||
qt = !qt;
|
||||
}
|
||||
return 0;
|
||||
|
@ -1492,7 +1495,7 @@ paramsubst(LinkList l, LinkNode n, char **str, int qt, int ssub)
|
|||
/* This once was executed only `if (qt) ...'. But with that
|
||||
* patterns in a expansion resulting from a ${(e)...} aren't
|
||||
* tokenized even though this function thinks they are (it thinks
|
||||
* they are because subst_parse_string() turns Qstring tokens
|
||||
* they are because subst_parse_str() turns Qstring tokens
|
||||
* into String tokens and for unquoted parameter expansions the
|
||||
* lexer normally does tokenize patterns inside parameter
|
||||
* expansions). */
|
||||
|
|
|
@ -212,10 +212,17 @@
|
|||
>split me
|
||||
>I'm yours
|
||||
|
||||
foo='$(print Howzat)'
|
||||
print ${(e)foo}
|
||||
foo='$(print Howzat usay)'
|
||||
print -l ${(e)foo}
|
||||
0:${(e)...}
|
||||
>Howzat
|
||||
>usay
|
||||
|
||||
foo='`print Howzat usay`'
|
||||
print -l ${(e)foo}
|
||||
0:Regress ${(e)...} with backticks (see zsh-workers/15871)
|
||||
>Howzat
|
||||
>usay
|
||||
|
||||
foo='I'\''m nearly out of my mind with tedium'
|
||||
bar=foo
|
||||
|
|
Loading…
Reference in a new issue