From 862b89b78b70396c237e805445563eb22b74dc40 Mon Sep 17 00:00:00 2001 From: Tiago Cunha Date: Fri, 26 Feb 2010 13:34:15 +0000 Subject: [PATCH] Sync OpenBSD patchset 654: Don't set the terminal to nonblocking on detach until we have finished with it entirely. --- tty.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/tty.c b/tty.c index 229c3e44..c12c02c8 100644 --- a/tty.c +++ b/tty.c @@ -1,4 +1,4 @@ -/* $Id: tty.c,v 1.187 2010-02-02 23:56:25 tcunha Exp $ */ +/* $Id: tty.c,v 1.188 2010-02-26 13:34:15 tcunha Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott @@ -213,10 +213,6 @@ tty_stop_tty(struct tty *tty) * because the fd is invalid. Things like ssh -t can easily leave us * with a dead tty. */ - if ((mode = fcntl(tty->fd, F_GETFL)) == -1) - return; - if (fcntl(tty->fd, F_SETFL, mode & ~O_NONBLOCK) == -1) - return; if (ioctl(tty->fd, TIOCGWINSZ, &ws) == -1) return; if (tcsetattr(tty->fd, TCSANOW, &tty->tio) == -1) @@ -233,6 +229,9 @@ tty_stop_tty(struct tty *tty) tty_raw(tty, "\033[?1000l"); tty_raw(tty, tty_term_string(tty->term, TTYC_RMCUP)); + + if ((mode = fcntl(tty->fd, F_GETFL)) != -1) + fcntl(tty->fd, F_SETFL, mode & ~O_NONBLOCK); } void