Skip to content
Snippets Groups Projects
Unverified Commit f1ad2f58 authored by Yuki Okushi's avatar Yuki Okushi Committed by GitHub
Browse files

Merge pull request #1717 from jclulow/illumos-cfmakeraw

fix cfmakeraw() for illumos and Solaris
parents 1d9e5fbc 5b6a3335
No related branches found
No related tags found
Loading
......@@ -4,8 +4,7 @@
use unix::solarish::*;
pub unsafe fn cfmakeraw(termios: *mut ::termios) {
let mut t = *termios as ::termios;
t.c_iflag &= !(IMAXBEL
(*termios).c_iflag &= !(IMAXBEL
| IGNBRK
| BRKINT
| PARMRK
......@@ -14,10 +13,26 @@ pub unsafe fn cfmakeraw(termios: *mut ::termios) {
| IGNCR
| ICRNL
| IXON);
t.c_oflag &= !OPOST;
t.c_lflag &= !(ECHO | ECHONL | ICANON | ISIG | IEXTEN);
t.c_cflag &= !(CSIZE | PARENB);
t.c_cflag |= CS8;
(*termios).c_oflag &= !OPOST;
(*termios).c_lflag &= !(ECHO | ECHONL | ICANON | ISIG | IEXTEN);
(*termios).c_cflag &= !(CSIZE | PARENB);
(*termios).c_cflag |= CS8;
// By default, most software expects a pending read to block until at
// least one byte becomes available. As per termio(7I), this requires
// setting the MIN and TIME parameters appropriately.
//
// As a somewhat unfortunate artefact of history, the MIN and TIME slots
// in the control character array overlap with the EOF and EOL slots used
// for canonical mode processing. Because the EOF character needs to be
// the ASCII EOT value (aka Control-D), it has the byte value 4. When
// switching to raw mode, this is interpreted as a MIN value of 4; i.e.,
// reads will block until at least four bytes have been input.
//
// Other platforms with a distinct MIN slot like Linux and FreeBSD appear
// to default to a MIN value of 1, so we'll force that value here:
(*termios).c_cc[VMIN] = 1;
(*termios).c_cc[VTIME] = 0;
}
pub unsafe fn cfsetspeed(
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment