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 8106 invoked from network); 11 Sep 2023 04:34:36 -0000 Received: from zero.zsh.org (2a02:898:31:0:48:4558:7a:7368) by inbox.vuxu.org with ESMTPUTF8; 11 Sep 2023 04:34:36 -0000 ARC-Seal: i=1; cv=none; a=rsa-sha256; d=zsh.org; s=rsa-20210803; t=1694406876; b=bcQDnJtourbFGebrdOfTuS5u7esh/bcW4okpAlqiNS+XviSRfvSMNnmUNyfm+mCUbtKPVZc2iw 1K8Vdj3hfigHs927Si30RBitTSs/qOegqI+wAPwNSqGaxMzR7b0wbpodNpOMvFo4vyJeuABub3 u9W8MJ2u2WlF+vEUDd5WCjW792yjmvXFrJfkwlyvayms7NuXqUKzwroIAGNzdggqj9idHokLFp WgsNWeA3akeyira40Ud7EmNlqaWDS6BBzLOzulSxGo8SZUcDkOhzl24dr3EXShWcOGSclSUlCj IL3qP2Rtmzn8WeWGQf6B6S3gi2NEpe/SxFBZ+UiSggPP9Q==; ARC-Authentication-Results: i=1; zsh.org; iprev=pass (mail-ej1-f47.google.com) smtp.remote-ip=209.85.218.47; 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=1694406876; bh=7Xlth59sghOfcERLWj/tN9lbEWoy/BMqeM5R8EnGEoc=; 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=eJ4ZE7bx1+iUN0Id79yHjWgHK3atDwD2pSJjfwydcF129JU0if2xnqApjJQheUAMw3wA2NJW/f wbUgMlcaPiYKfmwWVF60Wdg+PD+PnDeQlf50R9DkEAzzL1na0Z6r0dK+DJhGjPVebBEVPzfuCi Nw1BSc2O5yTSF3bU1clE7YgsiYMGB8GM3nNBgMVkVhmUM53CKxrwK0FDq1EW1+6JuH8m1YL63n 6QeblXr4qfalOl2kbSweXgLba1JDQgA1kbPW1T1wjd0/f64c2DrDQKYxhhLhZwzBxkYJtyxZWK wk4Sx66S0/Szek9edjxo+zpkytD1B/uyb/TXbhBLyQVKCg==; 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=ZnZFscI4R+AvYMLwK6u6mUiA196yKcN6r+KzBtGdKG0=; b=jhk/OuNmFtnXHNn+PV2KKI0M52 Wr5/EwgwFS6mU+uaeNvutX/Z8hphqlCjFLeFcatV+CTZQTNgD+mLzBcwmauPbh5E7pga3GNx+Z3I4 W1UvOH5sWD0/EyT4LYERwjjewooR7UvhIW7VHwxxN61+y5oasA4hI8sqlI5DnqwcUIlpqKuXtX4ve Xno8DrhxRyMamQR0PsCZ+ZF1Bnifpm6j+X7oBAw1JY8jHwiRRR8UhVXBxEtpMMA2I86MIeyUu9OS2 MOS32pyejh2kKzsxUk87vBYywiqTqG2kFkTM1TilKSpIPCLRCin3oJXmHN3b5yttmbJbCrXONwO8f gjvPI+VA==; Received: by zero.zsh.org with local id 1qfYd9-0009EL-Qi; Mon, 11 Sep 2023 04:34:35 +0000 Authentication-Results: zsh.org; iprev=pass (mail-ej1-f47.google.com) smtp.remote-ip=209.85.218.47; 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-f47.google.com ([209.85.218.47]:46327) by zero.zsh.org with esmtps (TLS1.3:TLS_AES_128_GCM_SHA256:128) id 1qfYcq-0008wY-0t; Mon, 11 Sep 2023 04:34:19 +0000 Received: by mail-ej1-f47.google.com with SMTP id a640c23a62f3a-98377c5d53eso494078166b.0 for ; Sun, 10 Sep 2023 21:34:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=brasslantern-com.20230601.gappssmtp.com; s=20230601; t=1694406855; x=1695011655; darn=zsh.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=ZnZFscI4R+AvYMLwK6u6mUiA196yKcN6r+KzBtGdKG0=; b=rPezn4qaf1U33Oc1Zkuw8OXoGKR2b4t1TEXDeDGGos5qG6j4r+nHPK5Cx+HgeyXueL QI0hVcIRpt8+YqyCh5PpbsOdLJ9Wo3q5EO74agUP5EoRgqCudncPyN8IK2d7/DEJx7Jg VeQo74tJ/QTSFSYUJdGfRnQB2L6Zrv9WOFw6HVYExojFqFUA6ngY9AYom2RBXqClgF2C Za+4FDHFnOW6CYHV7oZIbj+u+T0SAUJH99PAFwDX/1KiAF3ZPr1hLj4y9jM/5ibj9njm TQAfLQNK+pfb+UDi2AXZ+kKFrf195tEskFRJlitH6bPBT/jBWhQ9uaUqiybtuujjhz3E j6yA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1694406855; x=1695011655; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=ZnZFscI4R+AvYMLwK6u6mUiA196yKcN6r+KzBtGdKG0=; b=t6G3KhHB6M9j1ANze4Ni3harUiNXZ/1i1CshbDvavm9rHQXAZ8FOGBCejuMDm9F9Ow 6LGty3+HaKVpPeP4rgfghuMaFag5G1m/7hQPEVN2zXbnISylTEWGIh4jXSsbYk+p1mRD MmWh8UFZssW7yrbBwRlAxCsNEy7LnseOjMlb0WlMG4lq0t+PSUVYj88HO2pn2HTy2vfj zOLRaHsZ+RdWQwjtd5ckmg8fMX/ShoORCxoGB3wgi2KIv4As1a/31//P02XmWIbWUEAD 0oTHe/f66oYf5Nxh3N8wdNUIVIEk/UQ8GlZ037sZB6ezPZwpfQL1jNN4IBqkGVKtmkjr DGFg== X-Gm-Message-State: AOJu0Yyq1Pi2ighTcBo8NEO8NJNkCxocGUo8JUG2Gy2k618JIKOvNKVe wXEgwKVMbn9pSEgeLiRoyd8KWm5gJe3NqDqcofN07v5gKbYvkrI34Hg= X-Google-Smtp-Source: AGHT+IG/Ea9BC7pnBE34W26HmOR8mXPMAXITYkAd9CfntAGvl1okjbPA+9zL5PhzJj2XBm1WF95LIrMxa0PR7TwBrZI= X-Received: by 2002:a17:906:32db:b0:99d:f0e8:5623 with SMTP id k27-20020a17090632db00b0099df0e85623mr7215924ejk.54.1694406855252; Sun, 10 Sep 2023 21:34:15 -0700 (PDT) MIME-Version: 1.0 From: Bart Schaefer Date: Sun, 10 Sep 2023 21:34:04 -0700 Message-ID: Subject: [PATCH] Nofork capture of stdout To: Zsh hackers list Content-Type: multipart/mixed; boundary="000000000000b6991506050dd6e0" X-Seq: 52126 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: --000000000000b6991506050dd6e0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Mon, Jul 17, 2023 at 8:14=E2=80=AFPM Bart Schaefer wrote: > > I have not yet implemented the anonymous tempfile for ${ > capture_stdout }. However, this equivalent construction does work > (extra newlines for clarity): > ${| > () { > capture_stdout > $1 > REPLY=3D$(<$1) > } =3D( } > > Both $(<...) and =3D(<...) are non-forking shortcuts already, so this > acts as proof of concept. I've just discovered that =3D( X-Attachment-Id: f_lmee1esu0 ZGlmZiAtLWdpdCBhL0RvYy9ac2gvZXhwbi55byBiL0RvYy9ac2gvZXhwbi55bwppbmRleCA3NDgw MDc2ZGYuLjFkZWMyYzBlNiAxMDA2NDQKLS0tIGEvRG9jL1pzaC9leHBuLnlvCisrKyBiL0RvYy9a c2gvZXhwbi55bwpAQCAtMTkxOCwxMyArMTkxOCwxMSBAQCBleGNlcHQgYXMgbm90ZWQgZm9yIHR0 KFJFUExZKSwgYW5kIHZhcihwYXJhbSkgc2hvdWxkIGVtKG5vdCkgYmUgZGVjbGFyZWQKIHdpdGhp biB0aGUgY29tbWFuZC4gIElmIHZhcihwYXJhbSkgbmFtZXMgYW4gYXJyYXksIGFycmF5IGV4cGFu c2lvbiBydWxlcwogYXBwbHkuCiAKLUNPTU1FTlQoVG8gYmUgaW1wbGVtZW50ZWQgbGF0ZXI6CiBB IGNvbW1hbmQgZW5jbG9zZWQgaW4gYnJhY2VzIHByZWNlZGVkIGJ5IGEgZG9sbGFyIHNpZ24sIGFu ZCBzZXQgb2ZmIGZyb20KIHRoZSBicmFjZXMgYnkgd2hpdGVzcGFjZSwgbGlrZSBgdHQoJHsgKS4u LnR0KCB9KScsIGlzIHJlcGxhY2VkIGJ5IGl0cwogc3RhbmRhcmQgb3V0cHV0LiAgTGlrZSBgdHQo JHt8KS4uLnR0KH0pJyBhbmQgdW5saWtlCiBgdHQoJExQQVIoKSkuLi50dChSUEFSKCkpJywgdGhl IGNvbW1hbmQgZXhlY3V0ZXMgaW4gdGhlIGN1cnJlbnQgc2hlbGwKIGNvbnRleHQgd2l0aCBmdW5j dGlvbiBsb2NhbCBiZWhhdmlvcnMgYW5kIGRvZXMgbm90IGNyZWF0ZSBhIHN1YnNoZWxsLgotKQog CiB0ZXhpbm9kZShBcml0aG1ldGljIEV4cGFuc2lvbikoQnJhY2UgRXhwYW5zaW9uKShDb21tYW5k IFN1YnN0aXR1dGlvbikoRXhwYW5zaW9uKQogc2VjdChBcml0aG1ldGljIEV4cGFuc2lvbikKZGlm ZiAtLWdpdCBhL1NyYy9zdWJzdC5jIGIvU3JjL3N1YnN0LmMKaW5kZXggYWFlMTc4ZjllLi5iOWY2 N2M5ZWEgMTAwNjQ0Ci0tLSBhL1NyYy9zdWJzdC5jCisrKyBiL1NyYy9zdWJzdC5jCkBAIC0xOTA0 LDcgKzE5MDQsNyBAQCBwYXJhbXN1YnN0KExpbmtMaXN0IGwsIExpbmtOb2RlIG4sIGNoYXIgKipz dHIsIGludCBxdCwgaW50IHBmX2ZsYWdzLAogICAgICAgICAgKiBzaG91bGQgbm90IGJlIHBhcnQg b2YgY29tbWFuZCBzdWJzdGl0dXRpb24gaW4gYW55IGNhc2UuCiAgICAgICAgICAqIFVzZSAkeyhV KSR7fGNtZDt9fSBhcyB5b3Ugd291bGQgZm9yICR7KFUpJChjbWQ7KX0uCiAJICovCi0JaWYgKCpz ID09ICd8JyB8fCAqcyA9PSBCYXIpIHsKKwlpZiAoKnMgPT0gJ3wnIHx8ICpzID09IEJhciB8fCBp bmJsYW5rKCpzKSkgewogCSAgICBjaGFyICpvdXRicmFjZXAgPSBzOwogCSAgICBjaGFyIHNhdiA9 ICpzOwogCSAgICAqcyA9IEluYnJhY2U7CkBAIC0xOTQwLDYgKzE5NDAsMzQgQEAgcGFyYW1zdWJz dChMaW5rTGlzdCBsLCBMaW5rTm9kZSBuLCBjaGFyICoqc3RyLCBpbnQgcXQsIGludCBwZl9mbGFn cywKIAkJICAgIGNtZGFyZyA9IGR1cHN0cnBmeChzKzEsIG91dGJyYWNlcC1zLTEpOwogCQkgICAg cnBseXZhciA9ICJSRVBMWSI7CiAJCX0KKwkJaWYgKGluYmxhbmsoKnMpKSB7CisJCSAgICBjaGFy ICpkdW1teSA9IE5VTEwsICp0bXBmaWxlID0gZHVwc3RyaW5nKCI9KDw8PCcnKSIpOworCQkgICAg LyoKKwkJICAgICAqIEFkbWl0dGVkbHkgYSBoYWNrLiAgVGFrZSBhZHZhbnRhZ2Ugb2YgdGhlIGVu Zm9yY2VkCisJCSAgICAgKiBsb2NhbGl0eSBvZiBSRVBMWSBhbmQgdGhlIHNlbWFudGljcyBvZiAk KDxmaWxlKSB0bworCQkgICAgICogY29uc3RydWN0IGEgY29tbWFuZCB0aGF0IHdyaXRlcy9yZWFk cy9yZW1vdmVzIGEKKwkJICAgICAqIHRlbXBvcmFyeSBmaWxlIGJ5IHVzaW5nIGFuID0oPDw8Jycp IHN1YnN0aXR1dGlvbi4KKwkJICAgICAqIFRoZW4gZmFsbCB0aHJvdWdoIHRvIHRoZSByZWd1bGFy IGhhbmRsaW5nIG9mICRSRVBMWQorCQkgICAgICogdG8gbWFuYWdlIHdvcmQgc3BsaXR0aW5nLCBl eHBhbnNpb24gZmxhZ3MsIGV0Yy4KKwkJICAgICAqLworCQkgICAgY2hhciAqZm10ID0gInsgJXMg O30gPnwgJXM7IFJFUExZPVwiJCg8JXMpXCIiOyAvKiAyOCAqLworCQkgICAgdG9rZW5pemUodG1w ZmlsZSk7CisJCSAgICBpZiAoKHRtcGZpbGUgPSBnZXRvdXRwdXRmaWxlKHRtcGZpbGUsICZkdW1t eSkpKSB7CisJCQkvKiBQcmV2ZW50IHNoZW5hbmlnYW5zIHdpdGggJFRNUFBSRUZJWCAqLworCQkJ ZHVtbXkgPSB0bXBmaWxlOworCQkJdG1wZmlsZSA9IHF1b3Rlc3RyaW5nKHRtcGZpbGUsIFFUX0JB Q0tTTEFTSCk7CisJCQl6c2ZyZWUoZHVtbXkpOworCQkJZHVtbXkgPSB6aGFsbG9jKHN0cmxlbihj bWRhcmcpICsKKwkJCQkJMiAqIHN0cmxlbih0bXBmaWxlKSArCisJCQkJCTI4KTsKKwkJCXNwcmlu dGYoZHVtbXksIGZtdCwgY21kYXJnLCB0bXBmaWxlLCB0bXBmaWxlKTsKKwkJCWNtZGFyZyA9IGR1 bW15OworCQkgICAgfSBlbHNlIHsKKwkJCS8qIFRNUFBSRUZJWCBub3Qgd3JpdGFibGU/ICovCisJ CQljbWRvdXR2YWwgPSBsYXN0dmFsOworCQkJY21kYXJnID0gTlVMTDsKKwkJICAgIH0KKwkJfQog CQlzID0gb3V0YnJhY2VwOwogCSAgICB9CiAJfQpAQCAtMTk2OSw3ICsxOTk3LDcgQEAgcGFyYW1z dWJzdChMaW5rTGlzdCBsLCBMaW5rTm9kZSBuLCBjaGFyICoqc3RyLCBpbnQgcXQsIGludCBwZl9m bGFncywKIAogCWlmIChycGx5dmFyKSB7CiAJICAgIGlmIChzdHJjbXAocnBseXZhciwgIlJFUExZ IikgPT0gMCkgewotCQlpZiAoKHZhbCA9IHp0cmR1cChnZXRzcGFyYW0oIlJFUExZIikpKSkKKwkJ aWYgKCh2YWwgPSBkdXBzdHJpbmcoZ2V0c3BhcmFtKCJSRVBMWSIpKSkpCiAJCSAgICB2dW5zZXQg PSAwOwogCQllbHNlIHsKIAkJICAgIHZ1bnNldCA9IDE7CmRpZmYgLS1naXQgYS9UZXN0L0QxMG5v Zm9yay56dHN0IGIvVGVzdC9EMTBub2ZvcmsuenRzdAppbmRleCA3MzhhNDViOTkuLjVlYWExMjI3 OSAxMDA2NDQKLS0tIGEvVGVzdC9EMTBub2ZvcmsuenRzdAorKysgYi9UZXN0L0QxMG5vZm9yay56 dHN0CkBAIC0xNjAsNyArMTYwLDcgQEAgRjpXaHkgbm90IHVzZSB0aGlzIGVycm9yIGluIHRoZSBw cmV2aW91cyBjYXNlIGFzIHdlbGw/CiA/KGV2YWwpOjE6IGNsb3NpbmcgYnJhY2UgZXhwZWN0ZWQK IAogICBwdXJyICR7IHB1cnIgU1RET1VUIH0KLTBmOmNhcHR1cmUgc3Rkb3V0CiswOmNhcHR1cmUg c3Rkb3V0CiA+U1RET1VUCiAKICMgZW5kIFBTMiBzdGFjayB0ZXN0cyAKQEAgLTMyMSw2ICszMjEs MTAgQEAgRjpGaWRkbHkgaGVyZSB0byBnZXQgRU9GIHBhc3QgdGhlIHRlc3Qgc3ludGF4CiAwOmhl cmUtc3RyaW5nIGJlaGF2aW9yCiA+aW4gYSBoZXJlIHN0cmluZwogCisgIDw8PCR7IHB1cnIgJCdz dGRvdXQgYXMgYSBoZXJlIHN0cmluZycgfQorMDphbm90aGVyIGNhcHR1cmUgc3Rkb3V0Cis+c3Rk b3V0IGFzIGEgaGVyZSBzdHJpbmcKKwogICBwcmludCAtdSAkWlRTVF9mZCAke1pUU1RfdGVzdG5h bWV9OiBURVNUIENPTVBMRVRFCiAwOm1ha2Ugc3VyZSB3ZSBnb3QgdG8gdGhlIGVuZAogRjpzb21l IHRlc3RzIG1pZ2h0IHNpbGVudGx5IGJyZWFrIHRoZSB0ZXN0IGhhcm5lc3MK --000000000000b6991506050dd6e0--