1
0
Fork 0
forked from wry/wry

all: simplify handling of Errno values

This commit is contained in:
Julian Orth 2026-04-02 18:34:12 +02:00
parent 9c605df692
commit 34914eccb0
58 changed files with 443 additions and 464 deletions

View file

@ -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(),

View file

@ -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)
}