diff options
Diffstat (limited to 'src/tty.rs')
-rw-r--r-- | src/tty.rs | 20 |
1 files changed, 20 insertions, 0 deletions
@@ -23,6 +23,9 @@ use std::ptr; use libc::{self, winsize, c_int, pid_t, WNOHANG, WIFEXITED, WEXITSTATUS, SIGCHLD}; +use term::SizeInfo; +use display::OnResize; + /// Process ID of child process /// /// Necessary to put this in static storage for `sigchld` to have access @@ -326,6 +329,23 @@ pub trait ToWinsize { fn to_winsize(&self) -> winsize; } +impl<'a> ToWinsize for &'a SizeInfo { + fn to_winsize(&self) -> winsize { + winsize { + ws_row: self.lines().0 as libc::c_ushort, + ws_col: self.cols().0 as libc::c_ushort, + ws_xpixel: self.width as libc::c_ushort, + ws_ypixel: self.height as libc::c_ushort, + } + } +} + +impl OnResize for Pty { + fn on_resize(&mut self, size: &SizeInfo) { + self.resize(size); + } +} + unsafe fn set_nonblocking(fd: c_int) { use libc::{fcntl, F_SETFL, F_GETFL, O_NONBLOCK}; |