diff options
Diffstat (limited to 'winsup/cygwin/fhandler_tty.cc')
-rw-r--r-- | winsup/cygwin/fhandler_tty.cc | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/winsup/cygwin/fhandler_tty.cc b/winsup/cygwin/fhandler_tty.cc index fd0789b60..1f552ceaf 100644 --- a/winsup/cygwin/fhandler_tty.cc +++ b/winsup/cygwin/fhandler_tty.cc @@ -40,6 +40,16 @@ fhandler_tty_master::fhandler_tty_master (int unit) { } +void +fhandler_tty_master::set_winsize (bool sendSIGWINCH) +{ + winsize w; + console->ioctl (TIOCGWINSZ, &w); + get_ttyp ()->winsize = w; + if (sendSIGWINCH) + tc->kill_pgrp (SIGWINCH); +} + int fhandler_tty_master::init (int ntty) { @@ -54,14 +64,13 @@ fhandler_tty_master::init (int ntty) termios ti; memset (&ti, 0, sizeof (ti)); console->tcsetattr (0, &ti); - winsize w; - console->ioctl (TIOCGWINSZ, &w); - this->ioctl (TIOCSWINSZ, &w); ttynum = ntty; cygwin_shared->tty[ttynum]->common_init (this); + set_winsize (false); + inuse = get_ttyp ()->create_inuse (TTY_MASTER_ALIVE); cygthread *h; @@ -1134,7 +1143,7 @@ fhandler_pty_master::ioctl (unsigned int cmd, void *arg) pktmode = * (int *) arg; break; case TIOCGWINSZ: - * (struct winsize *) arg = get_ttyp ()->winsize; + *(struct winsize *) arg = get_ttyp ()->winsize; break; case TIOCSWINSZ: if (get_ttyp ()->winsize.ws_row != ((struct winsize *) arg)->ws_row |