summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog3
-rw-r--r--Src/Zle/computil.c6
2 files changed, 6 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 2403cec48..a96996ad3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -4,6 +4,9 @@
2000-04-17 Sven Wischnowsky <wischnow@informatik.hu-berlin.de>
+ * 10782: Src/Zle/computil.c: fix for exclusion lists for -+o
+ specifications
+
* 10780: Completion/Base/_default, Completion/Base/_value,
Completion/Builtins/_vars_eq, Completion/Builtins/_zstyle,
Doc/Zsh/compsys.yo: better completion after `=', everywhere
diff --git a/Src/Zle/computil.c b/Src/Zle/computil.c
index 129119799..709e8f1ab 100644
--- a/Src/Zle/computil.c
+++ b/Src/Zle/computil.c
@@ -623,7 +623,7 @@ parse_cadef(char *nam, char **args)
* stuff twice for such things. */
name = ++p;
*p = (again ? '-' : '+');
- again = 1 - again;
+ again++;
} else {
name = p;
/* If it's a long option skip over the first `-'. */
@@ -767,7 +767,7 @@ parse_cadef(char *nam, char **args)
opt->descr = NULL;
} else
opt->descr = NULL;
- opt->xor = xor;
+ opt->xor = (again == 1 ? zarrdup(xor) : xor);
opt->type = otype;
opt->args = oargs;
opt->num = nopts++;
@@ -783,7 +783,7 @@ parse_cadef(char *nam, char **args)
if (single && name[1] && !name[2])
ret->single[STOUC(name[1])] = opt;
- if (again) {
+ if (again == 1) {
/* Do it all again for `*-...'. */
p = dupstring(*args);
goto rec;