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