Remove DirentBytes
This commit is contained in:
parent
e68039eaec
commit
9da207d605
2 changed files with 22 additions and 19 deletions
|
@ -3,7 +3,6 @@ use super::{
|
|||
DiskInode,
|
||||
DiskInodeType,
|
||||
DirEntry,
|
||||
DirentBytes,
|
||||
EasyFileSystem,
|
||||
DIRENT_SZ,
|
||||
get_block_cache,
|
||||
|
@ -63,17 +62,16 @@ impl Inode {
|
|||
// assert it is a directory
|
||||
assert!(disk_inode.is_dir());
|
||||
let file_count = (disk_inode.size as usize) / DIRENT_SZ;
|
||||
let mut dirent_space: DirentBytes = Default::default();
|
||||
let mut dirent = DirEntry::empty();
|
||||
for i in 0..file_count {
|
||||
assert_eq!(
|
||||
disk_inode.read_at(
|
||||
DIRENT_SZ * i,
|
||||
&mut dirent_space,
|
||||
dirent.as_bytes_mut(),
|
||||
&self.block_device,
|
||||
),
|
||||
DIRENT_SZ,
|
||||
);
|
||||
let dirent = DirEntry::from_bytes(&dirent_space);
|
||||
if dirent.name() == name {
|
||||
return Some(dirent.inode_number() as u32);
|
||||
}
|
||||
|
@ -144,7 +142,7 @@ impl Inode {
|
|||
let dirent = DirEntry::new(name, new_inode_id);
|
||||
root_inode.write_at(
|
||||
file_count * DIRENT_SZ,
|
||||
dirent.into_bytes(),
|
||||
dirent.as_bytes(),
|
||||
&self.block_device,
|
||||
);
|
||||
});
|
||||
|
@ -164,16 +162,16 @@ impl Inode {
|
|||
let file_count = (disk_inode.size as usize) / DIRENT_SZ;
|
||||
let mut v: Vec<String> = Vec::new();
|
||||
for i in 0..file_count {
|
||||
let mut dirent_bytes: DirentBytes = Default::default();
|
||||
let mut dirent = DirEntry::empty();
|
||||
assert_eq!(
|
||||
disk_inode.read_at(
|
||||
i * DIRENT_SZ,
|
||||
&mut dirent_bytes,
|
||||
dirent.as_bytes_mut(),
|
||||
&self.block_device,
|
||||
),
|
||||
DIRENT_SZ,
|
||||
);
|
||||
v.push(String::from(DirEntry::from_bytes(&dirent_bytes).name()));
|
||||
v.push(String::from(dirent.name()));
|
||||
}
|
||||
v
|
||||
})
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue