From a40417929cb6f94ccd8fb5af78aa47ff69a785c0 Mon Sep 17 00:00:00 2001 From: Jun-ichi Takimoto Date: Sun, 25 Oct 2015 23:42:03 +0900 Subject: 36911: '-optarg' should not match optspec '-opt=' Remove the requirement that -xy= should come before -x= in the list of optspecs passed to _arguments. --- ChangeLog | 5 +++++ Src/Zle/computil.c | 7 +++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index e6edaa8c0..8bf01dc3f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2015-10-25 Jun-ichi Takimoto + + * 36911: Src/Zle/computil.c: '-optarg' should not match + optspec '-opt=' + 2015-10-24 Barton E. Schaefer * 36943 (with updated comment): Src/mem.c: restore scan for diff --git a/Src/Zle/computil.c b/Src/Zle/computil.c index e5db0867b..db8db88a6 100644 --- a/Src/Zle/computil.c +++ b/Src/Zle/computil.c @@ -1693,10 +1693,13 @@ ca_get_opt(Cadef d, char *line, int full, char **end) for (p = d->opts; p; p = p->next) if (p->active && ((!p->args || p->type == CAO_NEXT) ? !strcmp(p->name, line) : strpfx(p->name, line))) { + int l = strlen(p->name); + if ((p->type == CAO_OEQUAL || p->type == CAO_EQUAL) && + line[l] && line[l] != '=') + continue; + if (end) { /* Return a pointer to the end of the option. */ - int l = strlen(p->name); - if ((p->type == CAO_OEQUAL || p->type == CAO_EQUAL) && line[l] == '=') l++; -- cgit 1.4.1