summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--Src/Modules/zutil.c6
2 files changed, 9 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 5e6b148a9..8a8666c1d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -5,6 +5,11 @@
 
 2016-01-26  Barton E. Schaefer  <schaefer@brasslantern.com>
 
+	* 37802: Doc/Zsh/mod_zutil.yo: Clarify zparseopts description.
+
+	* 37802: Src/Modules/zutil.c: zparseopts "X::" specifier should
+	also look for the optional argument in the word after "-X".
+
 	* 37785: Src/params.c: skip autoload parameters for "typeset -p"
 
 2016-01-25  Barton E. Schaefer  <schaefer@zsh.org>
diff --git a/Src/Modules/zutil.c b/Src/Modules/zutil.c
index 376cd8402..d98028a84 100644
--- a/Src/Modules/zutil.c
+++ b/Src/Modules/zutil.c
@@ -1833,7 +1833,8 @@ bin_zparseopts(char *nam, char **args, UNUSED(Options ops), UNUSED(int func))
 		    if (o[1]) {
 			add_opt_val(d, o + 1);
 			break;
-		    } else if (!(d->flags & ZOF_OPT)) {
+		    } else if (!(d->flags & ZOF_OPT) ||
+			       (pp[1] && pp[1][0] != '-')) {
 			if (!pp[1]) {
 			    zwarnnam(nam, "missing argument for option: %s",
 				    d->name);
@@ -1859,7 +1860,8 @@ bin_zparseopts(char *nam, char **args, UNUSED(Options ops), UNUSED(int func))
 
 		if (*e)
 		    add_opt_val(d, e);
-		else if (!(d->flags & ZOF_OPT)) {
+		else if (!(d->flags & ZOF_OPT) ||
+			 (pp[1] && pp[1][0] != '-')) {
 		    if (!pp[1]) {
 			zwarnnam(nam, "missing argument for option: %s",
 				d->name);