diff --git a/src/mock.rs b/src/mock.rs index c63133c..3be78db 100644 --- a/src/mock.rs +++ b/src/mock.rs @@ -47,8 +47,8 @@ pub trait Hooks { ) -> Result, PragmaErr> { Err(PragmaErr::NotFound) } - fn sector_size(&mut self) {} - fn device_characteristics(&mut self) { + fn sector_size(&mut self, handle: MockHandle) {} + fn device_characteristics(&mut self, handle: MockHandle) { println!("device_characteristics"); } } @@ -297,17 +297,17 @@ impl Vfs for MockVfs { state.hooks.pragma(*meta, pragma) } - fn sector_size(&self) -> i32 { + fn sector_size(&self, handle: &mut Self::Handle) -> VfsResult { let mut state = self.state(); state.log(format_args!("sector_size")); - state.hooks.sector_size(); - DEFAULT_SECTOR_SIZE + state.hooks.sector_size(*handle); + Ok(DEFAULT_SECTOR_SIZE) } - fn device_characteristics(&self) -> i32 { + fn device_characteristics(&self, handle: &mut Self::Handle) -> VfsResult { let mut state = self.state(); state.log(format_args!("device_characteristics")); - state.hooks.device_characteristics(); - DEFAULT_DEVICE_CHARACTERISTICS + state.hooks.device_characteristics(*handle); + Ok(DEFAULT_DEVICE_CHARACTERISTICS) } } diff --git a/src/vfs.rs b/src/vfs.rs index 8a06dc6..186e432 100644 --- a/src/vfs.rs +++ b/src/vfs.rs @@ -179,12 +179,12 @@ pub trait Vfs: Send + Sync { } // system queries - fn sector_size(&self) -> i32 { - DEFAULT_SECTOR_SIZE + fn sector_size(&self, handle: &mut Self::Handle) -> VfsResult { + Ok(DEFAULT_SECTOR_SIZE) } - fn device_characteristics(&self) -> i32 { - DEFAULT_DEVICE_CHARACTERISTICS + fn device_characteristics(&self, handle: &mut Self::Handle) -> VfsResult { + Ok(DEFAULT_DEVICE_CHARACTERISTICS) } } @@ -623,7 +623,7 @@ unsafe extern "C" fn x_sector_size(p_file: *mut ffi::sqlite3_file) -> c_ fallible(|| { let file = unwrap_file!(p_file, T)?; let vfs = unwrap_vfs!(file.vfs, T)?; - Ok(vfs.sector_size()) + vfs.sector_size(unsafe { file.handle.assume_init_mut() }) }) } @@ -631,7 +631,7 @@ unsafe extern "C" fn x_device_characteristics(p_file: *mut ffi::sqlite3_ fallible(|| { let file = unwrap_file!(p_file, T)?; let vfs = unwrap_vfs!(file.vfs, T)?; - Ok(vfs.device_characteristics()) + vfs.device_characteristics(unsafe { file.handle.assume_init_mut() }) }) }