From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 13953 invoked by alias); 10 Oct 2016 08:55:35 -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: X-Seq: 39599 Received: (qmail 19906 invoked from network); 10 Oct 2016 08:55:35 -0000 X-Qmail-Scanner-Diagnostics: from mailout1.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.11):SA:0(-2.7/5.0):. Processed in 0.467274 secs); 10 Oct 2016 08:55:35 -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=-2.7 required=5.0 tests=RP_MATCHES_RCVD autolearn=unavailable autolearn_force=no version=3.4.1 X-Envelope-From: p.stephenson@samsung.com X-Qmail-Scanner-Mime-Attachments: | X-Qmail-Scanner-Zip-Files: | Received-SPF: none (ns1.primenet.com.au: domain at samsung.com does not designate permitted sender hosts) X-AuditID: cbfec7ef-f79e76d000005b57-17-57fb577f9e31 Date: Mon, 10 Oct 2016 09:55:22 +0100 From: Peter Stephenson To: Zsh hackers list Subject: Re: 'case' zeroes "$?" Message-id: <20161010095522.5778c2fd@pwslap01u.europe.root.pri> In-reply-to: <3493e3d3-e578-31d1-27de-06d8d0c35944@inlv.org> 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=US-ASCII Content-transfer-encoding: 7bit X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrHIsWRmVeSWpSXmKPExsWy7djP87r14b/DDV7PFrA42PyQyYHRY9XB D0wBjFFcNimpOZllqUX6dglcGZM2TGIseMlRcWTrYtYGxsdsXYycHBICJhJ/ni9hhrDFJC7c Ww8U5+IQEljGKNG1p4cFwullkljy/Dxcx5Jbp1jhqtb+XAXVMo1JYtPSb1CZM4wSNy89Y4dw zjJKzO15xArSzyKgKjHv8x8wm03AUGLqptmMILaIgJbEjpMnmUBsYQF5iWlH7rCA2LwC9hIT dr0C280pYCOx9NNNMJtfQF/i6t9PTBA32UvMvHKGEaJeUOLH5HtgvcwCOhLbtj1mh7DlJTav ecsMcpCEwH82iUmHdwElOIAcWYlNB6Ah4CKxrWkmK4QtLPHq+BZ2CFtGorPjINSufkaJJ92+ EHNmMEqcPrMDGjDWEn23LzJCLOOTmLRtOjPEfF6JjjYhiBIPiYmXO6BmOkq0XXrFMoFRcRaS s2chOXsWkrMXMDKvYhRJLS3OTU8tNtQrTswtLs1L10vOz93ECEwFp/8df7+D8WlzyCFGAQ5G JR7eF5W/woVYE8uKK3MPMUpwMCuJ8O4J+R0uxJuSWFmVWpQfX1Sak1p8iFGag0VJnHfvgivh QgLpiSWp2ampBalFMFkmDk6pBkbh8uDQqYp/ZkjFp4tPbT1yTnbW6fgNtauex3pOlm2O+LbW YoHUk73qfXHB7nuYpcUeTM35EubCditIMXG+g43fu86TP9/8UeR1zD2X8SGm2F14of/kSXNl d/EyyBsvlKoxWrg0x7yJxY2V12Mpy3ndD62rmW5u1Hg6MzDyDxvXptNzY3/Jv1ViKc5INNRi LipOBABPKIofAQMAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrOIsWRmVeSWpSXmKPExsVy+t/xK7qp4b/DDabd1LM42PyQyYHRY9XB D0wBjFFuNhmpiSmpRQqpecn5KZl56bZKoSFuuhZKCnmJuam2ShG6viFBSgpliTmlQJ6RARpw cA5wD1bSt0twy5i0YRJjwUuOiiNbF7M2MD5m62Lk5JAQMJFYcusUK4QtJnHh3nqgOBeHkMAS RomrfVvZIZwZTBJz9zewQDjnGCWWbvrJCOGcZZT43NTGCNLPIqAqMe/zH7BZbAKGElM3zQaL iwhoSew4eZIJxBYWkJeYduQOC4jNK2AvMWHXK7A7OAVsJJZ+ugm1eyKjxN9H+8Aa+AX0Ja7+ /cQEcaC9xMwrZxghmgUlfky+BzaIGWjB5m1NrBC2vMTmNW+ZQWwhAXWJG3d3s09gFJ6FpGUW kpZZSFoWMDKvYhRJLS3OTc8tNtQrTswtLs1L10vOz93ECIykbcd+bt7BeGlj8CFGAQ5GJR7e F5W/woVYE8uKK3MPMUpwMCuJ8O4J+R0uxJuSWFmVWpQfX1Sak1p8iNEUGDITmaVEk/OBUZ5X Em9oYmhuaWhkbGFhbmSkJM5b8uFKuJBAemJJanZqakFqEUwfEwenVANj47T4xfrpL4J2K6/r X9PAm35qBUv7W+OAOzJzvhsbJv3cl5LyVfnshAP8Zxhj/9lHPuPPMJ+gf2XfuaXyWi+5Cv5b T9TO9A6fcv+qq8dU+0iZFze2qqjk7P/D9OC5S/K2zbPnJJyd13Tg2qdIzQbdc7Pi/MIn8FnM 11OfH+jw1fGqZ2Pkge28SizFGYmGWsxFxYkAHVNXtLoCAAA= X-MTR: 20000000000000000@CPGS X-CMS-MailID: 20161010085525eucas1p1f64ef94bca9e618d9ca0efaa488bdaa2 X-Msg-Generator: CA X-Sender-IP: 182.198.249.179 X-Local-Sender: =?UTF-8?B?UGV0ZXIgU3RlcGhlbnNvbhtTQ1NDLURhdGEgUGxhbmUb?= =?UTF-8?B?7IK87ISx7KCE7J6QG1ByaW5jaXBhbCBFbmdpbmVlciwgU29mdHdhcmU=?= X-Global-Sender: =?UTF-8?B?UGV0ZXIgU3RlcGhlbnNvbhtTQ1NDLURhdGEgUGxhbmUbU2Ft?= =?UTF-8?B?c3VuZyBFbGVjdHJvbmljcxtQcmluY2lwYWwgRW5naW5lZXIsIFNvZnR3YXJl?= X-Sender-Code: =?UTF-8?B?QzEwG0VIURtDMTBDRDA1Q0QwNTAwNTg=?= CMS-TYPE: 201P X-HopCount: 7 X-CMS-RootMailID: 20161009210214eucas1p21d253eca777c6b4e9f6e243aa18da25e X-RootMTR: 20161009210214eucas1p21d253eca777c6b4e9f6e243aa18da25e References: <3493e3d3-e578-31d1-27de-06d8d0c35944@inlv.org> On Sun, 9 Oct 2016 23:01:35 +0200 Martijn Dekker wrote: > Unlike on other shells, 'case' on zsh zeroes "$?" before executing a > command within 'case', making it more inconvenient to test exit status. > > Example: > > (exit 37) || case $? in 37) echo "$?";; esac This looks straightforward. The first $? in the case pattern is expanded as a command line argument, before the case is executed, so missed this. diff --git a/Src/loop.c b/Src/loop.c index 3b9d021..94b61b7 100644 --- a/Src/loop.c +++ b/Src/loop.c @@ -592,7 +592,6 @@ execcase(Estate state, int do_exec) word = ecgetstr(state, EC_DUP, NULL); singsub(&word); untokenize(word); - lastval = 0; cmdpush(CS_CASE); while (state->pc < end) { diff --git a/Test/A01grammar.ztst b/Test/A01grammar.ztst index 0b1085c..0e77f3e 100644 --- a/Test/A01grammar.ztst +++ b/Test/A01grammar.ztst @@ -757,6 +757,14 @@ >} >Stuff here + (exit 37) + case $? in + (37) echo $? + ;; + esac +0:case retains exit status for execution of cases +>37 + x=1 x=2 | echo $x echo $x