summaryrefslogtreecommitdiff
path: root/Src/Zle/complete.c
diff options
context:
space:
mode:
authorSven Wischnowsky <wischnow@users.sourceforge.net>2000-06-13 09:05:35 +0000
committerSven Wischnowsky <wischnow@users.sourceforge.net>2000-06-13 09:05:35 +0000
commitcedd1006e661b990aaa8881c2efd4116bed574a3 (patch)
tree0d38ad379e55e3b1f9388a5fc661753de65c30a6 /Src/Zle/complete.c
parent055d961f84fcfb430aceb40bdb7932d962b143e9 (diff)
downloadzsh-cedd1006e661b990aaa8881c2efd4116bed574a3.tar.gz
zsh-cedd1006e661b990aaa8881c2efd4116bed574a3.zip
fixes for calling compfiles, for completing words with special characters; make compfiles optimisations work with globcomplete and simple match (sunsite isn't responding)
Diffstat (limited to 'Src/Zle/complete.c')
-rw-r--r--Src/Zle/complete.c29
1 files changed, 20 insertions, 9 deletions
diff --git a/Src/Zle/complete.c b/Src/Zle/complete.c
index 1a659f781..11f6d24ef 100644
--- a/Src/Zle/complete.c
+++ b/Src/Zle/complete.c
@@ -204,16 +204,20 @@ parse_cmatcher(char *name, char *s)
case 'R': fl = CMF_RIGHT | CMF_LINE; break;
case 'M': fl = CMF_LINE; break;
default:
- zwarnnam(name, "unknown match specification character `%c'", NULL, *s);
+ if (name)
+ zwarnnam(name, "unknown match specification character `%c'",
+ NULL, *s);
return pcm_err;
}
if (s[1] != ':') {
- zwarnnam(name, "missing `:'", NULL, 0);
+ if (name)
+ zwarnnam(name, "missing `:'", NULL, 0);
return pcm_err;
}
s += 2;
if (!*s) {
- zwarnnam(name, "missing patterns", NULL, 0);
+ if (name)
+ zwarnnam(name, "missing patterns", NULL, 0);
return pcm_err;
}
if (fl & CMF_LEFT) {
@@ -225,7 +229,8 @@ parse_cmatcher(char *name, char *s)
s++;
if (!*s || !*++s) {
- zwarnnam(name, "missing line pattern", NULL, 0);
+ if (name)
+ zwarnnam(name, "missing line pattern", NULL, 0);
return pcm_err;
}
} else
@@ -242,10 +247,12 @@ parse_cmatcher(char *name, char *s)
ll = 0;
}
if ((fl & CMF_RIGHT) && (!*s || !*++s)) {
- zwarnnam(name, "missing right anchor", NULL, 0);
+ if (name)
+ zwarnnam(name, "missing right anchor", NULL, 0);
} else if (!(fl & CMF_RIGHT)) {
if (!*s) {
- zwarnnam(name, "missing word pattern", NULL, 0);
+ if (name)
+ zwarnnam(name, "missing word pattern", NULL, 0);
return pcm_err;
}
s++;
@@ -262,7 +269,8 @@ parse_cmatcher(char *name, char *s)
if (err)
return pcm_err;
if (!*s) {
- zwarnnam(name, "missing word pattern", NULL, 0);
+ if (name)
+ zwarnnam(name, "missing word pattern", NULL, 0);
return pcm_err;
}
s++;
@@ -271,7 +279,8 @@ parse_cmatcher(char *name, char *s)
if (*s == '*') {
if (!(fl & (CMF_LEFT | CMF_RIGHT))) {
- zwarnnam(name, "need anchor for `*'", NULL, 0);
+ if (name)
+ zwarnnam(name, "need anchor for `*'", NULL, 0);
return pcm_err;
}
word = NULL;
@@ -284,7 +293,9 @@ parse_cmatcher(char *name, char *s)
word = parse_pattern(name, &s, &wl, 0, &err);
if (!word && !line) {
- zwarnnam(name, "need non-empty word or line pattern", NULL, 0);
+ if (name)
+ zwarnnam(name, "need non-empty word or line pattern",
+ NULL, 0);
return pcm_err;
}
}