liteboxfs 0.1.0

A modern POSIX filesystem in a SQLite database
Documentation
use std::io;

use fuser::Errno;

impl crate::Error {
    /// Get the libc errno for this error.
    pub(super) fn to_errno(&self) -> Errno {
        match self {
            crate::Error::FileAlreadyExists { .. } => Errno::EEXIST,
            crate::Error::FileNotFound { .. } => Errno::ENOENT,
            crate::Error::NoParentDirectory { .. } => Errno::ENOENT,
            crate::Error::InvalidPath { .. } => Errno::EINVAL,
            crate::Error::DirectoryNotEmpty { .. } => Errno::ENOTEMPTY,
            crate::Error::NotADirectory { .. } => Errno::ENOTDIR,
            crate::Error::NotARegularFile { .. } => Errno::EISDIR,
            crate::Error::Io { kind, code } => match code {
                Some(errno) => Errno::from_i32(*errno),
                None => match kind {
                    io::ErrorKind::NotFound => Errno::ENOENT,
                    io::ErrorKind::PermissionDenied => Errno::EPERM,
                    io::ErrorKind::ConnectionRefused => Errno::ECONNREFUSED,
                    io::ErrorKind::ConnectionReset => Errno::ECONNRESET,
                    io::ErrorKind::ConnectionAborted => Errno::ECONNABORTED,
                    io::ErrorKind::NotConnected => Errno::ENOTCONN,
                    io::ErrorKind::AddrInUse => Errno::EADDRINUSE,
                    io::ErrorKind::AddrNotAvailable => Errno::EADDRNOTAVAIL,
                    io::ErrorKind::BrokenPipe => Errno::EPIPE,
                    io::ErrorKind::AlreadyExists => Errno::EEXIST,
                    io::ErrorKind::WouldBlock => Errno::EWOULDBLOCK,
                    io::ErrorKind::InvalidInput => Errno::EINVAL,
                    io::ErrorKind::TimedOut => Errno::ETIMEDOUT,
                    io::ErrorKind::Interrupted => Errno::EINTR,
                    io::ErrorKind::Unsupported => Errno::ENOSYS,
                    _ => Errno::EIO,
                },
            },
            _ => Errno::EIO,
        }
    }
}