From 31dc6d87d7b401742531bc4acf084a9cbf355131 Mon Sep 17 00:00:00 2001 From: Bryan Newbold Date: Mon, 30 Oct 2017 19:18:32 -0700 Subject: replace (most) seek() code with read_at/write_at --- src/sleep_file.rs | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) (limited to 'src/sleep_file.rs') diff --git a/src/sleep_file.rs b/src/sleep_file.rs index 71e95ba..90e08c4 100644 --- a/src/sleep_file.rs +++ b/src/sleep_file.rs @@ -1,6 +1,6 @@ use std::io::prelude::*; -use std::io::SeekFrom; +use std::os::unix::fs::FileExt; use std::path::Path; use std::fs::File; use integer_encoding::FixedInt; @@ -139,9 +139,10 @@ impl SleepStorage for SleepFile { bail!("Tried to read beyond end of SLEEP file"); } let mut entry = vec![0; entry_size]; - self.file - .seek(SeekFrom::Start(32 + (entry_size as u64) * index))?; - self.file.read_exact(&mut entry)?; + let got = self.file.read_at(&mut entry, 32 + (entry_size as u64) * index)?; + if got != entry.len() { + bail!("Short file read"); + } Ok(entry) } @@ -150,9 +151,10 @@ impl SleepStorage for SleepFile { if data.len() != self.entry_size as usize { bail!("Tried to write mis-sized data"); } - self.file - .seek(SeekFrom::Start(32 + (self.entry_size as u64) * index))?; - self.file.write_all(&data)?; + let put = self.file.write_at(&data, 32 + (self.entry_size as u64) * index)?; + if put != data.len() { + bail!("Short file write"); + } Ok(()) } -- cgit v1.2.3