summaryrefslogtreecommitdiff
path: root/Src/glob.c
diff options
context:
space:
mode:
authorPeter Stephenson <pws@users.sourceforge.net>2008-05-11 19:55:21 +0000
committerPeter Stephenson <pws@users.sourceforge.net>2008-05-11 19:55:21 +0000
commit58580d31f593021e2ed4bfad8362e3b01bf396f3 (patch)
tree580a8b44393b087cba28e4a740641f32d3537fd3 /Src/glob.c
parentbab70abe6bcdd28b829adbe582069dc08d9d1c02 (diff)
downloadzsh-58580d31f593021e2ed4bfad8362e3b01bf396f3.tar.gz
zsh-58580d31f593021e2ed4bfad8362e3b01bf396f3.zip
24996: improve xtrace output for patterns
Diffstat (limited to 'Src/glob.c')
-rw-r--r--Src/glob.c19
1 files changed, 11 insertions, 8 deletions
diff --git a/Src/glob.c b/Src/glob.c
index cc1db0937..96bce0ed2 100644
--- a/Src/glob.c
+++ b/Src/glob.c
@@ -2987,7 +2987,7 @@ igetmatch(char **sp, Patprog p, int fl, int n, char *replstr,
mod_export void
tokenize(char *s)
{
- zshtokenize(s, 0, 0);
+ zshtokenize(s, 0);
}
/*
@@ -3004,12 +3004,15 @@ tokenize(char *s)
mod_export void
shtokenize(char *s)
{
- zshtokenize(s, 1, isset(SHGLOB));
+ int flags = ZSHTOK_SUBST;
+ if (isset(SHGLOB))
+ flags |= ZSHTOK_SHGLOB;
+ zshtokenize(s, flags);
}
/**/
static void
-zshtokenize(char *s, int glbsbst, int shglob)
+zshtokenize(char *s, int flags)
{
char *t;
int bslash = 0;
@@ -3021,16 +3024,16 @@ zshtokenize(char *s, int glbsbst, int shglob)
case Bnullkeep:
case '\\':
if (bslash) {
- s[-1] = glbsbst ? Bnullkeep : Bnull;
+ s[-1] = (flags & ZSHTOK_SUBST) ? Bnullkeep : Bnull;
break;
}
bslash = 1;
continue;
case '<':
- if (shglob)
+ if (flags & ZSHTOK_SHGLOB)
break;
if (bslash) {
- s[-1] = glbsbst ? Bnullkeep : Bnull;
+ s[-1] = (flags & ZSHTOK_SUBST) ? Bnullkeep : Bnull;
break;
}
t = s;
@@ -3046,7 +3049,7 @@ zshtokenize(char *s, int glbsbst, int shglob)
case '(':
case '|':
case ')':
- if (shglob)
+ if (flags & ZSHTOK_SHGLOB)
break;
case '>':
case '^':
@@ -3060,7 +3063,7 @@ zshtokenize(char *s, int glbsbst, int shglob)
for (t = ztokens; *t; t++)
if (*t == *s) {
if (bslash)
- s[-1] = glbsbst ? Bnullkeep : Bnull;
+ s[-1] = (flags & ZSHTOK_SUBST) ? Bnullkeep : Bnull;
else
*s = (t - ztokens) + Pound;
break;