plan9port

fork of plan9port with libvec, libstr and libsdb
Log | Files | Refs | README | LICENSE

commit 65a34c7fac1524cb3f40189f1bff8c3226d80710
parent e465991ea6c7d2b9f52cabf398b9b087a0b25427
Author: Russ Cox <rsc@swtch.com>
Date:   Tue,  6 Jan 2009 14:42:41 -0800

win: better SIGPIPE handling

Diffstat:
Msrc/cmd/9term/win.c | 19+++++++++----------
1 file changed, 9 insertions(+), 10 deletions(-)

diff --git a/src/cmd/9term/win.c b/src/cmd/9term/win.c @@ -93,15 +93,6 @@ usage(void) threadexitsall("usage"); } -int -nopipes(void *v, char *msg) -{ - USED(v); - if(strcmp(msg, "sys: write on closed pipe") == 0) - return 1; - return 0; -} - void waitthread(void *v) { @@ -157,7 +148,15 @@ threadmain(int argc, char **argv) } } - notedisable("sys: write on closed pipe"); + /* + * notedisable("sys: write on closed pipe"); + * not okay to disable the note, because that + * gets inherited by the subshell, so that something + * as simple as "yes | sed 10q" never exits. + * call notifyoff instead. (is notedisable ever safe?) + */ + notifyoff("sys: write on closed pipe"); + noteenable("sys: child"); notify(hangupnote);