Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

[PATCH] [RFC] Reset pipestatus in zleread



From: Daniel Hahler <git@xxxxxxxxxx>

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



Messages sorted by: Reverse Date, Date, Thread, Author