summary refs log tree commit diff
diff options
context:
space:
mode:
authorBarton E. Schaefer <schaefer@zsh.org>2016-12-14 11:01:09 -0800
committerBarton E. Schaefer <schaefer@zsh.org>2016-12-14 11:01:09 -0800
commitdc1f3aae60d08ea4a3856299f85b2ed7c110508b (patch)
tree1a16772ffee6acdb2d8b77258427be7ec53c7013
parent5f2661376d686401a42aa15e5e3cbb6ec86a8f6c (diff)
downloadzsh-dc1f3aae60d08ea4a3856299f85b2ed7c110508b.tar.gz
zsh-dc1f3aae60d08ea4a3856299f85b2ed7c110508b.tar.xz
zsh-dc1f3aae60d08ea4a3856299f85b2ed7c110508b.zip
40179: fix handling of "printf -" and "printf --"
unposted: regression test for 40179 / 37467
-rw-r--r--ChangeLog6
-rw-r--r--Src/builtin.c2
-rw-r--r--Test/B03print.ztst14
3 files changed, 21 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 161a5d768..47609f665 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2016-12-14  Barton E. Schaefer  <schaefer@brasslantern.com>
+
+	* 40179: Src/builtin.c: fix handling of "printf -" and "printf --"
+
+	* unposted: Test/B03print.ztst: regression for 40179 / 37467
+
 2016-12-12  Peter Stephenson  <p.w.stephenson@ntlworld.com>
 
 	* unposted: Config/version.mk: update to 5.3-dev-0 to avoid
diff --git a/Src/builtin.c b/Src/builtin.c
index 65e0cb10b..0f04d149f 100644
--- a/Src/builtin.c
+++ b/Src/builtin.c
@@ -100,7 +100,7 @@ static struct builtin builtins[] =
 
     BUILTIN("popd", BINF_SKIPINVALID | BINF_SKIPDASH | BINF_DASHDASHVALID, bin_cd, 0, 1, BIN_POPD, "q", NULL),
     BUILTIN("print", BINF_PRINTOPTS, bin_print, 0, -1, BIN_PRINT, "abcC:Df:ilmnNoOpPrRsSu:v:x:X:z-", NULL),
-    BUILTIN("printf", 0, bin_print, 1, -1, BIN_PRINTF, "v:", NULL),
+    BUILTIN("printf", BINF_SKIPINVALID | BINF_SKIPDASH, bin_print, 1, -1, BIN_PRINTF, "v:", NULL),
     BUILTIN("pushd", BINF_SKIPINVALID | BINF_SKIPDASH | BINF_DASHDASHVALID, bin_cd, 0, 2, BIN_PUSHD, "qsPL", NULL),
     BUILTIN("pushln", 0, bin_print, 0, -1, BIN_PRINT, NULL, "-nz"),
     BUILTIN("pwd", 0, bin_pwd, 0, 0, 0, "rLP", NULL),
diff --git a/Test/B03print.ztst b/Test/B03print.ztst
index 3f9a4046d..7a43f9ca2 100644
--- a/Test/B03print.ztst
+++ b/Test/B03print.ztst
@@ -322,3 +322,17 @@
  typeset -p foo
 0:printf to an array variable without format string reuse
 >typeset foo=string
+
+ printf -
+ printf - -
+ printf --
+ printf -- -
+ printf -- --
+ printf -x -v foo
+ # Final print for newline on stdout
+ print
+0:regression test of printf with assorted ambiguous options or formats
+>------x
+?(eval):printf:3: not enough arguments
+F:There is some question whether "printf --" should be an error as above,
+F:or should treat "--" as the format string.  Bash agrees on the error.