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.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, T_PDS_PRO_TLD,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 22578 invoked from network); 3 May 2023 14:47:00 -0000 Received: from zero.zsh.org (2a02:898:31:0:48:4558:7a:7368) by inbox.vuxu.org with ESMTPUTF8; 3 May 2023 14:47:00 -0000 ARC-Seal: i=1; cv=none; a=rsa-sha256; d=zsh.org; s=rsa-20210803; t=1683125220; b=mzQcbp1EeKcxUcHO7zYV3+yHuHLckw6gJE9yGzg5h/L/Xvoy9wb3D/OUxsFTMHDxmDNX2d++rq jCthgu5eGo8sHzbYDheTgOqLfdRezVfL3yuIP5xsMd6drcMDGAxR97343HFzfKhNo1uL0bq0NM DnyDHWR7xWAZrNXyW8LnEjVqrNWb5uw8PcgGePo1pyxQN9he99DLvGxznH2D4jUPYlSgvhfREo ylG+PxY32ekufdfHfVF990b/NSFbHmjD7qQVvHGrDE/NJhLWclPDDAg3hA8UkK6r3qxi+oAVqP EdZxwjsRNApd4/IwF/LG0nsy/kUS6eIsTnpqS/Ea5DdNdA==; ARC-Authentication-Results: i=1; zsh.org; iprev=pass (mail-lf1-f54.google.com) smtp.remote-ip=209.85.167.54; dkim=pass header.d=gmail.com header.s=20221208 header.a=rsa-sha256; dmarc=pass header.from=gmail.com; arc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed; d=zsh.org; s=rsa-20210803; t=1683125220; bh=M2DZ6hjKGuyzqMZseyARVQcfuZC99OtcgeYtTi6F5ic=; 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=kElAQogioCYhLjLmhYj1+1/3jllZpHGMe9nQBat/3ek9u17X89lnUo69lnyGXluhBKccTjvsd9 7nBHR9rHz3PTaqICeyfcc7mzkRgHo6UqlhbTj+ZmdIT+e6dokRISGKT/iUUV+F0m5zXRNjkfv0 2JSuF2aNoAlI6k9J6GK7NRBI6zclnZvbqNCIyp1HyytMoheJnvsk8UZfDflC+lybh+LdOY4Cx4 DIi7oNULnTzluv83K2ZiTtUgWbAkhgOCOfH32EgcVkcr1g5z3gUZy90lU7Ki0nzpfh7BgoIZ/H fWerQdJ43Lfh6X8FQqyjdxD+bkvBWAjIIf4kltIWG0DpfQ==; 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=M2DZ6hjKGuyzqMZseyARVQcfuZC99OtcgeYtTi6F5ic=; b=U1IHkiKy/jIdJHxt7wKQofQsO7 s0KpHUOt6rOeT51wVeTYxplyWdHDQM0EjXqQvcLV5dawP8VpBtJHut4DQwViw2TYJ6xXglEKcQqgA YHvPTid4eqYXHMZlboDx+zWFphba+81KR6G0Q/VbEbg/xKMTNJ/ZCwwj6ZEnnp3J7N1aQ9y8KIpci +XOTMorynDgkkQS16VTQKPhof8MJePPp39LcaQHkeWVEl9JujiEBSJRtCUvR78+LL7jMsGtMSGHL0 PV/3s9m/hKpEXIstyXMDSore6hXaaD9bkb36kmw5BUnrFfwbdVTk5LWfnvowPyy2cdW8SkL6MahAb JhEkRevQ==; Received: by zero.zsh.org with local id 1puDkw-000EoR-QG; Wed, 03 May 2023 14:46:58 +0000 Authentication-Results: zsh.org; iprev=pass (mail-lf1-f54.google.com) smtp.remote-ip=209.85.167.54; dkim=pass header.d=gmail.com header.s=20221208 header.a=rsa-sha256; dmarc=pass header.from=gmail.com; arc=none Received: from mail-lf1-f54.google.com ([209.85.167.54]:61490) by zero.zsh.org with esmtps (TLS1.3:TLS_AES_128_GCM_SHA256:128) id 1puDkd-000EVd-2T; Wed, 03 May 2023 14:46:41 +0000 Received: by mail-lf1-f54.google.com with SMTP id 2adb3069b0e04-4f00c33c3d6so6635335e87.2 for ; Wed, 03 May 2023 07:46:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1683125198; x=1685717198; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=M2DZ6hjKGuyzqMZseyARVQcfuZC99OtcgeYtTi6F5ic=; b=a9mtt17VzfeVCHfqKwSLx9E5ayFrehXENya8SpIEE/6mtk1TswqqAqg5ouw6jNMkC2 Q3dglOkh3yaQUdCTs6AY3eYShXdioQUAdqKynMovtdFiV4+eaj8vnTPCrl1mScjbiBsd 9d+uBII/WZK29+PragS+o80hHb//WQdIGXGexDO8l1Vh+t/7nhQHJibzgeaYdE572mqx 4GczW17N86nYAJ46XA58CVY7CBdJ+lI2t4cCcn2Lpwc9JKxtsBvI/wJIdIwKzED1Mpgw 02g+URLkJBa8+aKwJSOksbrb7A7FfbrdZrshhocsRwaD7Erdev+itJIwO/4nhCu5EbO7 WQ7w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1683125198; x=1685717198; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=M2DZ6hjKGuyzqMZseyARVQcfuZC99OtcgeYtTi6F5ic=; b=jur0KPdRX/ATnV/ScB04IAW0ifkQ91ihJGTrprljVfyaUO7Yv2AWuOJC+/9j5I/t1/ ZF/1oFBDDPvF2L6Qy1M4jINV7k/4IxJZKvltcOTtXkunvIDLyEbqeVZwB6GAR5LkqYhl /cPUuScwM5Tztwi771IpQvpjRfbem4TGtGSVs+/sgojqDx9XJ5HQwcD3m9ER8za2Yg7v Cd/Ajc6aswpM2yti6RVzqnNgvwR/CzEt0vWhl8f0PKDipSYG7lg8/lu71VAkVuxb4XBm HIouLq7QtR3Ve+5yikaEJruw4FneAEOUX4q5FVbz/r3/nzFapjAYNEXSBzqc7hj4h2fK Zx1w== X-Gm-Message-State: AC+VfDz7M/EgV599yc9stsJhSr0I0i5TGtQglFtZe/GG8X3wuHjT5dRJ Ktx5I1vdIsNDalOeewmBDcQoSTZEENwf77SI4oWmYOrnb1c= X-Google-Smtp-Source: ACHHUZ5FqzjtoB/myugKhQpBhTSNnDvqNAYSEWrCY/MxEGhHu90z5YrCuzzxJfP9Dh5hHwhhwxX8UlSF5HHoe9B0uRg= X-Received: by 2002:ac2:531a:0:b0:4f0:22c:565e with SMTP id c26-20020ac2531a000000b004f0022c565emr1069126lfh.9.1683125197872; Wed, 03 May 2023 07:46:37 -0700 (PDT) MIME-Version: 1.0 From: Sebastian Gniazdowski Date: Wed, 3 May 2023 14:46:11 +0000 Message-ID: Subject: Re: [PATCH] Support the mksh's ${|func;} substitution To: Zsh hackers list Content-Type: multipart/mixed; boundary="000000000000886f3f05facb1f2e" X-Seq: 51702 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: --000000000000886f3f05facb1f2e Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi, I was looking at some of my old patches and stumbled upon this one which implements mksh' ${|func;} substitution. The old thread went over a complex (x) flag choice as a expected candidate for such use case, however I've now thought that something is better than nothing and that implementing simpler ${!func;} doesn't block us from adding a more advanced x-flag in the future. Also, the simplicity of this substitution is a plus for it, opposed to x-flag complexity (think of existing e flag, whose's use is fairly complex). So I thought that I send the patch again upon cleaning conflicts, for consideration. Or should we revive the advanced x-flag? To recall - the ${|func;} substitution runs function "func" and substitutes (returned string in=E2=80=A6) $REPLY after it has completed, without (!) doing forks, which is a performance and functionality benefit over currently available equivalent: $(func;print -rn -- $REPLY). Original thread: https://zsh.org/mla/workers/2019/msg00768.html --=20 Best regards, Sebastian Gniazdowski --000000000000886f3f05facb1f2e Content-Type: text/x-patch; charset="US-ASCII"; name="mksh-exec-subst.patch" Content-Disposition: attachment; filename="mksh-exec-subst.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lh7t5gi80 RnJvbSA1MTI5ODIwMzM2NzgyOTAyZjBkYzQzZDdmMTk2YmI2NmM0NTc5ZmI5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTZWJhc3RpYW4gR25pYXpkb3dza2kgPHNnbmlhemRvd3NraUBn bWFpbC5jb20+CkRhdGU6IFdlZCwgMyBNYXkgMjAyMyAxNDo0NzowMSArMDA1OQpTdWJqZWN0OiBT dXBwb3J0IHRoZSBta3NoJ3MgJHt8ZnVuYzt9IHN1YnN0aXR1dGlvbgoKLS0tCiBTcmMvc3Vic3Qu YyB8IDUxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr LQogMSBmaWxlIGNoYW5nZWQsIDUwIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKCmRpZmYg LS1naXQgYS9TcmMvc3Vic3QuYyBiL1NyYy9zdWJzdC5jCmluZGV4IDk3NGQ2MTcxZS4uYWJiNDU4 MTk1IDEwMDY0NAotLS0gYS9TcmMvc3Vic3QuYworKysgYi9TcmMvc3Vic3QuYwpAQCAtMjksNiAr MjksNyBAQAogCiAjaW5jbHVkZSAienNoLm1kaCIKICNpbmNsdWRlICJzdWJzdC5wcm8iCisjaW5j bHVkZSAiZXhlYy5wcm8iCiAKICNkZWZpbmUgTEZfQVJSQVkJMQogCkBAIC0xODYwLDggKzE4NjEs MTcgQEAgcGFyYW1zdWJzdChMaW5rTGlzdCBsLCBMaW5rTm9kZSBuLCBjaGFyICoqc3RyLCBpbnQg cXQsIGludCBwZl9mbGFncywKICAgICAgKiBqb2luaW5nIHRoZSBhcnJheSBpbnRvIGEgc3RyaW5n IChmb3IgY29tcGF0aWJpbGl0eSB3aXRoIGtzaC9iYXNoKS4KICAgICAgKi8KICAgICBpbnQgcXVv dGVkX2FycmF5X3dpdGhfb2Zmc2V0ID0gMDsKKyAgICAvKiBJbmRpY2F0ZXMgJHt8ZnVuYzt9ICov CisgICAgaW50IHJwbHlmdW5jID0gMDsKKyAgICAvKiBUaGUgbmFtZSBvZiB0aGUgZnVuY3Rpb24g dG8gYmUgcmFuIGJ5ICR7fC4uLjt9ICovCisgICAgY2hhciAqY21kYXJnID0gTlVMTDsKKyAgICAv KiBUaGUgbGVuZ3RoIG9mIHRoZSBpbnB1dCBzdHJpbmcgKi8KKyAgICBpbnQgc2xlbiA9IDA7Cisg ICAgLyogVGhlIGNsb3NpbmcgYnJhY2UgcG9pbnRlciAqLworICAgIGNoYXIgKm91dGJyYWNlcDsK IAogICAgICpzKysgPSAnXDAnOworICAgIHNsZW4gPSBzdHJsZW4ocyk7CiAgICAgLyoKICAgICAg KiBOb3RoaW5nIHRvIGRvIHVubGVzcyB0aGUgY2hhcmFjdGVyIGZvbGxvd2luZyB0aGUgJCBpcwog ICAgICAqIHNvbWV0aGluZyB3ZSByZWNvZ25pc2UuCkBAIC0xODg5LDYgKzE4OTksNDEgQEAgcGFy YW1zdWJzdChMaW5rTGlzdCBsLCBMaW5rTm9kZSBuLCBjaGFyICoqc3RyLCBpbnQgcXQsIGludCBw Zl9mbGFncywKICAgICBpZiAoYyA9PSBJbmJyYWNlKSB7CiAJaW5icmFjZSA9IDE7CiAJcysrOwor CisgICAgICAgIC8qIFNob3J0LXBhdGggZm9yIHRoZSBmdW5jdGlvbi1ydW5uaW5nIHN1YnN0aXR1 dGlvbiAke3xmdW5jO30KKyAgICAgICAgICogVGhlIGZ1bmN0aW9uIG5hbWUgaXMgZXh0cmFjdGVk IGFuZCBjYWxsZWQsIGFuZCB0aGUKKyAgICAgICAgICogc3Vic3RpdHV0aW9uIGFzc2lnbmVkLiBU aGVyZSdzIG5vICguLi4pLWZsYWdzIHByb2Nlc3NpbmcsCisgICAgICAgICAqIGkuZS4gbm8gJHt8 KFUpZnVuYzt9LCBiZWNhdXNlIGl0IGxvb2tzIHF1aXRlIGF3ZnVsIGFuZAorICAgICAgICAgKiBh bHNvIHJlcXVpcmVzIGEgY2hhbmdlIHRvIHRoZSBtYW51YWwsIHBhcnQgYWJvdXQgdGhlCisgICAg ICAgICAqIHN1YnN0aXR1dGlvbiBvcmRlci4gVXNlICR7KFUpJHt8ZnVuYzt9fSBpbnN0ZWFkLCBp dCBsb29rcworICAgICAgICAgKiBjbGVhbmVyLiAqLworICAgICAgICBpZiAoICgob3V0YnJhY2Vw PXN0cmNocihzLE91dGJyYWNlKSkgfHwKKyAgICAgICAgICAgICAob3V0YnJhY2VwPXN0cmNocihz LCd9JykpKSAmJgorICAgICAgICAgICAgICAgIChzWzBdID09IEJhciB8fCBzWzBdID09ICd8Jykg JiYKKyAgICAgICAgICAgICAgICAgICAgb3V0YnJhY2VwWy0xXSA9PSAnOycgKQorICAgICAgICB7 CisgICAgICAgICAgICBycGx5ZnVuYyA9IDE7CisgICAgICAgICAgICBjbWRhcmcgPSBkdXBzdHJw ZngocysxLCBvdXRicmFjZXAtcy0yKTsKKyAgICAgICAgICAgIHM9b3V0YnJhY2VwOworCisgICAg ICAgICAgICBIYXNoTm9kZSBobiA9IE5VTEw7CisgICAgICAgICAgICBpZiggKGhuID0gc2hmdW5j dGFiLT5nZXRub2RlKHNoZnVuY3RhYiwgY21kYXJnKSkgKSB7CisgICAgICAgICAgICAgICAgLyog RXhlY3V0ZSB0aGUgc2hlbGwgZnVuY3Rpb24gKi8KKyAgICAgICAgICAgICAgICBkb3NoZnVuYygo U2hmdW5jKSBobiwgTlVMTCwgMSk7CisgICAgICAgICAgICAgICAgdmFsID0gZ2V0c3BhcmFtKCJS RVBMWSIpOworICAgICAgICAgICAgICAgIGlmICh2YWwpCisgICAgICAgICAgICAgICAgICAgIHZ1 bnNldCA9IDA7CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHZ1 bnNldCA9IDE7CisgICAgICAgICAgICAgICAgICAgIHZhbCA9IGR1cHN0cmluZygiIik7CisgICAg ICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgemVycigibm8gc3Vj aCBmdW5jdGlvbjogJXMiLCBjbWRhcmcpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwor ICAgICAgICB9CisgICAgICAgICAgICBmZXRjaF9uZWVkZWQgPSAwOworICAgIH0KKwogCS8qCiAJ ICogSW4ga3NoIGVtdWxhdGlvbiBhIGxlYWRpbmcgYCEnIGlzIGEgc3BlY2lhbCBmbGFnIHdvcmtp bmcKIAkgKiBzb3J0IG9mIGxpa2Ugb3VyIChrKS4gIFRoaXMgaXMgdHJ1ZSBvbmx5IGZvciBhcnJh eXMgb3IKQEAgLTI1ODksNyArMjYzNCwxMSBAQCBwYXJhbXN1YnN0KExpbmtMaXN0IGwsIExpbmtO b2RlIG4sIGNoYXIgKipzdHIsIGludCBxdCwgaW50IHBmX2ZsYWdzLAogCQkJICAgICBzY2FuZmxh Z3MpKSB8fAogCSAgICAodi0+cG0gJiYgKHYtPnBtLT5ub2RlLmZsYWdzICYgUE1fVU5TRVQpKSB8 fAogCSAgICAodi0+ZmxhZ3MgJiBWQUxGTEFHX0VNUFRZKSkKLQkgICAgdnVuc2V0ID0gMTsKKyAg ICAgICAgeworICAgICAgICAgICAgaWYgKCFycGx5ZnVuYykgeworICAgICAgICAgICAgICAgIHZ1 bnNldCA9IDE7CisgICAgICAgIH0KKyAgICB9CiAKIAlpZiAod2FudHQpIHsKIAkgICAgLyoKLS0g CjIuMjguMAoK --000000000000886f3f05facb1f2e--