From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 11133 invoked by alias); 22 Feb 2018 10:32:18 -0000 Mailing-List: contact zsh-workers-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Workers List List-Post: List-Help: List-Unsubscribe: X-Seq: 42381 Received: (qmail 20961 invoked by uid 1010); 22 Feb 2018 10:32:18 -0000 X-Qmail-Scanner-Diagnostics: from mailout2.w1.samsung.com by f.primenet.com.au (envelope-from , uid 7791) with qmail-scanner-2.11 (clamdscan: 0.99.2/21882. spamassassin: 3.4.1. Clear:RC:0(210.118.77.12):SA:0(-6.9/5.0):. Processed in 7.080553 secs); 22 Feb 2018 10:32:18 -0000 X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-6.9 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_HI, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,SPF_PASS,T_DKIM_INVALID, T_RP_MATCHES_RCVD autolearn=ham autolearn_force=no version=3.4.1 X-Envelope-From: p.stephenson@samsung.com X-Qmail-Scanner-Mime-Attachments: | X-Qmail-Scanner-Zip-Files: | DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.w1.samsung.com 20180222103206euoutp02674a42b0fb2b87a7b1b17ac55ccb31e6~Vnzs___0S1253312533euoutp024 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1519295526; bh=IYLc+BlMixjI+0xXG9enZbvf4OPBSf1ZRB937+8WV20=; h=Date:From:To:Subject:In-reply-to:References:From; b=RYDR81iI0NUJY2Yq87v85qBM4hCrnvAyQsUo/eRT0F6P0WQOVij2wklQ/LHUkSvcj yxIf/w53AuS8JPlFFmN7NQlaFjrowfwPK0Hvh+UKvGSTUx7tNkEcTO0ynXRmYXJ1ld txei9Ed06K8YWxlH5e9Gv/xg/RLqTR+sa/XjdimY= X-AuditID: cbfec7f5-b5fff700000028a9-8f-5a8e9c2504cd Date: Thu, 22 Feb 2018 10:32:01 +0000 From: Peter Stephenson To: zsh-workers@zsh.org Subject: Re: [BUG]builtin echo error doing arguments parsing Message-id: <20180222103201.314c839b@pwslap01u.europe.root.pri> In-reply-to: <20180222093711.0777e602@pwslap01u.europe.root.pri> Organization: Samsung Cambridge Solution Centre X-Mailer: Claws Mail 3.7.9 (GTK+ 2.22.0; i386-redhat-linux-gnu) MIME-version: 1.0 Content-type: text/plain; charset="UTF-8" Content-transfer-encoding: quoted-printable X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrOIsWRmVeSWpSXmKPExsWy7djP87qqc/qiDJ6vZ7M42PyQyYHRY9XB D0wBjFFcNimpOZllqUX6dglcGYd2/mYtmCdY8f1YC1MD4y/eLkZODgkBE4n+hhWsXYxcHEIC KxgllrTPY4Nwepkkrmw9yAhTdX3lVRaIxDJGidv3njBBONOYJDZuOM0M4ZxhlLjY+BJq2FlG ib9zQCZzcrAIqEp8uzwdzGYTMJSYumk22FwRAXGJs2vPs4DYwgI2EvtmNjOD2LwC9hKXt30C q+EUcJD4cOk2O4jNL6AvcfXvJyaIm+wlZl45wwhRLyjxY/I9sDnMApoSW3evZ4ewtSWevLsA dpCEwBQ2idUP57FDNLtI/Fn1ihXCFpZ4dXwLVFxGorPjINSCfkaJJ92+EM0zGCVOn9nBBpGw lui7fZERYgOfxKRt04Gu5gCK80p0tAlBlHhIvHq7nBnCdpR4dH8LNPBuMUo0HfrJNoFRfhaS w2chOXwWksMXMDKvYhRPLS3OTU8tNs5LLdcrTswtLs1L10vOz93ECIz+0/+Of93BuO9P0iFG AQ5GJR7eDWW9UUKsiWXFlbmHGCU4mJVEeJeG9kUJ8aYkVlalFuXHF5XmpBYfYpTmYFES543T qIsSEkhPLEnNTk0tSC2CyTJxcEo1MAo+7vsp6uPmcjhsZeJdhsiK3XP87s278fmN34VfyVYi X5iq/T3z17zctGSOs/TW0CnZCgZnXG/PeX7h6KmXbt1my5VW1mx++9G35vVkv4t5Lx+Lrvtu tsLzfcHE3UzrjpjxXOCck/gn3G/Jq7/+F2ZObj/KfUT7xcwpTptWL+P4/dz2VW6ux7UZSizF GYmGWsxFxYkAr9oX5/oCAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrCLMWRmVeSWpSXmKPExsVy+t/xq7oqc/qiDJavVbc42PyQyYHRY9XB D0wBjFFcNimpOZllqUX6dglcGYd2/mYtmCdY8f1YC1MD4y/eLkZODgkBE4nrK6+ygNhCAksY JdpnuXcxcgHZM5gktrzawAzhnGOUaNk+nwnCOcso0bliIlgLi4CqxLfL01lBbDYBQ4mpm2Yz gtgiAuISZ9eeB6sRFrCR2DezmRnE5hWwl7i87RNYDaeAg8SHS7fZIYbeYZQ40HIDLMEvoC9x 9e8nJoj77CVmXjnDCNEsKPFj8j2wocwC6hKT5i1ihrC1JZ68u8AK8YO6xI27u9knMArNQtIy C0nLLCQtCxiZVzGKpJYW56bnFhvqFSfmFpfmpesl5+duYgSG7bZjPzfvYLy0MfgQowAHoxIP 74ay3igh1sSy4srcQ4wSHMxKIrxLQ/uihHhTEiurUovy44tKc1KLDzFKc7AoifOeN6iMEhJI TyxJzU5NLUgtgskycXBKNTBOuxrBuSMwf823GRf9vnM+VZ6Ue6J+cs5N6ckXn8zSLW6vvBOx JWuSbYOY6oHfK8wl5ticvCD702jR49tfp00T55aO+qbn9cEn6fm9M7XP/oZ/mWs6Y+WkUKs8 kfOqViw229Jviy1RPls85bDvXS87Q4Xpc9/9+qB0PancJtHgZ/KB1iv/8v2slFiKMxINtZiL ihMBBvRAq1cCAAA= X-CMS-MailID: 20180222103204eucas1p11b3116976e5a3f0085f922ad151ef5c6 X-Msg-Generator: CA CMS-TYPE: 201P X-CMS-RootMailID: 20180222072350epcas2p3185ca17f5f0e3ad69b0a41dbf743f145 X-RootMTR: 20180222072350epcas2p3185ca17f5f0e3ad69b0a41dbf743f145 References: <20180222093711.0777e602@pwslap01u.europe.root.pri> On Thu, 22 Feb 2018 09:37:11 +0000 Peter Stephenson wrote: > On Wed, 21 Feb 2018 23:23:09 -0800 > wumingxwk@gmail.com wrote: > > if there is only a '-' as argument=EF=BC=8Cbuiltin echo won't print it > > You might have thought it should at least be turned off in some or most > of the emulation modes... Would look something like this. Probably a good idea if there aren't subtleties? pws diff --git a/Doc/Zsh/builtins.yo b/Doc/Zsh/builtins.yo index 6c7ec4b..098b989 100644 --- a/Doc/Zsh/builtins.yo +++ b/Doc/Zsh/builtins.yo @@ -61,7 +61,9 @@ arguments, but is otherwise ignored. This is useful in c= ases where arguments to the command may begin with `tt(-)'. For historical reasons, most builtin commands also recognize a single `tt(-)' in a separate word for this purpose; note that this is less standard and -use of `tt(-)tt(-)' is recommended. +use of `tt(-)tt(-)' is recommended. Use of a single `tt(-)' to +terminate option processing is turned off if the option +tt(POSIX_BUILTINS) is set. =20 startitem() prefix(-) diff --git a/Doc/Zsh/options.yo b/Doc/Zsh/options.yo index 25b3d57..5217e62 100644 --- a/Doc/Zsh/options.yo +++ b/Doc/Zsh/options.yo @@ -2183,6 +2183,9 @@ Furthermore, the tt(getopts) builtin behaves in a POS= IX-compatible fashion in that the associated variable tt(OPTIND) is not made local to functions. =20 +In addition, a single dash (`tt(-)') does not cause the termination of opt= ion +processing: a double dash (`tt(-)tt(-)') is required. + Moreover, the warning and special exit code from tt([[ -o )var(non_existent_option)tt( ]]) are suppressed. ) diff --git a/Src/builtin.c b/Src/builtin.c index fb59738..d2c6ec4 100644 --- a/Src/builtin.c +++ b/Src/builtin.c @@ -304,7 +304,8 @@ execbuiltin(LinkList args, LinkList assigns, Builtin bn) if (!(flags & BINF_KEEPNUM) && idigit(arg[1])) break; /* For cd and friends, a single dash is not an option. */ - if ((flags & BINF_SKIPDASH) && !arg[1]) + if (((flags & BINF_SKIPDASH) || isset(POSIXBUILTINS)) && + !arg[1]) break; if ((flags & BINF_DASHDASHVALID) && !strcmp(arg, "--")) { /*