Skip to content

Commit 045ddfc

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

File tree

2 files changed

+16
-0
lines changed

2 files changed

+16
-0
lines changed

src/unix/mod.rs

+2
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

+14
Original file line numberDiff line numberDiff line change
@@ -752,6 +752,15 @@ 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+
()
763+
}
755764
pub fn cfsetispeed(termios: *mut ::termios, speed: ::speed_t) -> ::c_int {
756765
let cbaud = ::CBAUD;
757766
(*termios).c_cflag = ((*termios).c_cflag & !cbaud) | (speed & cbaud);
@@ -762,6 +771,11 @@ f! {
762771
(*termios).c_cflag = ((*termios).c_cflag & !cbaud) | (speed & cbaud);
763772
return 0
764773
}
774+
pub fn cfsetspeed(termios: *mut ::termios, speed: ::speed_t) -> ::c_int {
775+
let cbaud = ::CBAUD;
776+
(*termios).c_cflag = ((*termios).c_cflag & !cbaud) | (speed & cbaud);
777+
return 0
778+
}
765779
pub fn tcgetattr(fd: ::c_int, termios: *mut ::termios) -> ::c_int {
766780
ioctl(fd, ::TCGETS, termios)
767781
}

0 commit comments

Comments
 (0)