From 7f26993e99cccf2d56958643b8eb369625f04726 Mon Sep 17 00:00:00 2001 From: Peter Stephenson Date: Mon, 28 Jun 2004 15:38:10 +0000 Subject: 20112 changed c.f. 20113: fix here string and here document expansion and quoting --- Src/subst.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) (limited to 'Src/subst.c') diff --git a/Src/subst.c b/Src/subst.c index 189ecda6e..da3db5844 100644 --- a/Src/subst.c +++ b/Src/subst.c @@ -231,6 +231,36 @@ stringsubst(LinkList list, LinkNode node, int ssub, int asssub) return errflag ? NULL : node; } +/* + * Simplified version of the prefork/singsub processing where + * we only do substitutions appropriate to quoting. Currently + * this means only the expansions in $'....'. This is used + * for the end tag for here documents. As we are not doing + * `...` expansions, we just use those for quoting. However, + * they stay in the text. This is weird, but that's not + * my fault. + * + * The remnulargs() makes this consistent with the other forms + * of substitution, indicating that quotes have been fully + * processed. + */ + +/**/ +void +quotesubst(char *str) +{ + char *s = str; + + while (*s) { + if (*s == String && s[1] == Snull) { + s = getkeystring(s, NULL, 4, NULL); + } else { + s++; + } + } + remnulargs(str); +} + /**/ mod_export void globlist(LinkList list, int nountok) -- cgit 1.4.1