diff options
author | Peter Stephenson <pws@zsh.org> | 2016-01-19 09:55:46 +0000 |
---|---|---|
committer | Peter Stephenson <pws@zsh.org> | 2016-01-19 09:55:46 +0000 |
commit | 8eb9070d6785f423dd9bdbbb0513aa47c8a08d62 (patch) | |
tree | 412d2d74ceabd14860d313e9338de48e7b5d8291 /Src/glob.c | |
parent | d0cd9032d8b46051b490790a30e87a1e87c86670 (diff) | |
download | zsh-8eb9070d6785f423dd9bdbbb0513aa47c8a08d62.tar.gz zsh-8eb9070d6785f423dd9bdbbb0513aa47c8a08d62.tar.xz zsh-8eb9070d6785f423dd9bdbbb0513aa47c8a08d62.zip |
37678: Now possible to quote "-" in pattern range
Diffstat (limited to 'Src/glob.c')
-rw-r--r-- | Src/glob.c | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/Src/glob.c b/Src/glob.c index 8bd2fc493..e5d8956e6 100644 --- a/Src/glob.c +++ b/Src/glob.c @@ -3476,7 +3476,7 @@ static void zshtokenize(char *s, int flags) { char *t; - int bslash = 0; + int bslash = 0, seen_brct = 0; for (; *s; s++) { cont: @@ -3507,21 +3507,35 @@ zshtokenize(char *s, int flags) *t = Inang; *s = Outang; break; + case '[': + if (bslash) + s[-1] = (flags & ZSHTOK_SUBST) ? Bnullkeep : Bnull; + else { + seen_brct = 1; + *s = Inbrack; + } + break; + case '-': + if (bslash) + s[-1] = (flags & ZSHTOK_SUBST) ? Bnullkeep : Bnull; + else if (seen_brct) /* see corresonding code in lex.c */ + *s = Dash; + break; case '(': case '|': case ')': if (flags & ZSHTOK_SHGLOB) break; + /*FALLTHROUGH*/ case '>': case '^': case '#': case '~': - case '[': case ']': case '*': case '?': case '=': - for (t = ztokens; *t; t++) + for (t = ztokens; *t; t++) { if (*t == *s) { if (bslash) s[-1] = (flags & ZSHTOK_SUBST) ? Bnullkeep : Bnull; @@ -3529,6 +3543,8 @@ zshtokenize(char *s, int flags) *s = (t - ztokens) + Pound; break; } + } + break; } bslash = 0; } |