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 Ben-Amram <omerbenamram@gmail.com>2019-05-22 17:11:24 +0300
committerOmer Ben-Amram <omerbenamram@gmail.com>2019-05-22 17:11:24 +0300
commit928a327974ade70cf1823dcf68527e1eaf07788f (patch)
treed7a199773f61d601463dce9c91fa052fc7f3f38a
parent835327aa394f5a1707dee006a196973724f3152a (diff)
make size optional
-rw-r--r--src/csv.rs10
-rw-r--r--src/mft.rs12
2 files changed, 19 insertions, 3 deletions
diff --git a/src/csv.rs b/src/csv.rs
index 5fbe6e5..04d96f5 100644
--- a/src/csv.rs
+++ b/src/csv.rs
@@ -1,3 +1,13 @@
+use crate::attribute::x30::FileNamespace;
+use crate::attribute::{FileAttributeFlags, MftAttributeContent, MftAttributeType};
+use crate::entry::EntryFlags;
+use crate::{MftAttribute, MftEntry, MftParser, ReadSeek};
+
+use serde::Serialize;
+
+use chrono::{DateTime, Utc};
+use std::path::PathBuf;
+
/// Used for CSV output
#[derive(Serialize)]
#[serde(rename_all = "PascalCase")]
diff --git a/src/mft.rs b/src/mft.rs
index f8d6d0a..b95cdbd 100644
--- a/src/mft.rs
+++ b/src/mft.rs
@@ -32,7 +32,7 @@ impl MftParser<BufReader<File>> {
let mft_fh = File::open(f).context(err::FailedToOpenFile { path: f.to_owned() })?;
let size = fs::metadata(f)?.len();
- Self::from_read_seek(BufReader::with_capacity(4096, mft_fh), size)
+ Self::from_read_seek(BufReader::with_capacity(4096, mft_fh), Some(size))
}
}
@@ -43,14 +43,20 @@ impl MftParser<Cursor<Vec<u8>>> {
let size = buffer.len() as u64;
let cursor = Cursor::new(buffer);
- Self::from_read_seek(cursor, size)
+ Self::from_read_seek(cursor, Some(size))
}
}
impl<T: ReadSeek> MftParser<T> {
- pub fn from_read_seek(mut data: T, size: u64) -> Result<Self> {
+ pub fn from_read_seek(mut data: T, size: Option<u64>) -> Result<Self> {
// We use the first entry to guess the entry size for all the other records.
let first_entry = EntryHeader::from_reader(&mut data, 0)?;
+
+ let size = match size {
+ Some(sz) => sz,
+ None => data.seek(SeekFrom::End(0))?,
+ };
+
data.seek(SeekFrom::Start(0))?;
Ok(Self {