diff --git a/Cargo.lock b/Cargo.lock index 96e79a2f6a..3f67956fb1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -130,7 +130,7 @@ dependencies = [ [[package]] name = "redox-scheme" version = "0.2.0" -source = "git+https://gitlab.redox-os.org/4lDO2/redox-scheme.git?branch=schemev2#54a79f82bf82f14256b33dace7c68673b0851898" +source = "git+https://gitlab.redox-os.org/4lDO2/redox-scheme.git?branch=schemev2#40c29c6f08e095e7b3739feae47a3c24f469c4d3" dependencies = [ "libredox", "redox_syscall", @@ -139,7 +139,7 @@ dependencies = [ [[package]] name = "redox_syscall" version = "0.5.1" -source = "git+https://gitlab.redox-os.org/4lDO2/syscall.git?branch=schemev2#f72cc4d7431841aaad039bce57af4e59c82f78c4" +source = "git+https://gitlab.redox-os.org/4lDO2/syscall.git?branch=schemev2#495a0adbd8333fd21fae2d97129b094607878ba7" dependencies = [ "bitflags", ] diff --git a/src/initfs.rs b/src/initfs.rs index f440ea0b65..5811ff5267 100644 --- a/src/initfs.rs +++ b/src/initfs.rs @@ -8,9 +8,10 @@ use alloc::string::String; use hashbrown::HashMap; use redox_initfs::{InitFs, InodeStruct, Inode, InodeDir, InodeKind, types::Timespec}; +use redox_scheme::CallerCtx; use redox_scheme::OpenResult; use redox_scheme::RequestKind; -use redox_scheme::SchemeV2; +use redox_scheme::SchemeMut; use redox_scheme::SignalBehavior; use redox_scheme::Socket; @@ -84,8 +85,8 @@ fn inode_len(inode: InodeStruct<'static>) -> Result { }) } -impl SchemeV2 for InitFsScheme { - fn open(&mut self, path: &str, _flags: usize) -> Result { +impl SchemeMut for InitFsScheme { + fn xopen(&mut self, path: &str, _flags: usize, ctx: &CallerCtx) -> Result { let mut components = path // trim leading and trailing slash .trim_matches('/') @@ -197,12 +198,12 @@ impl SchemeV2 for InitFsScheme { } } - fn seek(&mut self, id: usize, pos: i64, whence: usize) -> Result { + fn seek(&mut self, id: usize, pos: isize, whence: usize) -> Result { let handle = self.handles.get_mut(&id).ok_or(Error::new(EBADF))?; - let new_offset = redox_scheme::calc_seek_offset_usize(handle.seek, pos as isize, whence, inode_len(Self::get_inode(&self.fs, handle.inode)?)?)?; + let new_offset = redox_scheme::calc_seek_offset_usize(handle.seek, pos, whence, inode_len(Self::get_inode(&self.fs, handle.inode)?)?)?; handle.seek = new_offset as usize; - Ok(new_offset as u64) + Ok(new_offset) } fn fcntl(&mut self, id: usize, _cmd: usize, _arg: usize) -> Result { @@ -246,17 +247,17 @@ impl SchemeV2 for InitFsScheme { Ok(0) } - fn fsync(&mut self, id: usize) -> Result<()> { + fn fsync(&mut self, id: usize) -> Result { if !self.handles.contains_key(&id) { return Err(Error::new(EBADF)); } - Ok(()) + Ok(0) } - fn close(&mut self, id: usize) -> Result<()> { + fn close(&mut self, id: usize) -> Result { let _ = self.handles.remove(&id).ok_or(Error::new(EBADF))?; - Ok(()) + Ok(0) } }