Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/windirstat/mft.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOmer BenAmram <omerbenamram@gmail.com>2020-01-06 23:12:42 +0300
committerGitHub <noreply@github.com>2020-01-06 23:12:42 +0300
commit6f8256e8f4fbc1f11951577712d1595ffaabad44 (patch)
tree36e4f85209ca27b447f188a660e98731d1cb96b8 /src/attribute/x30.rs
parent8fc54c4abcdad8ccca1459dd9557996512d49557 (diff)
parent678d4df9663d4bfdd119e0cbf35f556b4414dec3 (diff)
Merge pull request #35 from omerbenamram/housekeeping
Housekeeping
Diffstat (limited to 'src/attribute/x30.rs')
-rw-r--r--src/attribute/x30.rs19
1 files changed, 9 insertions, 10 deletions
diff --git a/src/attribute/x30.rs b/src/attribute/x30.rs
index 8a0d0f4..22aa8ec 100644
--- a/src/attribute/x30.rs
+++ b/src/attribute/x30.rs
@@ -1,8 +1,7 @@
use crate::attribute::FileAttributeFlags;
-use crate::err::{self, Result};
+use crate::err::{Error, Result};
use crate::ReadSeek;
use log::trace;
-use snafu::OptionExt;
use byteorder::{LittleEndian, ReadBytesExt};
use encoding::all::UTF_16LE;
@@ -12,7 +11,6 @@ use chrono::{DateTime, Utc};
use num_traits::FromPrimitive;
use serde::Serialize;
-use snafu::ResultExt;
use winstructs::ntfs::mft_reference::MftReference;
use winstructs::timestamp::WinTimestamp;
@@ -77,18 +75,19 @@ impl FileNameAttr {
/// ```
pub fn from_stream<S: ReadSeek>(stream: &mut S) -> Result<FileNameAttr> {
trace!("Offset {}: FilenameAttr", stream.tell()?);
- let parent = MftReference::from_reader(stream).context(err::FailedToReadMftReference)?;
+ let parent =
+ MftReference::from_reader(stream).map_err(Error::failed_to_read_mft_reference)?;
let created = WinTimestamp::from_reader(stream)
- .context(err::FailedToReadWindowsTime)?
+ .map_err(Error::failed_to_read_windows_time)?
.to_datetime();
let modified = WinTimestamp::from_reader(stream)
- .context(err::FailedToReadWindowsTime)?
+ .map_err(Error::failed_to_read_windows_time)?
.to_datetime();
let mft_modified = WinTimestamp::from_reader(stream)
- .context(err::FailedToReadWindowsTime)?
+ .map_err(Error::failed_to_read_windows_time)?
.to_datetime();
let accessed = WinTimestamp::from_reader(stream)
- .context(err::FailedToReadWindowsTime)?
+ .map_err(Error::failed_to_read_windows_time)?
.to_datetime();
let logical_size = stream.read_u64::<LittleEndian>()?;
@@ -98,14 +97,14 @@ impl FileNameAttr {
let name_length = stream.read_u8()?;
let namespace = stream.read_u8()?;
let namespace =
- FileNamespace::from_u8(namespace).context(err::UnknownNamespace { namespace })?;
+ FileNamespace::from_u8(namespace).ok_or(Error::UnknownNamespace { namespace })?;
let mut name_buffer = vec![0; (name_length as usize * 2) as usize];
stream.read_exact(&mut name_buffer)?;
let name = match UTF_16LE.decode(&name_buffer, DecoderTrap::Ignore) {
Ok(s) => s,
- Err(_e) => return err::InvalidFilename {}.fail(),
+ Err(_e) => return Err(Error::InvalidFilename {}),
};
Ok(FileNameAttr {