summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlejandro Soto <alejandro@34project.org>2022-01-04 07:06:25 -0600
committerAlejandro Soto <alejandro@34project.org>2022-01-04 07:06:25 -0600
commitff17b04143dde5157808be5bcf1cbf8a942db4c4 (patch)
treed19620c7fd48f401c9df67b8f18750520f5a0f73
parent2236d258859018a93b14504295385ad4fb0b3d9b (diff)
Replace quick-error with thiserror
-rw-r--r--Cargo.toml2
-rw-r--r--src/error.rs52
-rw-r--r--src/mount.rs13
-rw-r--r--src/session.rs5
4 files changed, 37 insertions, 35 deletions
diff --git a/Cargo.toml b/Cargo.toml
index d4ede94..7db3207 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -18,8 +18,8 @@ bytes = "1.1.0"
log = "0.4.14"
nix = "0.23.1"
num_enum = "0.5.5"
-quick-error = "2.0.1"
smallvec = "1.7.0"
+thiserror = "1.0.30"
tokio = { version = "1.15.0", features = ["rt", "net", "macros", "sync"] }
[dev-dependencies]
diff --git a/src/error.rs b/src/error.rs
index f4db21a..a2f1193 100644
--- a/src/error.rs
+++ b/src/error.rs
@@ -1,23 +1,35 @@
-use quick_error::quick_error;
-
-quick_error! {
- #[derive(Debug)]
- pub enum FuseError {
- Io(err: std::io::Error) { from() }
- ProtocolInit { display("fuse handshake failed (ancient kernel?)") }
- Truncated { display("fuse request truncated") }
- BadOpcode { display("unknown fuse operation") }
- BadLength { display("bad length in fuse request") }
- ShortWrite { display("fuse reply was trimmed on write()") }
- }
-}
+use thiserror::Error;
+
+pub type FuseResult<T> = Result<T, FuseError>;
+
+#[derive(Debug, Error)]
+#[non_exhaustive]
+pub enum FuseError {
+ #[error("I/O error")]
+ Io(#[from] std::io::Error),
+
+ #[error("fuse handshake failed (ancient kernel?)")]
+ ProtocolInit,
+
+ #[error("fuse request truncated")]
+ Truncated,
-quick_error! {
- #[derive(Debug)]
- pub enum MountError {
- Io(err: std::io::Error) { from() }
- Fusermount { display("fusermount failed") }
- }
+ #[error("unknown fuse operation")]
+ BadOpcode,
+
+ #[error("bad length in fuse request")]
+ BadLength,
+
+ #[error("fuse reply was trimmed on write()")]
+ ShortWrite,
}
-pub type FuseResult<T> = Result<T, FuseError>;
+#[derive(Debug, Error)]
+#[non_exhaustive]
+pub enum MountError {
+ #[error("I/O error during mount")]
+ Io(#[from] std::io::Error),
+
+ #[error("fusermount failed")]
+ Fusermount,
+}
diff --git a/src/mount.rs b/src/mount.rs
index c924a9a..53026bb 100644
--- a/src/mount.rs
+++ b/src/mount.rs
@@ -16,18 +16,7 @@ use nix::{
sys::socket::{recvmsg, ControlMessageOwned, MsgFlags},
};
-use quick_error::quick_error;
-
-use super::session::Start;
-use crate::util::DumbFd;
-
-quick_error! {
- #[derive(Debug)]
- pub enum MountError {
- Io(err: std::io::Error) { from() }
- Fusermount { display("fusermount failed") }
- }
-}
+use crate::{error::MountError, session::Start, util::DumbFd};
#[derive(Default)]
pub struct Options(OsString);
diff --git a/src/session.rs b/src/session.rs
index e83a8d4..29b3ab6 100644
--- a/src/session.rs
+++ b/src/session.rs
@@ -23,7 +23,8 @@ use bytemuck::bytes_of;
use smallvec::SmallVec;
use crate::{
- mount::{unmount_sync, MountError},
+ error::MountError,
+ mount::unmount_sync,
proto::{self, InHeader, Structured},
util::{page_size, DumbFd, OutputChain},
Errno, FuseError, FuseResult,
@@ -537,7 +538,7 @@ where
let body = match Structured::toplevel_from(&bytes[HEADER_END..header.len as usize], &header) {
Ok(body) => body,
Err(error) => {
- log::error!("Parsing request {}: {}", header, error);
+ log::error!("Parsing request {}: {:?}", header, error);
let reply = Reply::<ops::Any> {
session,
unique: header.unique,