From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Jim Porter Newsgroups: gmane.emacs.bugs Subject: bug#55590: [PATCH v2] 29.0.50; Eshell subcommands clobber pipelines and produce incorrect output Date: Mon, 23 May 2022 08:41:14 -0700 Message-ID: References: <6cc569a4-3512-d546-3f39-76f3d61436ac@gmail.com> <788e86e0-9358-2018-caae-71862d3b2442@gmail.com> <87v8twx0xl.fsf@athena.silentflame.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------F080509A770D2816A1DFDE76" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="1099"; mail-complaints-to="usenet@ciao.gmane.io" To: Sean Whitton , 55590@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Mon May 23 17:42:46 2022 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1ntACk-000069-Dy for geb-bug-gnu-emacs@m.gmane-mx.org; Mon, 23 May 2022 17:42:46 +0200 Original-Received: from localhost ([::1]:43812 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ntACi-0002Iy-CN for geb-bug-gnu-emacs@m.gmane-mx.org; Mon, 23 May 2022 11:42:45 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:36376) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ntAC2-0002GE-LZ for bug-gnu-emacs@gnu.org; Mon, 23 May 2022 11:42:05 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]:56159) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ntAC2-0006dr-CP for bug-gnu-emacs@gnu.org; Mon, 23 May 2022 11:42:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1ntAC2-0007VP-Ay for bug-gnu-emacs@gnu.org; Mon, 23 May 2022 11:42:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Jim Porter Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 23 May 2022 15:42:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 55590 X-GNU-PR-Package: emacs Original-Received: via spool by 55590-submit@debbugs.gnu.org id=B55590.165332048128790 (code B ref 55590); Mon, 23 May 2022 15:42:02 +0000 Original-Received: (at 55590) by debbugs.gnu.org; 23 May 2022 15:41:21 +0000 Original-Received: from localhost ([127.0.0.1]:50052 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ntABN-0007UI-41 for submit@debbugs.gnu.org; Mon, 23 May 2022 11:41:21 -0400 Original-Received: from mail-pl1-f182.google.com ([209.85.214.182]:42694) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ntABM-0007U3-0O for 55590@debbugs.gnu.org; Mon, 23 May 2022 11:41:20 -0400 Original-Received: by mail-pl1-f182.google.com with SMTP id d22so13443346plr.9 for <55590@debbugs.gnu.org>; Mon, 23 May 2022 08:41:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=subject:to:references:from:message-id:date:mime-version:in-reply-to :content-language; bh=dwr3cIFa14wPOxmUtpgbE76EqGPhkIVEMlyUfrSMyhI=; b=CUjDHanyV31n2pmcwzPGkK2k+KlVVEZ1r2cmW0mZoe0W+CzgSbfdyY8GqMbJcgfoYZ vYRu+it1+XbmL/DHz15ImBSQZ6/l4AjpmyacFiCn98Ebxhne4roQpGZKyMIY4xUReBHQ PubPDVnbra0Ce3qdY2SZaxffwDgP1Sy//IgcAoVBXAZks98jclCvGjq92wHDX2TQU7QO eZlszi2xBKZL2JNQNM/JYSy1scmUU2MWLcYenAL0AXLjTbpS/spVD4ntJhEj86fvRU5+ RPUFv34wOBYqo43KG89bg0AFXd995q/QAdfK0p0zY3QcNSTsbZ7gNxm6ZggRhy9tnQ/N ZqoQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:subject:to:references:from:message-id:date :mime-version:in-reply-to:content-language; bh=dwr3cIFa14wPOxmUtpgbE76EqGPhkIVEMlyUfrSMyhI=; b=hp82Vy9WEG0V58eeHiXqxae5U/VFow5P5KsLne0rqUiyagrjyVTKA02qrRsUMgc2+S baO+bRWBx5gUssEExUpUTjTSvrSjbkCIP7up9QeKp8wAXQadmzPzP8yJTetwONy5y9E8 w8K3Nihq3oPqI6u3P+YulM2PSMKAwfRMCyX3P/eRV/uBD47Zv6rRI9jBUuDbnvpDlAIJ i6+X7AnrTMq2J4AE7alWO6URQdYR0HySNfMaLdfxUo+rqDgaAZ1ctwb2jlIu/ELeRfZV UX9d1IarJ4dhRYcMIhcnvcrhpRpsIzO9MUwgRTkDrSrGvHrJt8DfAg8TERMEFIXc7Xpk w3vw== X-Gm-Message-State: AOAM532gsb7F2JMvd3NHdwjSA49qfuMfSql8SmAq+p9XQiyN2Pg8+bNz zFyACKdttX1TRp05An10V00MU4I8TSs= X-Google-Smtp-Source: ABdhPJx9wFlZxXizpPljNgeR1eKSAc5D/2KBpLxZSHfuqNQC6a0aOgT5363xfTFUHQI7K9V2o5e9pg== X-Received: by 2002:a17:90a:3e81:b0:1df:4c26:1786 with SMTP id k1-20020a17090a3e8100b001df4c261786mr26694262pjc.126.1653320473991; Mon, 23 May 2022 08:41:13 -0700 (PDT) Original-Received: from [192.168.1.2] (cpe-76-168-148-233.socal.res.rr.com. [76.168.148.233]) by smtp.googlemail.com with ESMTPSA id a9-20020a62bd09000000b0051827128aeasm7334128pff.131.2022.05.23.08.41.13 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 23 May 2022 08:41:13 -0700 (PDT) In-Reply-To: <87v8twx0xl.fsf@athena.silentflame.com> Content-Language: en-US X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.io gmane.emacs.bugs:232978 Archived-At: This is a multi-part message in MIME format. --------------F080509A770D2816A1DFDE76 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit On 5/22/2022 10:39 PM, Sean Whitton wrote: > On Sun 22 May 2022 at 08:43pm -07, Jim Porter wrote: >> On 5/22/2022 8:34 PM, Jim Porter wrote: >>> Starting from `emacs -Q -f eshell', enter the following command: >>> >>>   echo ${*echo hi} | rev >>> >>> The output is: >>> >>>   ~ $ ih >>> >>> That is, the output of the command ended up *after* the prompt, when it >>> should be before. [snip] > > Couldn't you just defvar a couple of vars for this purpose? Do you mean just defvar-ing `headproc' and `tailproc' (and renaming them, of course)? That works for my example above, but falls apart for more complex cases such as: echo ${*echo hi | rev} | tr a-z A-Z The Eshell manual also says the following command is broken (output comes after the prompt). It works correctly with my patch, but just adding defvars isn't enough: for i in 1 2 3 { grep -q a b && *echo hi } | wc -l The "Command evaluation macros" comment section in lisp/eshell/esh-cmd.el indicates that there are some odd limitations on these macros, so that might be part of the issue. I'm still a bit confused as to why the dance in my patch is necessary, but I'm ok with any implementation that passes the tests. Attached is an updated patch with an additional test for the more-complex case and the manual entry about this bug removed. --------------F080509A770D2816A1DFDE76 Content-Type: text/plain; charset=UTF-8; name="0001-Keep-subcommands-in-pipelines-from-clobbering-the-he.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename*0="0001-Keep-subcommands-in-pipelines-from-clobbering-the-he.pa"; filename*1="tch" RnJvbSA4NDY3NzIzN2FmMmI4ZmI3NDcwMmI0MjBjNGY5MjE0Y2E1MzczMzliIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKaW0gUG9ydGVyIDxqcG9ydGVyYnVnc0BnbWFpbC5j b20+CkRhdGU6IFN1biwgMjIgTWF5IDIwMjIgMTc6Mjc6NDggLTA3MDAKU3ViamVjdDogW1BB VENIXSBLZWVwIHN1YmNvbW1hbmRzIGluIHBpcGVsaW5lcyBmcm9tIGNsb2JiZXJpbmcgdGhl IGhlYWQvdGFpbAogcHJvY2Vzc2VzCgoqIGxpc3AvZXNoZWxsL2VzaC1jbWQuZWwgKGVzaGVs bC1leGVjdXRlLXBpcGVsaW5lKTogVXNlICdtYWtlLXN5bWJvbCcKZm9yIGhlYWRwcm9jIGFu ZCB0YWlscHJvYy4KKGVzaGVsbC1kby1waXBlbGluZXMsIGVzaGVsbC1kby1waXBlbGluZXMt c3luY2hyb25vdXNseSk6IEFkYXB0IHRvIHRoZQphYm92ZS4KCiogdGVzdC9saXNwL2VzaGVs bC9lc2hlbGwtdGVzdHMuZWwgKGVzaGVsbC10ZXN0L3BpcGUtc3ViY29tbWFuZCkKKGVzaGVs bC10ZXN0L3BpcGUtc3ViY29tbWFuZC13aXRoLXBpcGUpOiBOZXcgdGVzdC4KCiogZG9jL21p c2MvZXNoZWxsLnRleGkgKEJ1Z3MgYW5kIGlkZWFzKTogUmVtb3ZlIGl0ZW0gYWJvdXQgcGlw aW5nIHRvCnByb2Nlc3MgZnJvbSBsb29wOyB0aGlzIGNvbW1pdCBmaXhlcyBpdCAoYnVnIzU1 NTkwKS4KLS0tCiBkb2MvbWlzYy9lc2hlbGwudGV4aSAgICAgICAgICAgICB8ICA4IC0tLS0t LS0tCiBsaXNwL2VzaGVsbC9lc2gtY21kLmVsICAgICAgICAgICB8IDE1ICsrKysrKysrKyst LS0tLQogdGVzdC9saXNwL2VzaGVsbC9lc2hlbGwtdGVzdHMuZWwgfCAxNiArKysrKysrKysr KysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDI2IGluc2VydGlvbnMoKyksIDEzIGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL2RvYy9taXNjL2VzaGVsbC50ZXhpIGIvZG9jL21pc2MvZXNo ZWxsLnRleGkKaW5kZXggZDM1YTY0MmI2Mi4uODVlNWE0OTMzZiAxMDA2NDQKLS0tIGEvZG9j L21pc2MvZXNoZWxsLnRleGkKKysrIGIvZG9jL21pc2MvZXNoZWxsLnRleGkKQEAgLTE3NTgs MTQgKzE3NTgsNiBAQCBCdWdzIGFuZCBpZGVhcwogZnVuY3Rpb24gYXJnICgpIEB7IGJsYWgg JCogQH0KIEBlbmQgZXhhbXBsZQogCi1AaXRlbSBAc2FtcHtmb3IgaSBpbiAxIDIgMyBAeyBn cmVwIC1xIGEgYiAmJiAqZWNobyBoYXMgaXQgQH0gfCB3YyAtbH0gb3V0cHV0cyByZXN1bHQg YWZ0ZXIgcHJvbXB0Ci0KLUluIGZhY3QsIHBpcGluZyB0byBhIHByb2Nlc3MgZnJvbSBhIGxv b3BpbmcgY29uc3RydWN0IGRvZXNuJ3Qgd29yayBpbgotZ2VuZXJhbC4gIElmIEkgY2hhbmdl IHRoZSBjYWxsIHRvIEBjb2Rle2VzaGVsbC1jb3B5LWhhbmRsZXN9IGluCi1AY29kZXtlc2hl bGwtcmV3cml0ZS1mb3ItY29tbWFuZH0gdG8gdXNlIEBjb2Rle2VzaGVsbC1wcm90ZWN0fSwg aXQgc2VlbXMKLXRvIHdvcmssIGJ1dCB0aGUgb3V0cHV0IG9jY3VycyBhZnRlciB0aGUgcHJv bXB0IGlzIGRpc3BsYXllZC4gIFRoZSB3aG9sZQotc3RydWN0dXJlZCBjb21tYW5kIHRoaW5n IGlzIHRvbyBjb21wbGljYXRlZCBhdCBwcmVzZW50LgotCiBAaXRlbSBQY29tcGxldGUgc29t ZXRpbWVzIGdldHMgc3R1Y2sKIAogWW91IHByZXNzIEBrZXl7VEFCfSwgYnV0IG5vIGNvbXBs ZXRpb25zIGFwcGVhciwgZXZlbiB0aG91Z2ggdGhlCmRpZmYgLS1naXQgYS9saXNwL2VzaGVs bC9lc2gtY21kLmVsIGIvbGlzcC9lc2hlbGwvZXNoLWNtZC5lbAppbmRleCA0MjYxNmU3MDM3 Li43M2MyNTA2MzJjIDEwMDY0NAotLS0gYS9saXNwL2VzaGVsbC9lc2gtY21kLmVsCisrKyBi L2xpc3AvZXNoZWxsL2VzaC1jbWQuZWwKQEAgLTgyNyw4ICs4MjcsOCBAQCBlc2hlbGwtZG8t cGlwZWxpbmVzCiAJCSAgICAgICgoY2RyIHBpcGVsaW5lKSB0KQogCQkgICAgICAodCAocXVv dGUgJ2xhc3QpKSkpKQogICAgICAgICAgIChsZXQgKChwcm9jICwoY2FyIHBpcGVsaW5lKSkp Ci0gICAgICAgICAgICAoc2V0cSBoZWFkcHJvYyAob3IgcHJvYyBoZWFkcHJvYykpCi0gICAg ICAgICAgICAoc2V0cSB0YWlscHJvYyAob3IgdGFpbHByb2MgcHJvYykpCisgICAgICAgICAg ICAoc2V0IGhlYWRwcm9jIChvciBwcm9jIChzeW1ib2wtdmFsdWUgaGVhZHByb2MpKSkKKyAg ICAgICAgICAgIChzZXQgdGFpbHByb2MgKG9yIChzeW1ib2wtdmFsdWUgdGFpbHByb2MpIHBy b2MpKQogICAgICAgICAgICAgcHJvYykpKSkpKQogCiAoZGVmbWFjcm8gZXNoZWxsLWRvLXBp cGVsaW5lcy1zeW5jaHJvbm91c2x5IChwaXBlbGluZSkKQEAgLTg2MSw3ICs4NjEsNyBAQCBl c2hlbGwtZG8tcGlwZWxpbmVzLXN5bmNocm9ub3VzbHkKICAgICAgICAobGV0ICgocmVzdWx0 ICwoY2FyIHBpcGVsaW5lKSkpCiAgICAgICAgICA7OyB0YWlscHJvYyBnZXRzIHRoZSByZXN1 bHQgb2YgdGhlIGxhc3Qgc3VjY2Vzc2Z1bCBwcm9jZXNzIGluCiAgICAgICAgICA7OyB0aGUg cGlwZWxpbmUuCi0gICAgICAgICAoc2V0cSB0YWlscHJvYyAob3IgcmVzdWx0IHRhaWxwcm9j KSkKKyAgICAgICAgIChzZXQgdGFpbHByb2MgKG9yIHJlc3VsdCAoc3ltYm9sLXZhbHVlIHRh aWxwcm9jKSkpCiAgICAgICAgICAsKGlmIChjZHIgcGlwZWxpbmUpCiAgICAgICAgICAgICAg IGAoZXNoZWxsLWRvLXBpcGVsaW5lcy1zeW5jaHJvbm91c2x5IChxdW90ZSAsKGNkciBwaXBl bGluZSkpKSkKICAgICAgICAgIHJlc3VsdCkpKSkKQEAgLTg3MCw3ICs4NzAsMTEgQEAgJ2Vz aGVsbC1wcm9jZXNzLWlkZW50aXR5CiAKIChkZWZtYWNybyBlc2hlbGwtZXhlY3V0ZS1waXBl bGluZSAocGlwZWxpbmUpCiAgICJFeGVjdXRlIHRoZSBjb21tYW5kcyBpbiBQSVBFTElORSwg Y29ubmVjdGluZyBlYWNoIHRvIG9uZSBhbm90aGVyLiIKLSAgYChsZXQgKChlc2hlbGwtaW4t cGlwZWxpbmUtcCB0KSBoZWFkcHJvYyB0YWlscHJvYykKKyAgYChsZXQgKChlc2hlbGwtaW4t cGlwZWxpbmUtcCB0KQorICAgICAgICAgKGhlYWRwcm9jIChtYWtlLXN5bWJvbCAiaGVhZHBy b2MiKSkKKyAgICAgICAgICh0YWlscHJvYyAobWFrZS1zeW1ib2wgInRhaWxwcm9jIikpKQor ICAgICAoc2V0IGhlYWRwcm9jIG5pbCkKKyAgICAgKHNldCB0YWlscHJvYyBuaWwpCiAgICAg IChwcm9nbgogICAgICAgICwoaWYgKGZib3VuZHAgJ21ha2UtcHJvY2VzcykKIAkgICAgYChl c2hlbGwtZG8tcGlwZWxpbmVzICxwaXBlbGluZSkKQEAgLTg4MCw3ICs4ODQsOCBAQCBlc2hl bGwtZXhlY3V0ZS1waXBlbGluZQogCQkJCShjYXIgKGFyZWYgZXNoZWxsLWN1cnJlbnQtaGFu ZGxlcwogCQkJCQkgICAsZXNoZWxsLWVycm9yLWhhbmRsZSkpIG5pbCkpKQogCSAgICAgKGVz aGVsbC1kby1waXBlbGluZXMtc3luY2hyb25vdXNseSAscGlwZWxpbmUpKSkKLSAgICAgICAo ZXNoZWxsLXByb2Nlc3MtaWRlbnRpdHkgKGNvbnMgaGVhZHByb2MgdGFpbHByb2MpKSkpKQor ICAgICAgIChlc2hlbGwtcHJvY2Vzcy1pZGVudGl0eSAoY29ucyAoc3ltYm9sLXZhbHVlIGhl YWRwcm9jKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3ltYm9s LXZhbHVlIHRhaWxwcm9jKSkpKSkpCiAKIChkZWZtYWNybyBlc2hlbGwtYXMtc3ViY29tbWFu ZCAoY29tbWFuZCkKICAgIkV4ZWN1dGUgQ09NTUFORCB1c2luZyBhIHRlbXAgYnVmZmVyLgpk aWZmIC0tZ2l0IGEvdGVzdC9saXNwL2VzaGVsbC9lc2hlbGwtdGVzdHMuZWwgYi90ZXN0L2xp c3AvZXNoZWxsL2VzaGVsbC10ZXN0cy5lbAppbmRleCA3Y2RlYjAxN2U0Li5jMGFmZmVkODBh IDEwMDY0NAotLS0gYS90ZXN0L2xpc3AvZXNoZWxsL2VzaGVsbC10ZXN0cy5lbAorKysgYi90 ZXN0L2xpc3AvZXNoZWxsL2VzaGVsbC10ZXN0cy5lbApAQCAtMTE0LDYgKzExNCwyMiBAQCBl c2hlbGwtdGVzdC9waXBlLWhlYWRwcm9jLXN0ZGluCiAgICAoZXNoZWxsLXdhaXQtZm9yLXN1 YnByb2Nlc3MpCiAgICAoZXNoZWxsLW1hdGNoLXJlc3VsdCAiT0xMRUhcbiIpKSkKIAorKGVy dC1kZWZ0ZXN0IGVzaGVsbC10ZXN0L3BpcGUtc3ViY29tbWFuZCAoKQorICAiQ2hlY2sgdGhh dCBwaXBpbmcgd2l0aCBhbiBhc3luY2hyb25vdXMgc3ViY29tbWFuZCB3b3JrcyIKKyAgKHNr aXAtdW5sZXNzIChhbmQgKGV4ZWN1dGFibGUtZmluZCAiZWNobyIpCisgICAgICAgICAgICAg ICAgICAgIChleGVjdXRhYmxlLWZpbmQgImNhdCIpKSkKKyAgKHdpdGgtdGVtcC1lc2hlbGwK KyAgIChlc2hlbGwtY29tbWFuZC1yZXN1bHQtcCAiZWNobyAkeyplY2hvIGhpfSB8ICpjYXQi CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImhpIikpKQorCisoZXJ0LWRlZnRlc3Qg ZXNoZWxsLXRlc3QvcGlwZS1zdWJjb21tYW5kLXdpdGgtcGlwZSAoKQorICAiQ2hlY2sgdGhh dCBwaXBpbmcgd2l0aCBhbiBhc3luY2hyb25vdXMgc3ViY29tbWFuZCB3aXRoIGl0cyBvd24g cGlwZSB3b3JrcyIKKyAgKHNraXAtdW5sZXNzIChhbmQgKGV4ZWN1dGFibGUtZmluZCAiZWNo byIpCisgICAgICAgICAgICAgICAgICAgIChleGVjdXRhYmxlLWZpbmQgImNhdCIpKSkKKyAg KHdpdGgtdGVtcC1lc2hlbGwKKyAgIChlc2hlbGwtY29tbWFuZC1yZXN1bHQtcCAiZWNobyAk eyplY2hvIGhpIHwgKmNhdH0gfCAqY2F0IgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICJoaSIpKSkKKwogKGVydC1kZWZ0ZXN0IGVzaGVsbC10ZXN0L3JlZGlyZWN0LWJ1ZmZlciAo KQogICAiQ2hlY2sgdGhhdCBwaXBpbmcgdG8gYSBidWZmZXIgd29ya3MiCiAgICh3aXRoLXRl bXAtYnVmZmVyCi0tIAoyLjI1LjEKCg== --------------F080509A770D2816A1DFDE76--