From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=MAILING_LIST_MULTI, RCVD_IN_DNSWL_NONE autolearn=ham autolearn_force=no version=3.4.2 Received: from primenet.com.au (ns1.primenet.com.au [203.24.36.2]) by inbox.vuxu.org (OpenSMTPD) with ESMTP id 0fb632a4 for ; Tue, 25 Dec 2018 17:19:32 +0000 (UTC) Received: (qmail 18932 invoked by alias); 25 Dec 2018 17:19:11 -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: 43944 Received: (qmail 23195 invoked by uid 1010); 25 Dec 2018 17:19:11 -0000 X-Qmail-Scanner-Diagnostics: from kahlil.inlv.org by f.primenet.com.au (envelope-from , uid 7791) with qmail-scanner-2.11 (clamdscan: 0.100.2/25112. spamassassin: 3.4.2. Clear:RC:0(37.59.109.123):SA:0(-1.9/5.0):. Processed in 3.548556 secs); 25 Dec 2018 17:19:11 -0000 X-Envelope-From: martijn@inlv.org X-Qmail-Scanner-Mime-Attachments: | X-Qmail-Scanner-Zip-Files: | Subject: [PATCH] honour NO_UNSET when reading values in arithmetic expansion/commands To: Bart Schaefer Cc: "zsh-workers@zsh.org" References: <18f684a8-2fec-4ebe-a63e-cf6688ae519f@inlv.org> From: Martijn Dekker Message-ID: <054e702a-b3d0-de40-3e80-0efe9fac821d@inlv.org> Date: Tue, 25 Dec 2018 17:18:57 +0000 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 MIME-Version: 1.0 In-Reply-To: Content-Type: multipart/mixed; boundary="------------0B2BB6F17C3D50E1D04F2EFC" Content-Language: en-GB --------------0B2BB6F17C3D50E1D04F2EFC Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Op 21-12-18 om 07:53 schreef Bart Schaefer: > On Thu, Dec 20, 2018 at 2:48 PM Martijn Dekker wrote: >> >> However, I think having 'set -u' apply to $(( x )) is "obvious" and >> useful behaviour. > > Reasonable. This should make that happen, if I did it right. All the regression tests pass, including three added ones. With this patch, zsh throws an error but does not exit on an unset variable in the ((arithmetic command)) or in 'let'. But it doesn't exit on a syntax error either, so that is consistent. It exits as expected on an unset variable in $((arithmetic expansion)). - M. --------------0B2BB6F17C3D50E1D04F2EFC Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="arith-nounset.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="arith-nounset.patch" ZGlmZiAtLWdpdCBhL0RvYy9ac2gvb3B0aW9ucy55byBiL0RvYy9ac2gvb3B0aW9ucy55bwpp bmRleCAyNWIzZDU3Li5iYzE4MmViIDEwMDY0NAotLS0gYS9Eb2MvWnNoL29wdGlvbnMueW8K KysrIGIvRG9jL1pzaC9vcHRpb25zLnlvCkBAIC03NTMsNyArNzUzLDkgQEAgcGluZGV4KE5P VU5TRVQpCiBjaW5kZXgocGFyYW1ldGVycywgc3Vic3RpdHV0aW5nIHVuc2V0KQogY2luZGV4 KHVuc2V0IHBhcmFtZXRlcnMsIHN1YnN0aXR1dGluZykKIGl0ZW0odHQoVU5TRVQpICh0dChQ TFVTKCl1KSwga3NoOiB0dChQTFVTKCl1KSkgPEs+IDxTPiA8Wj4pKAotVHJlYXQgdW5zZXQg cGFyYW1ldGVycyBhcyBpZiB0aGV5IHdlcmUgZW1wdHkgd2hlbiBzdWJzdGl0dXRpbmcuCitU cmVhdCB1bnNldCBwYXJhbWV0ZXJzIGFzIGlmIHRoZXkgd2VyZSBlbXB0eSB3aGVuIHN1YnN0 aXR1dGluZywgYW5kIGFzIGlmCit0aGV5IHdlcmUgemVybyB3aGVuIHJlYWRpbmcgdGhlaXIg dmFsdWVzIGluIGFyaXRobWV0aWMgZXhwYW5zaW9uIGFuZAorYXJpdGhtZXRpYyBjb21tYW5k cy4KIE90aGVyd2lzZSB0aGV5IGFyZSB0cmVhdGVkIGFzIGFuIGVycm9yLgogKQogcGluZGV4 KFdBUk5fQ1JFQVRFX0dMT0JBTCkKZGlmZiAtLWdpdCBhL1JFQURNRSBiL1JFQURNRQppbmRl eCBhYWFlZTUwLi4wMDAyMTA0IDEwMDY0NAotLS0gYS9SRUFETUUKKysrIGIvUkVBRE1FCkBA IC00Miw2ICs0MiwxMCBAQCBhcnJheS4KIFRoZSBnZW4tYXBwbGllZC1zdHJpbmcgaG9vayBp cyB1bmFmZmVjdGVkOyBpdCBzdGlsbCByZWNlaXZlcyB0aGUgcGF0Y2hlcyBpbgogcmV2ZXJz ZSBvcmRlciwgZnJvbSBsYXN0IGFwcGxpZWQgdG8gZmlyc3QgYXBwbGllZC4KIAorMikgVGhl IG9wdGlvbiBOT19VTlNFVCBub3cgYWxzbyBhcHBsaWVzIHdoZW4gcmVhZGluZyB2YWx1ZXMg ZnJvbQordmFyaWFibGVzIHdpdGhvdXQgYSBwcmVjZWRpbmcgJyQnIHNpZ24gaW4gc2hlbGwg YXJpdGhtZXRpYyBleHBhbnNpb24KK2FuZCBpbiB0aGUgZG91YmxlLXBhcmVudGhlc2VzIGFu ZCAnbGV0JyBhcml0aG1ldGljIGNvbW1hbmRzLgorCiBJbmNvbXBhdGliaWxpdGllcyBiZXR3 ZWVuIDUuNS4xIGFuZCA1LjYuMgogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCiAKZGlmZiAtLWdpdCBhL1NyYy9tYXRoLmMgYi9TcmMvbWF0aC5jCmluZGV4 IGIwOGUwNWMuLmEzODc3MDAgMTAwNjQ0Ci0tLSBhL1NyYy9tYXRoLmMKKysrIGIvU3JjL21h dGguYwpAQCAtMzQyLDYgKzM0Miw4IEBAIGdldG1hdGhwYXJhbShzdHJ1Y3QgbWF0aHZhbHVl ICptcHRyKQogCW1wdHItPnB2YWwgPSAoVmFsdWUpemhhbGxvYyhzaXplb2Yoc3RydWN0IHZh bHVlKSk7CiAJaWYgKCFnZXR2YWx1ZShtcHRyLT5wdmFsLCAmcywgMSkpCiAJeworCSAgICBp ZiAodW5zZXQoVU5TRVQpKQorCQl6ZXJyKCIlczogcGFyYW1ldGVyIG5vdCBzZXQiLCBtcHRy LT5sdmFsKTsKIAkgICAgbXB0ci0+cHZhbCA9IE5VTEw7CiAJICAgIGlmIChpc3NldChGT1JD RUZMT0FUKSkgewogCQlyZXN1bHQudHlwZSA9IE1OX0ZMT0FUOwpkaWZmIC0tZ2l0IGEvVGVz dC9DMDFhcml0aC56dHN0IGIvVGVzdC9DMDFhcml0aC56dHN0CmluZGV4IGYxMzY0YWIuLjlk ZmMwNjUgMTAwNjQ0Ci0tLSBhL1Rlc3QvQzAxYXJpdGguenRzdAorKysgYi9UZXN0L0MwMWFy aXRoLnp0c3QKQEAgLTQ3MSwzICs0NzEsMTkgQEAKICAgcHJpbnQgJCgoIC0yIzEwMS0xNiNm ICkpCiAwOiBVbmFyeSBtaW51cyBkb2Vzbid0IGFwcGx5IHRvIGJhc2UgYnV0IHRvIG51bWJl ciBhcyBhIHdob2xlLgogPi0yMAorCisgICggc2V0IC1vIG5vdW5zZXQKKyAgdHJ1ZSAkKCgg bm9leGlzdCArIDEgKSkKKyAgZWNobyAnc2hvdWxkIG5ldmVyIGdldCBoZXJlJyApCisxOkFy aXRobWV0aWMsIE5PX1VOU0VUIHBhcnQgMQorPyhldmFsKToyOiBub2V4aXN0OiBwYXJhbWV0 ZXIgbm90IHNldAorCisgICggc2V0b3B0IG5vdW5zZXQKKyAgKCggbm9leGlzdCsrICkpICkK KzI6QXJpdGhtZXRpYywgTk9fVU5TRVQgcGFydCAyCis/KGV2YWwpOjI6IG5vZXhpc3Q6IHBh cmFtZXRlciBub3Qgc2V0CisKKyAgKCB1bnNldG9wdCB1bnNldAorICBsZXQgbm9leGlzdD09 MCApCisxOkFyaXRobWV0aWMsIE5PX1VOU0VUIHBhcnQgMworPyhldmFsKToyOiBub2V4aXN0 OiBwYXJhbWV0ZXIgbm90IHNldAo= --------------0B2BB6F17C3D50E1D04F2EFC--