From 60e31a45b0c015d42e9dc8ca2c991930c3f7fd66 Mon Sep 17 00:00:00 2001 From: "Barton E. Schaefer" Date: Mon, 29 Sep 2014 08:59:31 -0700 Subject: 33268: interactive shells treat SIGPIPE like SIGHUP if and only if SHTTY is disconnected --- Src/signals.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'Src/signals.c') diff --git a/Src/signals.c b/Src/signals.c index cb2b58161..84a2609e5 100644 --- a/Src/signals.c +++ b/Src/signals.c @@ -594,6 +594,17 @@ zhandler(int sig) wait_for_processes(); break; + case SIGPIPE: + if (!handletrap(SIGPIPE)) { + if (!interact) + _exit(SIGPIPE); + else if (!isatty(SHTTY)) { + stopmsg = 1; + zexit(SIGPIPE, 1); + } + } + break; + case SIGHUP: if (!handletrap(SIGHUP)) { stopmsg = 1; @@ -897,6 +908,8 @@ removetrap(int sig) noholdintr(); } else if (sig == SIGHUP) install_handler(sig); + else if (sig == SIGPIPE && interact && !forklevel) + install_handler(sig); else if (sig && sig <= SIGCOUNT && #ifdef SIGWINCH sig != SIGWINCH && -- cgit 1.4.1