all: simplify handling of Errno values
This commit is contained in:
parent
9c605df692
commit
34914eccb0
58 changed files with 443 additions and 464 deletions
|
|
@ -10,8 +10,13 @@ use {
|
|||
state::State,
|
||||
udev::{Udev, UdevDevice, UdevError, UdevMonitor},
|
||||
utils::{
|
||||
bitflags::BitflagsExt, clonecell::CloneCell, copyhashmap::CopyHashMap,
|
||||
errorfmt::ErrorFmt, hash_map_ext::HashMapExt, on_change::OnChange, oserror::OsError,
|
||||
bitflags::BitflagsExt,
|
||||
clonecell::CloneCell,
|
||||
copyhashmap::CopyHashMap,
|
||||
errorfmt::ErrorFmt,
|
||||
hash_map_ext::HashMapExt,
|
||||
on_change::OnChange,
|
||||
oserror::{OsError, OsErrorExt2},
|
||||
},
|
||||
video::drm::{Drm, DrmError, DrmVersion, NodeType, get_drm_nodes_from_dev},
|
||||
},
|
||||
|
|
@ -90,8 +95,7 @@ pub async fn create(state: &Rc<State>) -> Result<Rc<HeadlessBackend>, HeadlessBa
|
|||
monitor.enable_receiving().map_err(EnableUdevReceiving)?;
|
||||
let monitor_fd = uapi::fcntl_dupfd_cloexec(monitor.fd(), 0)
|
||||
.map(Rc::new)
|
||||
.map_err(Into::into)
|
||||
.map_err(DupUdevMonitorFd)?;
|
||||
.map_os_err(DupUdevMonitorFd)?;
|
||||
Ok(Rc::new(HeadlessBackend {
|
||||
state: state.clone(),
|
||||
udev,
|
||||
|
|
@ -200,9 +204,7 @@ impl HeadlessBackend {
|
|||
.get(&NodeType::Render)
|
||||
.or_else(|| nodes.get(&NodeType::Primary))
|
||||
.ok_or(NoDrmNodes)?;
|
||||
let fd = uapi::open(&**node, c::O_RDWR | c::O_CLOEXEC, 0)
|
||||
.map_err(Into::into)
|
||||
.map_err(OpenDrmNode)?;
|
||||
let fd = uapi::open(&**node, c::O_RDWR | c::O_CLOEXEC, 0).map_os_err(OpenDrmNode)?;
|
||||
let drm = Drm::open_existing(Rc::new(fd)).map_err(CreateDrm)?;
|
||||
let dev = Rc::new(HeadlessDrmDevice {
|
||||
backend: self.clone(),
|
||||
|
|
|
|||
|
|
@ -48,7 +48,7 @@ use {
|
|||
errorfmt::ErrorFmt,
|
||||
hash_map_ext::HashMapExt,
|
||||
numcell::NumCell,
|
||||
oserror::OsError,
|
||||
oserror::{OsError, OsErrorExt2},
|
||||
smallmap::SmallMap,
|
||||
syncqueue::SyncQueue,
|
||||
},
|
||||
|
|
@ -253,10 +253,9 @@ impl Backend for MetalBackend {
|
|||
}
|
||||
|
||||
fn dup_fd(fd: c::c_int) -> Result<Rc<OwnedFd>, MetalError> {
|
||||
match uapi::fcntl_dupfd_cloexec(fd, 0) {
|
||||
Ok(m) => Ok(Rc::new(m)),
|
||||
Err(e) => Err(MetalError::Dup(e.into())),
|
||||
}
|
||||
uapi::fcntl_dupfd_cloexec(fd, 0)
|
||||
.map(Rc::new)
|
||||
.map_os_err(MetalError::Dup)
|
||||
}
|
||||
|
||||
pub async fn create(state: &Rc<State>) -> Result<Rc<MetalBackend>, MetalError> {
|
||||
|
|
@ -384,15 +383,11 @@ struct DeviceHolder {
|
|||
|
||||
impl LibInputAdapter for DeviceHolder {
|
||||
fn open(&self, path: &CStr) -> Result<OwnedFd, LibInputError> {
|
||||
let stat = match uapi::stat(path) {
|
||||
Ok(s) => s,
|
||||
Err(e) => return Err(LibInputError::Stat(e.into())),
|
||||
};
|
||||
let stat = uapi::stat(path).map_os_err(LibInputError::Stat)?;
|
||||
if let Some(MetalDevice::Input(d)) = self.devices.get(&stat.st_rdev)
|
||||
&& let Some(fd) = d.fd.get()
|
||||
{
|
||||
return uapi::fcntl_dupfd_cloexec(fd.raw(), 0)
|
||||
.map_err(|e| LibInputError::DupFd(e.into()));
|
||||
return uapi::fcntl_dupfd_cloexec(fd.raw(), 0).map_os_err(LibInputError::DupFd);
|
||||
}
|
||||
Err(LibInputError::DeviceUnavailable)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue