From 58bad19411cce9ee0a0edf3ef93acb475b7e7a79 Mon Sep 17 00:00:00 2001 From: Peter Stephenson Date: Mon, 22 Sep 2003 13:46:03 +0000 Subject: 19105: Set shout to stderr if interative with no tty --- Src/init.c | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) (limited to 'Src/init.c') diff --git a/Src/init.c b/Src/init.c index 5c395afe2..51cbe0d3a 100644 --- a/Src/init.c +++ b/Src/init.c @@ -379,7 +379,13 @@ init_io(void) #endif if (shout) { - fclose(shout); + /* + * Check if shout was set to stderr, if so don't close it. + * We do this if we are interactive but don't have a + * terminal. + */ + if (shout != stderr) + fclose(shout); shout = 0; } if (SHTTY != -1) { @@ -448,9 +454,9 @@ init_io(void) /* We will only use zle if shell is interactive, * * SHTTY != -1, and shout != 0 */ - if (interact && SHTTY != -1) { + if (interact) { init_shout(); - if(!shout) + if(!SHTTY || !shout) opts[USEZLE] = 0; } else opts[USEZLE] = 0; @@ -475,6 +481,14 @@ mod_export void init_shout(void) { static char shoutbuf[BUFSIZ]; + + if (SHTTY == -1) + { + /* Since we're interative, it's nice to have somewhere to write. */ + shout = stderr; + return; + } + #if defined(JOB_CONTROL) && defined(TIOCSETD) && defined(NTTYDISC) int ldisc = NTTYDISC; -- cgit 1.4.1