diff options
author | Tanaka Akira <akr@users.sourceforge.net> | 1999-04-15 18:09:05 +0000 |
---|---|---|
committer | Tanaka Akira <akr@users.sourceforge.net> | 1999-04-15 18:09:05 +0000 |
commit | 9003d99d16c46b5679da7fcf1f2a41adef495ff9 (patch) | |
tree | 95244be534cc37c03a628068faf7712da6317196 /Src/cond.c | |
parent | f13624e0f8a3c28c90aa0ce8ee36b639a491e4a9 (diff) | |
download | zsh-9003d99d16c46b5679da7fcf1f2a41adef495ff9.tar.gz zsh-9003d99d16c46b5679da7fcf1f2a41adef495ff9.tar.xz zsh-9003d99d16c46b5679da7fcf1f2a41adef495ff9.zip |
zsh-3.1.5-pws-3 zsh-3.1.5-pws-3
Diffstat (limited to 'Src/cond.c')
-rw-r--r-- | Src/cond.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/Src/cond.c b/Src/cond.c index 79886a720..ed91f72f3 100644 --- a/Src/cond.c +++ b/Src/cond.c @@ -43,6 +43,26 @@ evalcond(Cond c) return evalcond(c->left) && evalcond(c->right); case COND_OR: return evalcond(c->left) || evalcond(c->right); + case COND_MOD: + case COND_MODI: + { + Conddef cd; + + if ((cd = getconddef((c->type == COND_MODI), (char *) c->left, 1))) { + if (c->type == COND_MOD) { + int l = arrlen((char **) c->right); + + if (l < cd->min || (cd->max >= 0 && l > cd->max)) { + zerr("unrecognized condition: `-%s'", (char *) c->left, 0); + return 0; + } + } + return cd->handler(cd, (char **) c->right); + } + else + zerr("unrecognized condition: `-%s'", (char *) c->left, 0); + return 0; + } } singsub((char **)&c->left); untokenize(c->left); |