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

github.com/windirstat/ntfs.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/ntfs.rs')
-rw-r--r--src/ntfs.rs25
1 files changed, 10 insertions, 15 deletions
diff --git a/src/ntfs.rs b/src/ntfs.rs
index 22b7306..deaa546 100644
--- a/src/ntfs.rs
+++ b/src/ntfs.rs
@@ -4,7 +4,7 @@
use crate::attribute::NtfsAttributeType;
use crate::boot_sector::BootSector;
use crate::error::{NtfsError, Result};
-use crate::file::{KnownNtfsFile, NtfsFile};
+use crate::file::{KnownNtfsFileRecordNumber, NtfsFile};
use crate::structured_values::{NtfsVolumeInformation, NtfsVolumeName};
use crate::upcase_table::UpcaseTable;
use binread::io::{Read, Seek, SeekFrom};
@@ -66,26 +66,21 @@ impl Ntfs {
self.cluster_size
}
- /// Returns the [`NtfsFile`] for the `n`-th NTFS file record.
+ /// Returns the [`NtfsFile`] for the given NTFS file record number.
///
/// The first few NTFS files have fixed indexes and contain filesystem
- /// management information (see the [`KnownNtfsFile`] enum).
- ///
- /// TODO:
- /// - Check if `n` can be u32 instead of u64.
- /// - Check if `n` should be in a newtype, with easier conversion from
- /// KnownNtfsFile.
- pub fn file<'n, T>(&'n self, fs: &mut T, n: u64) -> Result<NtfsFile<'n>>
+ /// management information (see the [`KnownNtfsFileRecordNumber`] enum).
+ pub fn file<'n, T>(&'n self, fs: &mut T, file_record_number: u64) -> Result<NtfsFile<'n>>
where
T: Read + Seek,
{
- let offset = n
+ let offset = file_record_number
.checked_mul(self.file_record_size as u64)
- .ok_or(NtfsError::InvalidFile { n })?;
+ .ok_or(NtfsError::InvalidFileRecordNumber { file_record_number })?;
let position = self
.mft_position
.checked_add(offset)
- .ok_or(NtfsError::InvalidFile { n })?;
+ .ok_or(NtfsError::InvalidFileRecordNumber { file_record_number })?;
NtfsFile::new(&self, fs, position)
}
@@ -111,7 +106,7 @@ impl Ntfs {
where
T: Read + Seek,
{
- self.file(fs, KnownNtfsFile::RootDirectory as u64)
+ self.file(fs, KnownNtfsFileRecordNumber::RootDirectory as u64)
}
/// Returns the size of a single sector in bytes.
@@ -146,7 +141,7 @@ impl Ntfs {
where
T: Read + Seek,
{
- let volume_file = self.file(fs, KnownNtfsFile::Volume as u64)?;
+ let volume_file = self.file(fs, KnownNtfsFileRecordNumber::Volume as u64)?;
let attribute = volume_file.attribute_by_ty(NtfsAttributeType::VolumeInformation)?;
attribute.resident_structured_value::<NtfsVolumeInformation>()
}
@@ -159,7 +154,7 @@ impl Ntfs {
where
T: Read + Seek,
{
- let volume_file = iter_try!(self.file(fs, KnownNtfsFile::Volume as u64));
+ let volume_file = iter_try!(self.file(fs, KnownNtfsFileRecordNumber::Volume as u64));
let attribute = volume_file
.attribute_by_ty(NtfsAttributeType::VolumeName)
.ok()?;