use constant for error comparison

This commit is contained in:
Alex Zenla 2024-01-08 14:16:33 -08:00
parent f8938ac2c6
commit 8e2fc80ee0
No known key found for this signature in database
GPG Key ID: 067B238899B51269
3 changed files with 22 additions and 24 deletions

View File

@ -1,11 +1,12 @@
use xsd::bus::XsdBusError; use xsd::bus::XsdBusError;
use xsd::client::XsdClient; use xsd::client::XsdClient;
use xsd::sys::XSD_ERROR_EINVAL;
fn list_recursive(client: &mut XsdClient, level: usize, path: &str) -> Result<(), XsdBusError> { fn list_recursive(client: &mut XsdClient, level: usize, path: &str) -> Result<(), XsdBusError> {
let children = match client.list(path) { let children = match client.list(path) {
Ok(children) => children, Ok(children) => children,
Err(error) => { Err(error) => {
return if error.to_string() == "EINVAL" { return if error.to_string() == XSD_ERROR_EINVAL.error {
Ok(()) Ok(())
} else { } else {
Err(error) Err(error)

View File

@ -139,10 +139,7 @@ impl XsdSocket {
let error = CString::from_vec_with_nul(payload)?; let error = CString::from_vec_with_nul(payload)?;
return Err(XsdBusError::new(error.to_str()?)); return Err(XsdBusError::new(error.to_str()?));
} }
let response = XsdResponse { let response = XsdResponse { header, payload };
header,
payload,
};
Ok(response) Ok(response)
} }

View File

@ -42,72 +42,72 @@ pub const XSD_WRITE_CREATE: &str = "CREATE";
pub const XSD_WRITE_CREATE_EXCL: &str = "CREATE|EXCL"; pub const XSD_WRITE_CREATE_EXCL: &str = "CREATE|EXCL";
#[repr(C)] #[repr(C)]
pub struct XsError<'a> { pub struct XsdError<'a> {
num: i32, pub num: i32,
error: &'a str, pub error: &'a str,
} }
pub const XSD_ERROR_EINVAL: XsError = XsError { pub const XSD_ERROR_EINVAL: XsdError = XsdError {
num: libc::EINVAL, num: libc::EINVAL,
error: "EINVAL", error: "EINVAL",
}; };
pub const XSD_ERROR_EACCES: XsError = XsError { pub const XSD_ERROR_EACCES: XsdError = XsdError {
num: libc::EACCES, num: libc::EACCES,
error: "EACCES", error: "EACCES",
}; };
pub const XSD_ERROR_EEXIST: XsError = XsError { pub const XSD_ERROR_EEXIST: XsdError = XsdError {
num: libc::EEXIST, num: libc::EEXIST,
error: "EEXIST", error: "EEXIST",
}; };
pub const XSD_ERROR_EISDIR: XsError = XsError { pub const XSD_ERROR_EISDIR: XsdError = XsdError {
num: libc::EISDIR, num: libc::EISDIR,
error: "EISDIR", error: "EISDIR",
}; };
pub const XSD_ERROR_ENOENT: XsError = XsError { pub const XSD_ERROR_ENOENT: XsdError = XsdError {
num: libc::ENOENT, num: libc::ENOENT,
error: "ENOENT", error: "ENOENT",
}; };
pub const XSD_ERROR_ENOMEM: XsError = XsError { pub const XSD_ERROR_ENOMEM: XsdError = XsdError {
num: libc::ENOMEM, num: libc::ENOMEM,
error: "ENOMEM", error: "ENOMEM",
}; };
pub const XSD_ERROR_ENOSPC: XsError = XsError { pub const XSD_ERROR_ENOSPC: XsdError = XsdError {
num: libc::ENOSPC, num: libc::ENOSPC,
error: "ENOSPC", error: "ENOSPC",
}; };
pub const XSD_ERROR_EIO: XsError = XsError { pub const XSD_ERROR_EIO: XsdError = XsdError {
num: libc::EIO, num: libc::EIO,
error: "EIO", error: "EIO",
}; };
pub const XSD_ERROR_ENOTEMPTY: XsError = XsError { pub const XSD_ERROR_ENOTEMPTY: XsdError = XsdError {
num: libc::ENOTEMPTY, num: libc::ENOTEMPTY,
error: "ENOTEMPTY", error: "ENOTEMPTY",
}; };
pub const XSD_ERROR_ENOSYS: XsError = XsError { pub const XSD_ERROR_ENOSYS: XsdError = XsdError {
num: libc::ENOSYS, num: libc::ENOSYS,
error: "ENOSYS", error: "ENOSYS",
}; };
pub const XSD_ERROR_EROFS: XsError = XsError { pub const XSD_ERROR_EROFS: XsdError = XsdError {
num: libc::EROFS, num: libc::EROFS,
error: "EROFS", error: "EROFS",
}; };
pub const XSD_ERROR_EBUSY: XsError = XsError { pub const XSD_ERROR_EBUSY: XsdError = XsdError {
num: libc::EBUSY, num: libc::EBUSY,
error: "EBUSY", error: "EBUSY",
}; };
pub const XSD_ERROR_EAGAIN: XsError = XsError { pub const XSD_ERROR_EAGAIN: XsdError = XsdError {
num: libc::EAGAIN, num: libc::EAGAIN,
error: "EAGAIN", error: "EAGAIN",
}; };
pub const XSD_ERROR_EISCONN: XsError = XsError { pub const XSD_ERROR_EISCONN: XsdError = XsdError {
num: libc::EISCONN, num: libc::EISCONN,
error: "EISCONN", error: "EISCONN",
}; };
pub const XSD_ERROR_E2BIG: XsError = XsError { pub const XSD_ERROR_E2BIG: XsdError = XsdError {
num: libc::E2BIG, num: libc::E2BIG,
error: "E2BIG", error: "E2BIG",
}; };
pub const XSD_ERROR_EPERM: XsError = XsError { pub const XSD_ERROR_EPERM: XsdError = XsdError {
num: libc::EPERM, num: libc::EPERM,
error: "EPERM", error: "EPERM",
}; };