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

github.com/windirstat/RustyMft.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormatthew seyer <matthew.seyer@gmail.com>2017-06-27 03:34:49 +0300
committermatthew seyer <matthew.seyer@gmail.com>2017-06-27 03:34:49 +0300
commite6387f97fc4af6561ffd7a860941499e5ed3bf2d (patch)
tree47739785f53d15335889d8b2658651c18fa200fc
parentc68764e976436247a749040a46ddc5d8e49a2d7a (diff)
Added unknow mappings (fixxes runing on test data too)
-rw-r--r--src/mft.rs43
1 files changed, 28 insertions, 15 deletions
diff --git a/src/mft.rs b/src/mft.rs
index 634a96a..639d221 100644
--- a/src/mft.rs
+++ b/src/mft.rs
@@ -133,38 +133,51 @@ impl MftHandler{
let entry = reference.get_entry_number();
// Gat mapping for it
match self.get_mapping_from_entry(entry) {
- Some(mapping) => {
- self.path_enumerator.set_mapping(
- reference,
- mapping.clone()
- );
- self.enumerate_path_stack(
- name_stack,
- reference
- );
+ Ok(mapping) => {
+ match mapping {
+ Some(map) => {
+ self.path_enumerator.set_mapping(
+ reference,
+ map.clone()
+ );
+ self.enumerate_path_stack(
+ name_stack,
+ reference
+ );
+ },
+ None => {
+ name_stack.push(
+ String::from("[UNKNOWN]")
+ );
+ }
+ }
},
- None => {}
+ Err(error) => {
+ name_stack.push(
+ String::from("[UNKNOWN]")
+ );
+ }
}
}
}
}
}
- fn get_mapping_from_entry(&mut self, entry: u64) -> Option<PathMapping>{
+ fn get_mapping_from_entry(&mut self, entry: u64) -> Result<Option<PathMapping>,MftError>{
self.filehandle.seek(
SeekFrom::Start(entry * self._entry_size as u64)
- ).unwrap();
+ )?;
let mut entry_buffer = vec![0; self._entry_size as usize];
self.filehandle.read_exact(
&mut entry_buffer
- ).unwrap();
+ )?;
let mft_entry = self.entry_from_buffer(
entry_buffer,
entry
- );
+ )?;
- mft_entry.unwrap().get_pathmap()
+ Ok(mft_entry.get_pathmap())
}
}