/termios-rs

Safe bindings for the termios library.

Primary LanguageRustMIT LicenseMIT

Termios Rust Bindings

The termios crate provides safe bindings for the Rust programming language to the terminal I/O interface implemented by Unix operating systems. The safe bindings are a small wrapper around the raw C functions, which converts integer return values to std::io::Result to indicate success or failure.

Dependencies

In order to use the termios crate, you must have a native libc library that implements the termios API. This should be available on any Unix operating system. It has been confirmed to work on the following platforms:

  • Linux (x86_64, armv6l)
  • OS X (x86_64)
  • FreeBSD (amd64)

Usage

Add termios as a dependency in Cargo.toml:

[dependencies]
termios = "0.2"

Import the termios crate and any symbols needed from termios. You may also need std::os::unix::io::RawFd for file descriptors and std::io::Result to propagate errors.

extern crate termios;

use std::io;
use std::os::unix::io::RawFd;

use termios::*;

fn setup_fd(fd: RawFd) -> io::Result<()> {
  let mut termios = try!(Termios::from_fd(fd));

  termios.c_iflag = IGNPAR | IGNBRK;
  termios.c_oflag = 0;
  termios.c_cflag = CS8 | CREAD | CLOCAL;
  termios.c_lflag = 0;

  try!(cfsetspeed(&mut termios, B9600));
  try!(tcsetattr(fd, TCSANOW, &termios));
  try!(tcflush(fd, TCIOFLUSH));

  Ok(())
}

Contributors

License

Copyright © 2015 David Cuddeback

Distributed under the MIT License.