summaryrefslogtreecommitdiff
path: root/Src/subst.c
diff options
context:
space:
mode:
authorBart Schaefer <barts@users.sourceforge.net>2001-09-25 17:37:54 +0000
committerBart Schaefer <barts@users.sourceforge.net>2001-09-25 17:37:54 +0000
commit5fdcd3a2b46866aeafa99c980608577b21b470de (patch)
tree78d91fe9d66b52d1f7a8c18226129ae6254bb95c /Src/subst.c
parentae9c181d6ba34c4f9db425f22b642c7bd22e4a79 (diff)
downloadzsh-5fdcd3a2b46866aeafa99c980608577b21b470de.tar.gz
zsh-5fdcd3a2b46866aeafa99c980608577b21b470de.zip
Equivalence of $(...) and `...` in ${(e)...}.
Diffstat (limited to 'Src/subst.c')
-rw-r--r--Src/subst.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/Src/subst.c b/Src/subst.c
index 8bd1a1ae3..4ed6e5e45 100644
--- a/Src/subst.c
+++ b/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). */