diff cli-chansession.c @ 93:5dda5a4d475c

Don't leave the stdin FD non-blocking on exit - busybox doesn't like it.
author Matt Johnston <matt@ucc.asn.au>
date Wed, 18 Aug 2004 12:42:21 +0000
parents e3adf4cf5465
children 0247fbd9379d
line wrap: on
line diff
--- a/cli-chansession.c	Wed Aug 18 09:14:43 2004 +0000
+++ b/cli-chansession.c	Wed Aug 18 12:42:21 2004 +0000
@@ -63,6 +63,10 @@
 
 	cli_tty_cleanup(); /* Restore tty modes etc */
 
+	/* Set stdin back to non-blocking - busybox ash dies nastily
+	 * if we don't revert the flags */
+	fcntl(cli_ses.stdincopy, F_SETFL, cli_ses.stdinflags);
+
 }
 
 static void start_channel_request(struct Channel *channel, 
@@ -313,6 +317,11 @@
 
 static int cli_initchansess(struct Channel *channel) {
 
+	/* We store stdin's flags, so we can set them back on exit (otherwise
+	 * busybox's ash isn't happy */
+	cli_ses.stdincopy = dup(STDIN_FILENO);
+	cli_ses.stdinflags = fcntl(STDIN_FILENO, F_GETFL, 0);
+
 	channel->infd = STDOUT_FILENO;
 	//channel->outfd = STDIN_FILENO;
 	//channel->errfd = STDERR_FILENO;