From a92d2d84c01b01882133ea508c043ea11de07271 Mon Sep 17 00:00:00 2001 From: Peter Stephenson Date: Mon, 10 Jan 2005 17:31:07 +0000 Subject: 20661: *(+func) = *(e:func:) --- Src/glob.c | 31 ++++++++++++++++++++++++++----- 1 file changed, 26 insertions(+), 5 deletions(-) (limited to 'Src') diff --git a/Src/glob.c b/Src/glob.c index 5519e0e02..c1f2fc0dc 100644 --- a/Src/glob.c +++ b/Src/glob.c @@ -1426,22 +1426,43 @@ zglob(LinkList list, LinkNode np, int nountok) s++; break; } + case '+': case 'e': { - char sav, *tt = get_strarg(s); + char sav, *tt; + int plus; + + if (s[-1] == '+') { + plus = 0; + tt = s; + while (iident(*tt)) + tt++; + if (tt == s) + { + zerr("missing identifier after `+'", NULL, 0); + tt = NULL; + } + } else { + plus = 1; + tt = get_strarg(s); + if (!*tt) + { + zerr("missing end of string", NULL, 0); + tt = NULL; + } + } - if (!*tt) { - zerr("missing end of string", NULL, 0); + if (tt == NULL) { data = 0; } else { sav = *tt; *tt = '\0'; func = qualsheval; - sdata = dupstring(s + 1); + sdata = dupstring(s + plus); untokenize(sdata); *tt = sav; if (sav) - s = tt + 1; + s = tt + plus; else s = tt; } -- cgit 1.4.1