1 // Take a look at the license at the top of the repository in the LICENSE file. 2 3 use crate::error::ErrorDomain; 4 use crate::translate::from_glib; 5 use crate::Quark; 6 7 #[derive(Clone, Copy, Debug, PartialEq, Eq)] 8 pub enum FileError { 9 Exist, 10 Isdir, 11 Acces, 12 Nametoolong, 13 Noent, 14 Notdir, 15 Nxio, 16 Nodev, 17 Rofs, 18 Txtbsy, 19 Fault, 20 Loop, 21 Nospc, 22 Nomem, 23 Mfile, 24 Nfile, 25 Badf, 26 Inval, 27 Pipe, 28 Again, 29 Intr, 30 Io, 31 Perm, 32 Nosys, 33 Failed, 34 } 35 36 impl ErrorDomain for FileError { domain() -> Quark37 fn domain() -> Quark { 38 unsafe { from_glib(ffi::g_file_error_quark()) } 39 } 40 code(self) -> i3241 fn code(self) -> i32 { 42 use self::FileError::*; 43 match self { 44 Exist => ffi::G_FILE_ERROR_EXIST as i32, 45 Isdir => ffi::G_FILE_ERROR_ISDIR as i32, 46 Acces => ffi::G_FILE_ERROR_ACCES as i32, 47 Nametoolong => ffi::G_FILE_ERROR_NAMETOOLONG as i32, 48 Noent => ffi::G_FILE_ERROR_NOENT as i32, 49 Notdir => ffi::G_FILE_ERROR_NOTDIR as i32, 50 Nxio => ffi::G_FILE_ERROR_NXIO as i32, 51 Nodev => ffi::G_FILE_ERROR_NODEV as i32, 52 Rofs => ffi::G_FILE_ERROR_ROFS as i32, 53 Txtbsy => ffi::G_FILE_ERROR_TXTBSY as i32, 54 Fault => ffi::G_FILE_ERROR_FAULT as i32, 55 Loop => ffi::G_FILE_ERROR_LOOP as i32, 56 Nospc => ffi::G_FILE_ERROR_NOSPC as i32, 57 Nomem => ffi::G_FILE_ERROR_NOMEM as i32, 58 Mfile => ffi::G_FILE_ERROR_MFILE as i32, 59 Nfile => ffi::G_FILE_ERROR_NFILE as i32, 60 Badf => ffi::G_FILE_ERROR_BADF as i32, 61 Inval => ffi::G_FILE_ERROR_INVAL as i32, 62 Pipe => ffi::G_FILE_ERROR_PIPE as i32, 63 Again => ffi::G_FILE_ERROR_AGAIN as i32, 64 Intr => ffi::G_FILE_ERROR_INTR as i32, 65 Io => ffi::G_FILE_ERROR_IO as i32, 66 Perm => ffi::G_FILE_ERROR_PERM as i32, 67 Nosys => ffi::G_FILE_ERROR_NOSYS as i32, 68 Failed => ffi::G_FILE_ERROR_FAILED as i32, 69 } 70 } 71 72 #[allow(clippy::cognitive_complexity)] from(code: i32) -> Option<Self>73 fn from(code: i32) -> Option<Self> { 74 use self::FileError::*; 75 match code { 76 x if x == ffi::G_FILE_ERROR_EXIST as i32 => Some(Exist), 77 x if x == ffi::G_FILE_ERROR_ISDIR as i32 => Some(Isdir), 78 x if x == ffi::G_FILE_ERROR_ACCES as i32 => Some(Acces), 79 x if x == ffi::G_FILE_ERROR_NAMETOOLONG as i32 => Some(Nametoolong), 80 x if x == ffi::G_FILE_ERROR_NOENT as i32 => Some(Noent), 81 x if x == ffi::G_FILE_ERROR_NOTDIR as i32 => Some(Notdir), 82 x if x == ffi::G_FILE_ERROR_NXIO as i32 => Some(Nxio), 83 x if x == ffi::G_FILE_ERROR_NODEV as i32 => Some(Nodev), 84 x if x == ffi::G_FILE_ERROR_ROFS as i32 => Some(Rofs), 85 x if x == ffi::G_FILE_ERROR_TXTBSY as i32 => Some(Txtbsy), 86 x if x == ffi::G_FILE_ERROR_FAULT as i32 => Some(Fault), 87 x if x == ffi::G_FILE_ERROR_LOOP as i32 => Some(Loop), 88 x if x == ffi::G_FILE_ERROR_NOSPC as i32 => Some(Nospc), 89 x if x == ffi::G_FILE_ERROR_NOMEM as i32 => Some(Nomem), 90 x if x == ffi::G_FILE_ERROR_MFILE as i32 => Some(Mfile), 91 x if x == ffi::G_FILE_ERROR_NFILE as i32 => Some(Nfile), 92 x if x == ffi::G_FILE_ERROR_BADF as i32 => Some(Badf), 93 x if x == ffi::G_FILE_ERROR_INVAL as i32 => Some(Inval), 94 x if x == ffi::G_FILE_ERROR_PIPE as i32 => Some(Pipe), 95 x if x == ffi::G_FILE_ERROR_AGAIN as i32 => Some(Again), 96 x if x == ffi::G_FILE_ERROR_INTR as i32 => Some(Intr), 97 x if x == ffi::G_FILE_ERROR_IO as i32 => Some(Io), 98 x if x == ffi::G_FILE_ERROR_PERM as i32 => Some(Perm), 99 x if x == ffi::G_FILE_ERROR_NOSYS as i32 => Some(Nosys), 100 x if x == ffi::G_FILE_ERROR_FAILED as i32 => Some(Failed), 101 _ => Some(Failed), 102 } 103 } 104 } 105