Skip to content

Commit a108ac1

Browse files
committed
Add cfmakeraw and cfsetspeed
This includes implementations for Android.
1 parent b9a0a6a commit a108ac1

File tree

2 files changed

+15
-0
lines changed

2 files changed

+15
-0
lines changed

src/unix/mod.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -835,8 +835,10 @@ extern {
835835
pub fn tcdrain(fd: ::c_int) -> ::c_int;
836836
pub fn cfgetispeed(termios: *const ::termios) -> ::speed_t;
837837
pub fn cfgetospeed(termios: *const ::termios) -> ::speed_t;
838+
pub fn cfmakeraw(termios: *mut ::termios);
838839
pub fn cfsetispeed(termios: *mut ::termios, speed: ::speed_t) -> ::c_int;
839840
pub fn cfsetospeed(termios: *mut ::termios, speed: ::speed_t) -> ::c_int;
841+
pub fn cfsetspeed(termios: *mut ::termios, speed: ::speed_t) -> ::c_int;
840842
pub fn tcgetattr(fd: ::c_int, termios: *mut ::termios) -> ::c_int;
841843
pub fn tcsetattr(fd: ::c_int,
842844
optional_actions: ::c_int,

src/unix/notbsd/android/mod.rs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -752,6 +752,14 @@ f! {
752752
pub fn cfgetospeed(termios: *const ::termios) -> ::speed_t {
753753
(*termios).c_cflag & ::CBAUD
754754
}
755+
pub fn cfmakeraw(termios: *const ::termios) -> () {
756+
(*termios).c_iflag &= ~(::IGNBRK | ::BRKINT | ::PARMRK | ::ISTRIP | ::INLCR | ::IGNCR |
757+
::ICRNL | ::IXON);
758+
(*termios).c_oflag &= ~::OPOST;
759+
(*termios).c_lflag &= ~(::ECHO | ::ECHONL | ::ICANON | ::ISIG | ::IEXTEN);
760+
(*termios).c_cflag &= ~(::CSIZE | ::PARENB);
761+
(*termios).c_cflag |= ::CS8;
762+
}
755763
pub fn cfsetispeed(termios: *mut ::termios, speed: ::speed_t) -> ::c_int {
756764
let cbaud = ::CBAUD;
757765
(*termios).c_cflag = ((*termios).c_cflag & !cbaud) | (speed & cbaud);
@@ -762,6 +770,11 @@ f! {
762770
(*termios).c_cflag = ((*termios).c_cflag & !cbaud) | (speed & cbaud);
763771
return 0
764772
}
773+
pub fn cfsetspeed(termios: *mut ::termios, speed: ::speed_t) -> ::c_int {
774+
let cbaud = ::CBAUD;
775+
(*termios).c_cflag = ((*termios).c_cflag & !cbaud) | (speed & cbaud);
776+
return 0
777+
}
765778
pub fn tcgetattr(fd: ::c_int, termios: *mut ::termios) -> ::c_int {
766779
ioctl(fd, ::TCGETS, termios)
767780
}

0 commit comments

Comments
 (0)