diff --git a/Cargo.toml b/Cargo.toml index 44e9ccc..0781636 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -11,7 +11,7 @@ keywords = ["linux", "input"] [dependencies] libc = "0.2" -nix = "0.10" +nix = { version = "0.23", default-features = false } uinput-sys = "0.1" custom_derive = "0.1" diff --git a/src/device/builder.rs b/src/device/builder.rs index 251f01c..ba6ccde 100644 --- a/src/device/builder.rs +++ b/src/device/builder.rs @@ -2,7 +2,7 @@ use std::path::Path; use std::{mem, slice}; use std::ffi::CString; use libc::c_int; -use nix::{self, fcntl, unistd}; +use nix::{fcntl, unistd}; use nix::errno::Errno; use nix::sys::stat; use ffi::*; @@ -23,7 +23,7 @@ impl Builder { /// Create a builder from the specified path. pub fn open>(path: P) -> Res { Ok(Builder { - fd: try!(fcntl::open(path.as_ref(), fcntl::OFlag::O_WRONLY | fcntl::OFlag::O_NONBLOCK, stat::Mode::empty())), + fd: fcntl::open(path.as_ref(), fcntl::OFlag::O_WRONLY | fcntl::OFlag::O_NONBLOCK, stat::Mode::empty())?, def: unsafe { mem::zeroed() }, abs: None, }) @@ -32,16 +32,16 @@ impl Builder { #[cfg(feature = "udev")] /// Create a builder from the default path taken from udev. pub fn default() -> Res { - let context = try!(udev::Context::new()); - let mut enumerator = try!(udev::Enumerator::new(&context)); + let context = udev::Context::new()?; + let mut enumerator = udev::Enumerator::new(&context)?; - try!(enumerator.match_subsystem("misc")); - try!(enumerator.match_sysname("uinput")); + enumerator.match_subsystem("misc")?; + enumerator.match_sysname("uinput")?; - let device = try!(try!(enumerator.scan_devices()) - .next().ok_or(Error::NotFound)); + let device = enumerator.scan_devices()? + .next().ok_or(Error::NotFound)?; - Builder::open(try!(device.devnode().ok_or(Error::NotFound))) + Builder::open(device.devnode().ok_or(Error::NotFound)?) } #[cfg(not(feature = "udev"))] @@ -52,11 +52,11 @@ impl Builder { /// Set the name. pub fn name>(mut self, value: T) -> Res { - let string = try!(CString::new(value.as_ref())); + let string = CString::new(value.as_ref())?; let bytes = string.as_bytes_with_nul(); if bytes.len() > UINPUT_MAX_NAME_SIZE as usize { - try!(Err(nix::Error::from_errno(Errno::EINVAL))); + Err(nix::Error::EINVAL)?; } (&mut self.def.name)[..bytes.len()] @@ -95,7 +95,7 @@ impl Builder { match value.into() { Event::All => { - try!(self.event(Event::Keyboard(event::Keyboard::All))) + self.event(Event::Keyboard(event::Keyboard::All))? .event(Event::Controller(event::Controller::All)) } @@ -105,43 +105,43 @@ impl Builder { let mut builder = self; for item in event::keyboard::Key::iter_variants() { - builder = try!(builder.event(item)); + builder = builder.event(item)?; } for item in event::keyboard::KeyPad::iter_variants() { - builder = try!(builder.event(item)); + builder = builder.event(item)?; } for item in event::keyboard::Misc::iter_variants() { - builder = try!(builder.event(item)); + builder = builder.event(item)?; } for item in event::keyboard::InputAssist::iter_variants() { - builder = try!(builder.event(item)); + builder = builder.event(item)?; } for item in event::keyboard::Function::iter_variants() { - builder = try!(builder.event(item)); + builder = builder.event(item)?; } for item in event::keyboard::Braille::iter_variants() { - builder = try!(builder.event(item)); + builder = builder.event(item)?; } for item in event::keyboard::Numeric::iter_variants() { - builder = try!(builder.event(item)); + builder = builder.event(item)?; } for item in event::keyboard::TouchPad::iter_variants() { - builder = try!(builder.event(item)); + builder = builder.event(item)?; } for item in event::keyboard::Camera::iter_variants() { - builder = try!(builder.event(item)); + builder = builder.event(item)?; } for item in event::keyboard::Attendant::iter_variants() { - builder = try!(builder.event(item)); + builder = builder.event(item)?; } Ok(builder) @@ -149,8 +149,8 @@ impl Builder { value => { unsafe { - try!(Errno::result(ui_set_evbit(self.fd, value.kind()))); - try!(Errno::result(ui_set_keybit(self.fd, value.code()))); + Errno::result(ui_set_evbit(self.fd, value.kind()))?; + Errno::result(ui_set_keybit(self.fd, value.code()))?; } Ok(self) @@ -164,35 +164,35 @@ impl Builder { let mut builder = self; for item in event::controller::Misc::iter_variants() { - builder = try!(builder.event(item)); + builder = builder.event(item)?; } for item in event::controller::Mouse::iter_variants() { - builder = try!(builder.event(item)); + builder = builder.event(item)?; } for item in event::controller::JoyStick::iter_variants() { - builder = try!(builder.event(item)); + builder = builder.event(item)?; } for item in event::controller::GamePad::iter_variants() { - builder = try!(builder.event(item)); + builder = builder.event(item)?; } for item in event::controller::Digi::iter_variants() { - builder = try!(builder.event(item)); + builder = builder.event(item)?; } for item in event::controller::Wheel::iter_variants() { - builder = try!(builder.event(item)); + builder = builder.event(item)?; } for item in event::controller::DPad::iter_variants() { - builder = try!(builder.event(item)); + builder = builder.event(item)?; } for item in event::controller::TriggerHappy::iter_variants() { - builder = try!(builder.event(item)); + builder = builder.event(item)?; } Ok(builder) @@ -200,8 +200,8 @@ impl Builder { value => { unsafe { - try!(Errno::result(ui_set_evbit(self.fd, value.kind()))); - try!(Errno::result(ui_set_keybit(self.fd, value.code()))); + Errno::result(ui_set_evbit(self.fd, value.kind()))?; + Errno::result(ui_set_keybit(self.fd, value.code()))?; } Ok(self) @@ -211,8 +211,8 @@ impl Builder { Event::Relative(value) => { unsafe { - try!(Errno::result(ui_set_evbit(self.fd, value.kind()))); - try!(Errno::result(ui_set_relbit(self.fd, value.code()))); + Errno::result(ui_set_evbit(self.fd, value.kind()))?; + Errno::result(ui_set_relbit(self.fd, value.code()))?; } Ok(self) @@ -220,8 +220,8 @@ impl Builder { Event::Absolute(value) => { unsafe { - try!(Errno::result(ui_set_evbit(self.fd, value.kind()))); - try!(Errno::result(ui_set_absbit(self.fd, value.code()))); + Errno::result(ui_set_evbit(self.fd, value.kind()))?; + Errno::result(ui_set_absbit(self.fd, value.code()))?; } self.abs = Some(value.code()); @@ -261,8 +261,8 @@ impl Builder { let ptr = &self.def as *const _ as *const u8; let size = mem::size_of_val(&self.def); - try!(unistd::write(self.fd, slice::from_raw_parts(ptr, size))); - try!(Errno::result(ui_dev_create(self.fd))); + unistd::write(self.fd, slice::from_raw_parts(ptr, size))?; + Errno::result(ui_dev_create(self.fd))?; } Ok(Device::new(self.fd)) diff --git a/src/device/device.rs b/src/device/device.rs index a6ce048..d5dd51e 100644 --- a/src/device/device.rs +++ b/src/device/device.rs @@ -34,7 +34,7 @@ impl Device { let ptr = &event as *const _ as *const u8; let size = mem::size_of_val(&event); - try!(unistd::write(self.fd, slice::from_raw_parts(ptr, size))); + unistd::write(self.fd, slice::from_raw_parts(ptr, size))?; } Ok(()) @@ -63,8 +63,8 @@ impl Device { /// Send a press and release event. pub fn click(&mut self, event: &T) -> Res<()> { - try!(self.press(event)); - try!(self.release(event)); + self.press(event)?; + self.release(event)?; Ok(()) } diff --git a/src/error.rs b/src/error.rs index f1d4be4..f6654f3 100644 --- a/src/error.rs +++ b/src/error.rs @@ -44,25 +44,18 @@ impl From for Error { impl fmt::Display for Error { fn fmt(&self, f: &mut fmt::Formatter) -> Result<(), fmt::Error> { - f.write_str(error::Error::description(self)) - } -} - -impl error::Error for Error { - fn description(&self) -> &str { match self { - &Error::Nix(ref err) => - err.description(), + &Error::Nix(ref err) => write!(f, "{}", err), - &Error::Nul(ref err) => - err.description(), + &Error::Nul(ref err) => write!(f, "{}", err), #[cfg(feature = "udev")] - &Error::Udev(ref err) => - err.description(), + &Error::Udev(ref err) => write!(f, "{}", err), - &Error::NotFound => - "Device not found.", + &Error::NotFound => write!(f, "Device not found.") } } } + +impl error::Error for Error { +}