zsh-workers
 help / color / mirror / code / Atom feed
* [PATCH] [RFC] Reset pipestatus in zleread
@ 2018-01-11 15:22 Daniel Hahler
  2018-01-11 17:16 ` Eric Cook
  2018-01-12 18:44 ` Bart Schaefer
  0 siblings, 2 replies; 3+ messages in thread
From: Daniel Hahler @ 2018-01-11 15:22 UTC (permalink / raw)
  To: zsh-workers

From: Daniel Hahler <git@thequod.de>

What do you think about this?

I am looking at $pipestatus in my prompt precmd function, so that with
"false | true" I would still get an indicator that (something in) the
command failed (since $? (status) is 0 in this case).

However, with e.g. "foo=bar" (executed via execsimple) $pipestatus gets
not reset.

This patch resets it in zleread always.

---
 Src/Zle/zle_main.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/Src/Zle/zle_main.c b/Src/Zle/zle_main.c
index be2b062b0..522cf7a1a 100644
--- a/Src/Zle/zle_main.c
+++ b/Src/Zle/zle_main.c
@@ -1196,6 +1196,12 @@ zleread(char **lp, char **rp, int flags, int context, char *init, char *finish)
     int old_errno = errno;
     int tmout = getiparam("TMOUT");
 
+    /* Reset pipestatus.
+     * This is useful to have status and pipestatus in line in precmd
+     * functions.
+     */
+    numpipestats = 0;
+
 #if defined(HAVE_POLL) || defined(HAVE_SELECT)
     /* may not be set, but that's OK since getiparam() returns 0 == off */
     baud = getiparam("BAUD");
-- 
2.15.1


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] [RFC] Reset pipestatus in zleread
  2018-01-11 15:22 [PATCH] [RFC] Reset pipestatus in zleread Daniel Hahler
@ 2018-01-11 17:16 ` Eric Cook
  2018-01-12 18:44 ` Bart Schaefer
  1 sibling, 0 replies; 3+ messages in thread
From: Eric Cook @ 2018-01-11 17:16 UTC (permalink / raw)
  To: zsh-workers

On 01/11/2018 10:22 AM, Daniel Hahler wrote:
> From: Daniel Hahler <git@thequod.de>
> 
> What do you think about this?
> 
> I am looking at $pipestatus in my prompt precmd function, so that with
> "false | true" I would still get an indicator that (something in) the
> command failed (since $? (status) is 0 in this case).
> 
> However, with e.g. "foo=bar" (executed via execsimple) $pipestatus gets
> not reset.
> 
> This patch resets it in zleread always.
> 

Um.

% false | true
% print $pipestatus
1 0
% false | true
% foo=bar
% print $pipestatus
1 0
% ~/.local/bin/zsh
% false | true
% print $pipestatus

% false | true
% foo=bar
% print $pipestatus

%


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] [RFC] Reset pipestatus in zleread
  2018-01-11 15:22 [PATCH] [RFC] Reset pipestatus in zleread Daniel Hahler
  2018-01-11 17:16 ` Eric Cook
@ 2018-01-12 18:44 ` Bart Schaefer
  1 sibling, 0 replies; 3+ messages in thread
From: Bart Schaefer @ 2018-01-12 18:44 UTC (permalink / raw)
  To: zsh-workers

On Thu, Jan 11, 2018 at 7:22 AM, Daniel Hahler
<genml+zsh-workers@thequod.de> wrote:
>
> I am looking at $pipestatus in my prompt precmd function, so that with
> "false | true" I would still get an indicator that (something in) the
> command failed (since $? (status) is 0 in this case).
>
> This patch resets it in zleread always.

In addition to what Eric noted, that's rather the wrong place to do
this.  Even if it solves the issue for interactive use (which it might
not), it doesn't make $pipestatus correct following assignments in
scripts.  This needs a deeper look (deeper than I have time for right
now).


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2018-01-12 18:44 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-01-11 15:22 [PATCH] [RFC] Reset pipestatus in zleread Daniel Hahler
2018-01-11 17:16 ` Eric Cook
2018-01-12 18:44 ` Bart Schaefer

Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).