From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-3.3 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 12634 invoked from network); 13 Sep 2023 06:54:01 -0000 Received: from zero.zsh.org (2a02:898:31:0:48:4558:7a:7368) by inbox.vuxu.org with ESMTPUTF8; 13 Sep 2023 06:54:01 -0000 ARC-Seal: i=1; cv=none; a=rsa-sha256; d=zsh.org; s=rsa-20210803; t=1694588042; b=bnAQ9hEG0BVqxiYCjCVpJzRJGrKQ7cN2qJNI49z8skOjBrm8si2IoqXOHiHIQDBKgp6kEJ9EzQ M9VVQSkreIWgUXQXK6jd1nIFJDsjwE05SdOn/YlDA8ppZ5mZqMd8+nWvZTOHT1l3YyBLzyWkNi 6ode1/BfAjN0CO8IXHDqEy8gWO7AzgcWzoLGj4N3ZGejswAy1dZyjgJLDKRg7xj4ZIVQBMh5Kk 320J7FNzNiRHGT/4gifSEEhXxpbJkx5wR2nnBz45hJ+YgWDQwkkPyLTxHsh4eqnRLEyFUZHW8H Z38CW3Y/zvKGV9/ZQnkeHjAS/FDA8tceS3CbItXjoD+REw==; ARC-Authentication-Results: i=1; zsh.org; iprev=pass (mail-ej1-f41.google.com) smtp.remote-ip=209.85.218.41; dkim=pass header.d=brasslantern-com.20230601.gappssmtp.com header.s=20230601 header.a=rsa-sha256; dmarc=none header.from=brasslantern.com; arc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed; d=zsh.org; s=rsa-20210803; t=1694588042; bh=9vEYoSSfLzLE8NEERmO4qw1bCRcruQcrBxnAkh00SIs=; h=List-Archive:List-Owner:List-Post:List-Unsubscribe:List-Subscribe:List-Help: List-Id:Sender:Content-Type:To:Subject:Message-ID:Date:From:MIME-Version: DKIM-Signature:DKIM-Signature; b=EEvSzFT+3RngUIQQxVdvLum4ZUtdhTdfMJQL+gCy9yFVjd2a54JwIAKH70s4uTf1AMqljfJk+L 8eUWgMT2Xf55YQaH/VEAfAOgc4RMov8AQYdIeCiWZ9J6awa7+t8aAmA6+l5TTYcsm6Mn6ddvKJ YTKOdOXN2DkIMDFFeYmt9Vhu3fgJha9Qz9tkEU6rrUTsXYAQQyWnn6k2rfUoIAHGHO5upEYKPO 64VV7cHgz2dtcLwQVQwoghok4wtYoCK6ZJVMKm+1yHI3T0iI8Bq6zSKNQjDRG7c/ePErBG/sr6 9EA8BhY+gKeg+P7NO8xfXEvIyPJNyUTku9KB5agxPddXPA==; DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=zsh.org; s=rsa-20210803; h=List-Archive:List-Owner:List-Post:List-Unsubscribe: List-Subscribe:List-Help:List-Id:Sender:Content-Type:To:Subject:Message-ID: Date:From:MIME-Version:Reply-To:Cc:Content-Transfer-Encoding:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:In-Reply-To:References; bh=O/kcnxG6R/ymV0g8qUcvRDqZpU86BDmiBWCMpZtuRQM=; b=XMCz4mp6bEULRB4folxcAwEaKr HwVveHAFaMZQtHy9/nVGQ8yaFEkANSj2a8dMOPLvwkPOgDs/eHL5oSRFZajQRnxIaVh5IIf3huJ2P RJ9QCl6klPulVLJSnIZxDTNop3Pj1g7iq9H99kpMR0Kqw7DQz5uw8Um4fBa+L8KfNQOa59P4nUzsF 2TdGSwtsojxmxJ6Mqf7cQogt81HJERe3xVmu1RdWe8YN3ljxmHPQAcXWO1Q25zsj0B3XBasgmjB5N DxYrNGMax6IGts7cC3bt9cvJ0djCs8/S7DlC4u311qnUhwGRsRXh29jAKnZWlicMekemU97VHQvHu GzsfG2yg==; Received: by zero.zsh.org with local id 1qgJl8-0000Rj-GZ; Wed, 13 Sep 2023 06:53:58 +0000 Authentication-Results: zsh.org; iprev=pass (mail-ej1-f41.google.com) smtp.remote-ip=209.85.218.41; dkim=pass header.d=brasslantern-com.20230601.gappssmtp.com header.s=20230601 header.a=rsa-sha256; dmarc=none header.from=brasslantern.com; arc=none Received: from mail-ej1-f41.google.com ([209.85.218.41]:58459) by zero.zsh.org with esmtps (TLS1.3:TLS_AES_128_GCM_SHA256:128) id 1qgJkk-00008C-2G; Wed, 13 Sep 2023 06:53:36 +0000 Received: by mail-ej1-f41.google.com with SMTP id a640c23a62f3a-9a64619d8fbso821335766b.0 for ; Tue, 12 Sep 2023 23:53:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=brasslantern-com.20230601.gappssmtp.com; s=20230601; t=1694588013; x=1695192813; darn=zsh.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=O/kcnxG6R/ymV0g8qUcvRDqZpU86BDmiBWCMpZtuRQM=; b=PFlyqSofTdfTPBIMI0vniT/uTvG78CsUMmJR2F3aMDJ6v3jQ/w8z15HPIErK1X8jwf VIxQhsPTioj4ztCzrS6Bds5WwHvQWzPnUa+r0cWtZqTU1ObvrqNJtdEi3lF91YxT/Wrl eftYrgbtFjQ9dAMlXeB4OOcZkWN+eAfoCge7ZmEr5qNYYg/wdE6jX7hd2j13EhAspuAm E1IIaN/acojsZe+ANkfawAF3TbN+QzMlRvIjVyhVOC5Ff78OC/KpTVAjid8OBlXnKB5s pOZE83DG1MwjHmQY8JaSbkpFkkXux41YgTAXeX1zCz+hQBHYEhbcJp3RcQqUZVVTaalN yC1g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1694588013; x=1695192813; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=O/kcnxG6R/ymV0g8qUcvRDqZpU86BDmiBWCMpZtuRQM=; b=YCzx9WOPpQ+Thq+SIt3w5m5U2hxJTVbLKKoJyLzrk+tn/Z0jAhH+sstOpBkUGPq7E0 6Yncb8w1YDOD7dGZSYPPstYpbC8upl1Sh/F7tc7tluTfIo4yazWysIItPsnVrM5aTAeu CRMg8p+RL85cS9GqbRl3nHm2n0T1O5O8Wg/t0XWkiw6D+6DIsvsKPCR9tUlvN9r9/TTU B9I69SFmH5WDINQZ9Keg3DdS9ncDaT7W/ErcRxQ1T0VMELcJ+b+B//Z5z3BL7wsDPpz8 fWpis+pytgXXV6JyCZ8DRdF6P/9LllaoCBC2C/rWFtqhGMHvIXTO+QyZJAmq/r0PdEgG GtKw== X-Gm-Message-State: AOJu0YyYYVMAbgI2gBi28jGfrUNEoDs5y16yHwikospTU8X3jfVfE5iJ YH3WHI0bUfNEKqq8Lpkmunyn9vc2bxObTsvDBx9tQjwpf7t13Rj4 X-Google-Smtp-Source: AGHT+IE0XLj+T9rXpMLmtfjdlMmzs9uaMjMXF3axIum39VTUuGXlre/ObL3NlNgOb66ZogmV8iEnGijmIjLHBzy4iHw= X-Received: by 2002:a17:907:7638:b0:991:37d2:c9f0 with SMTP id jy24-20020a170907763800b0099137d2c9f0mr1163408ejc.68.1694588013383; Tue, 12 Sep 2023 23:53:33 -0700 (PDT) MIME-Version: 1.0 From: Bart Schaefer Date: Tue, 12 Sep 2023 23:53:22 -0700 Message-ID: Subject: [PATCH] Fix ignorebraces handling for nofork substitution To: Zsh hackers list Content-Type: multipart/mixed; boundary="000000000000944c380605380423" X-Seq: 52139 Archived-At: X-Loop: zsh-workers@zsh.org Errors-To: zsh-workers-owner@zsh.org Precedence: list Precedence: bulk Sender: zsh-workers-request@zsh.org X-no-archive: yes List-Id: List-Help: , List-Subscribe: , List-Unsubscribe: , List-Post: List-Owner: List-Archive: --000000000000944c380605380423 Content-Type: text/plain; charset="UTF-8" This was surprisingly easy from a parsing standpoint and surprisingly difficult to restructure execution to get useful parse errors. E.g., with ignorebraces, current-shell constructs must be written with a final semicolon or newline separator like { ... ;} but if anything follows the closing brace the parse error will be reported in that following part rather than where you want it at the point of the missing separator. I think (hope?) that this is the last bit of the nofork stuff, at least until a complete rewrite of the tempfile hack, and I will commit and push it in the next couple of days if no one finds anything broken or objectionable. Opinions on whether I should squash the patches and make one commit vs. exposing the sausage-making by doing each of the seven patches separately? (I would list all the X-Seq numbers in the changelog either way.) --000000000000944c380605380423 Content-Type: text/plain; charset="US-ASCII"; name="nofork+ignorebraces.txt" Content-Disposition: attachment; filename="nofork+ignorebraces.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lmhdpe500 ZGlmZiAtLWdpdCBhL1NyYy9sZXguYyBiL1NyYy9sZXguYwppbmRleCBlN2E3NTQ3OGIuLjMzYjE3 Y2M5NSAxMDA2NDQKLS0tIGEvU3JjL2xleC5jCisrKyBiL1NyYy9sZXguYwpAQCAtMTEzNSw3ICsx MTM1LDcgQEAgZ2V0dG9rc3RyKGludCBjLCBpbnQgc3ViKQogCSAgICBjID0gSW5wYXI7CiAJICAg IGJyZWFrOwogCWNhc2UgTFgyX0lOQlJBQ0U6Ci0JICAgIGlmIChpc3NldChJR05PUkVCUkFDRVMp IHx8IHN1YikKKwkgICAgaWYgKChpc3NldChJR05PUkVCUkFDRVMpICYmICFjbWRzdWJzdCkgfHwg c3ViKQogCQljID0gJ3snOwogCSAgICBlbHNlIHsKIAkJaWYgKCFsZXhidWYubGVuICYmIGluY21k cG9zKSB7CmRpZmYgLS1naXQgYS9TcmMvc3Vic3QuYyBiL1NyYy9zdWJzdC5jCmluZGV4IDRkMWY4 Y2I5OS4uZGNlMjM4MGJhIDEwMDY0NAotLS0gYS9TcmMvc3Vic3QuYworKysgYi9TcmMvc3Vic3Qu YwpAQCAtMTg3MSw2ICsxODcxLDggQEAgcGFyYW1zdWJzdChMaW5rTGlzdCBsLCBMaW5rTm9kZSBu LCBjaGFyICoqc3RyLCBpbnQgcXQsIGludCBwZl9mbGFncywKICAgICBjaGFyICpycGx5dmFyID0g TlVMTDsKICAgICAvKiBJbmRpY2F0ZXMgJHsgLi4uIDt9ICovCiAgICAgY2hhciAqcnBseXRtcCA9 IE5VTEw7CisgICAgLyogSG93IHRvIGFzc2lnbiB0byBSRVBMWSAqLworICAgIGNoYXIgKnJwbHlh c2cgPSBOVUxMOwogCiAgICAgKnMrKyA9ICdcMCc7CiAgICAgLyoKQEAgLTE5NTcsMTUgKzE5NTks MjEgQEAgcGFyYW1zdWJzdChMaW5rTGlzdCBsLCBMaW5rTm9kZSBuLCBjaGFyICoqc3RyLCBpbnQg cXQsIGludCBwZl9mbGFncywKIAkJICAgICAqIFRoZW4gZmFsbCB0aHJvdWdoIHRvIHRoZSByZWd1 bGFyIGhhbmRsaW5nIG9mICRSRVBMWQogCQkgICAgICogdG8gbWFuYWdlIHdvcmQgc3BsaXR0aW5n LCBleHBhbnNpb24gZmxhZ3MsIGV0Yy4KIAkJICAgICAqLwotCQkgICAgY2hhciAqZm10ID0gInsg JXMgO30gPnwgJXM7IFJFUExZPVwiJCg8JXMpXCIiOyAvKiAyOCAqLworCQkgICAgY2hhciAqb3V0 Zm10ID0gIj58ICVzIHsgJXMgO30iOwkvKiAxMyAqLworCQkgICAgY2hhciAqaW5mbXQgPSAiUkVQ TFk9XCIkKDwlcylcIiI7CS8qIDE1ICovOwogCQkgICAgaWYgKChycGx5dG1wID0gZ2V0dGVtcG5h bWUoTlVMTCwgMSkpKSB7CiAJCQkvKiBQcmV2ZW50IHNoZW5hbmlnYW5zIHdpdGggJFRNUFBSRUZJ WCAqLwogCQkJY2hhciAqdG1wZmlsZSA9IHF1b3Rlc3RyaW5nKHJwbHl0bXAsIFFUX0JBQ0tTTEFT SCk7CiAJCQljaGFyICpkdW1teSA9IHpoYWxsb2Moc3RybGVuKGNtZGFyZykgKwotCQkJCQkgICAg ICAyICogc3RybGVuKHRtcGZpbGUpICsKLQkJCQkJICAgICAgMjgpOwotCQkJc3ByaW50ZihkdW1t eSwgZm10LCBjbWRhcmcsIHRtcGZpbGUsIHRtcGZpbGUpOworCQkJCQkgICAgICBzdHJsZW4odG1w ZmlsZSkgKworCQkJCQkgICAgICAxMyk7CisJCQlzcHJpbnRmKGR1bW15LCBvdXRmbXQsIHRtcGZp bGUsIGNtZGFyZyk7CiAJCQljbWRhcmcgPSBkdW1teTsKKwkJCS8qIFNwbGl0IGNvbW1hbmQgYW5k IGFzc2lnbm1lbnQgdG8gZm9yY2UgcGFyc2UKKwkJCSAqIGVycm9yIGluIHRoZSByaWdodCBwbGFj ZSBpZiBjbWRhcmcgaXMgYmFkICovCisJCQlkdW1teSA9IHpoYWxsb2Moc3RybGVuKHRtcGZpbGUp ICsgMTUpOworCQkJc3ByaW50ZihkdW1teSwgaW5mbXQsIHRtcGZpbGUpOworCQkJcnBseWFzZyA9 IGR1bW15OwogCQkgICAgfSBlbHNlIHsKIAkJCS8qIFRNUFBSRUZJWCBub3Qgd3JpdGFibGU/ICov CiAJCQljbWRvdXR2YWwgPSBsYXN0dmFsOwpAQCAtMTk5Miw2ICsyMDAwLDEyIEBAIHBhcmFtc3Vi c3QoTGlua0xpc3QgbCwgTGlua05vZGUgbiwgY2hhciAqKnN0ciwgaW50IHF0LCBpbnQgcGZfZmxh Z3MsCiAJICAgIHVudG9rZW5pemUoY21kYXJnKTsKIAkgICAgZXhlY3N0cmluZyhjbWRhcmcsIDEs IDAsICJjbWRzdWJzdCIpOwogCSAgICBjbWRvdXR2YWwgPSBsYXN0dmFsOworCSAgICAvKiBJbiAk eyAuLi4gfSBmb3JtLCBwcm9wYWdhdGUgZXJyb3IgbGlrZSAkKC4uLikgKi8KKwkgICAgaWYgKGxh c3R2YWwgJiYgcnBseXRtcCkKKwkJZXJyZmxhZyB8PSBFUlJGTEFHX0VSUk9SOworCSAgICBlbHNl IGlmIChycGx5YXNnKSB7CisJCWV4ZWNzdHJpbmcocnBseWFzZywgMSwgMCwgImNtZHN1YnN0Iik7 CisJICAgIH0KIAkgICAgLyogInJldHVybiIgYmVoYXZlcyBhcyBpZiBpbiBhIGZ1bmN0aW9uICov CiAJICAgIGlmIChyZXRmbGFnKSB7CiAJCXJldGZsYWcgPSAwOwpkaWZmIC0tZ2l0IGEvVGVzdC9E MTBub2ZvcmsuenRzdCBiL1Rlc3QvRDEwbm9mb3JrLnp0c3QKaW5kZXggM2YxMWY4MGYxLi5kNTA0 ZTg5NjQgMTAwNjQ0Ci0tLSBhL1Rlc3QvRDEwbm9mb3JrLnp0c3QKKysrIGIvVGVzdC9EMTBub2Zv cmsuenRzdApAQCAtMzAyLDggKzMwMiw4IEBAIEY6c3RhdHVzIG9mICJwcmludCIgc2hvdWxkIGhp ZGUgcmV0dXJuCiAwOmxvY2FsIGRlY2xhcmF0aW9uLCBnbG9iYWwgYXNzaWdubWVudCwgcGFydCAy IChldmFsdWF0aW9uIG9yZGVyKQogPk5PTkxPQ0FMIEdMT0JBTCAwCiAKLSAgOiAke3wgZm4xKCkg eyAoKSB7IHByaW50IC12IFJFUExZICQnRGVmaW5lZCBGdW5jdGlvbicgfSB9IH0KLSAgcHJpbnQg IklOJHt8IGZuMigpIHsgKCkgeyBwcmludCAiJHs6LVNlY29uZCB9JHt8Zm4xfSIgfSB9IH1PVVQi CisgIDogJHt8IGZuMSgpIHsgKCkgeyBwcmludCAtdiBSRVBMWSAkJ0RlZmluZWQgRnVuY3Rpb24n IDt9IDt9IH0KKyAgcHJpbnQgIklOJHt8IGZuMigpIHsgKCkgeyBwcmludCAiJHs6LVNlY29uZCB9 JHt8Zm4xfSIgO30gO30gfU9VVCIKICAgZm4yCiAwOmZ1bmN0aW9uIGRlZmluaXRpb24sIGJyYWNl IG5lc3RpbmcsIHF1b3RlIG5lc3RpbmcKID5JTk9VVApAQCAtMzMxLDYgKzMzMSwyNiBAQCBGOkZp ZGRseSBoZXJlIHRvIGdldCBFT0YgcGFzdCB0aGUgdGVzdCBzeW50YXgKID50eXBlc2V0IC1nIHdy YXA9J1JFUExZIGluIGVudmlyb25tZW50IGFzc2lnbm1lbnQnCiA+dHlwZXNldCAtZyB3cmFwPSdj YXB0dXJlIGluIGVudmlyb25tZW50IGFzc2lnbm1lbnQnCiAKKyAgc2V0b3B0IGlnbm9yZWJyYWNl cworMDpkdW1teSB0ZXN0IHRvIHNldCBvcHRpb24gc29vbiBlbm91Z2gKK0Y6bXVzdCBkbyB0aGlz IGJlZm9yZSBldmFsdWF0aW5nIHRoZSBuZXh0IHRlc3QgYmxvY2sKKworICBwdXJyICR7fCBSRVBM WT0ke1JFUExZOi1idXJpZWR9fX0KKzA6aWdub3JlZCBicmFjZXMsIHBhcnQgMQorPmJ1cmllZH0K KworICBwdXJyICR7IHB1cnIgJHtSRVBMWTotYnVyaWVkfX19CiswOmlnbm9yZWQgYnJhY2VzLCBw YXJ0IDIKKz5idXJpZWR9CisKKyAgcHVyciAkeyB7IGVjaG8gbmVzdGVkIDt9IH0KKzA6aWdub3Jl ZCBicmFjZXMsIHBhcnQgMworPm5lc3RlZAorCisgIHB1cnIgJHsgeyBlY2hvIG5lc3RlZCB9IH0K KzE6aWdub3JlZCBicmFjZXMsIHBhcnQgNAorPyhldmFsKToxOiBwYXJzZSBlcnJvciBuZWFyIGB9 JworCiAgIHByaW50IC11ICRaVFNUX2ZkICR7WlRTVF90ZXN0bmFtZX06IFRFU1QgQ09NUExFVEUK IDA6bWFrZSBzdXJlIHdlIGdvdCB0byB0aGUgZW5kCiBGOnNvbWUgdGVzdHMgbWlnaHQgc2lsZW50 bHkgYnJlYWsgdGhlIHRlc3QgaGFybmVzcwpAQCAtMzM4LDMgKzM1OCw0IEBAIEY6c29tZSB0ZXN0 cyBtaWdodCBzaWxlbnRseSBicmVhayB0aGUgdGVzdCBoYXJuZXNzCiAlY2xlYW4KIAogICB1bmZ1 bmN0aW9uIHB1cnIgcHVybAorICB1bnNldG9wdCBpZ25vcmVicmFjZXMK --000000000000944c380605380423--