From a76b8ea1a52442c2a287db12305b34c3e2b16f7f Mon Sep 17 00:00:00 2001 From: Tanaka Akira Date: Fri, 18 Feb 2000 09:37:17 +0000 Subject: zsh-workers/9787 --- Src/utils.c | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) (limited to 'Src/utils.c') diff --git a/Src/utils.c b/Src/utils.c index e1214302c..92963092d 100644 --- a/Src/utils.c +++ b/Src/utils.c @@ -2819,6 +2819,39 @@ bslashquote(const char *s, char **e, int instring) } continue; } + else if (*u == Tick || *u == Qtick) { + char c = *u++; + + *v++ = c; + while (*u && *u != c) + *v++ = *u++; + *v++ = c; + if (!*u) + u--; + continue; + } + else if ((*u == String || *u == Qstring) && + (u[1] == Inpar || u[1] == Inbrack || u[1] == Inbrace)) { + char c = (u[1] == Inpar ? Outpar : (u[1] == Inbrace ? + Outbrace : Outbrack)); + char beg = *u; + int level = 0; + + *v++ = *u++; + *v++ = *u++; + while (*u && (*u != c || level)) { + if (*u == beg) + level++; + else if (*u == c) + level--; + *v++ = *u++; + } + if (*u) + *v++ = *u; + else + u--; + continue; + } else if (ispecial(*u) && ((*u != '=' && *u != '~') || u == s || -- cgit 1.4.1