use crate::error::LibErrorCode;
use std::ffi::NulError;
use std::path::PathBuf;
use std::str::Utf8Error;
use thiserror::Error;
use uuid::Error as UuidError;
#[derive(Clone, Debug, Eq, Error, PartialEq)]
pub enum GlueError {
#[error("Unknown error code: {0}.")]
UnknownErrno(LibErrorCode),
#[error("Null pointer received.")]
NullPointerReceived,
#[error("{0}")]
Utf8Error(Utf8Error),
#[error("Bad path: {0}")]
BadPath(PathBuf),
#[error("{0}")]
NulError(NulError),
#[error("{0}")]
UuidError(UuidError),
#[error("Bad timespec: {0}")]
BadTimespec(String),
#[error("Bad id: {0}")]
BadId(u64),
}
#[cfg(feature = "enable-glue-errors")]
macro_rules! glue_error {
($condition: expr, $glue_err: expr) => {
if $condition {
return crate::Result::Err(crate::BtrfsUtilError::Glue($glue_err.into()));
}
};
($glue_err: expr) => {
return crate::Result::Err(crate::BtrfsUtilError::Glue($glue_err.into()))
};
}
#[cfg(not(feature = "enable-glue-errors"))]
macro_rules! glue_error {
($condition: expr, $glue_err: expr) => {
if $condition {
panic!("Glue error: {}", $glue_err)
}
};
($glue_err: expr) => {
panic!("Glue error: {}", $glue_err)
};
}