add Debug impls

This commit is contained in:
Szymon Walter 2018-03-19 20:38:32 +01:00
parent eef8f86e8b
commit c798b2bdb2
3 changed files with 92 additions and 0 deletions

View file

@ -1,4 +1,5 @@
use core::mem;
use core::fmt::{self, Debug};
use alloc::Vec;
@ -36,6 +37,19 @@ pub struct BlockGroupDescriptor {
_reserved: [u8; 14],
}
impl Debug for BlockGroupDescriptor {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
f.debug_struct("BlockGroupDescriptor")
.field("block_usage_addr", unsafe { &self.block_usage_addr })
.field("inode_usage_addr", unsafe { &self.inode_usage_addr })
.field("inode_table_block", unsafe { &self.inode_table_block })
.field("free_blocks_count", unsafe { &self.free_blocks_count })
.field("free_inodes_count", unsafe { &self.free_inodes_count })
.field("dirs_count", unsafe { &self.dirs_count })
.finish()
}
}
impl BlockGroupDescriptor {
pub unsafe fn find_descriptor<'a, E>(
haystack: &'a Buffer<u8, Error = E>,

View file

@ -1,4 +1,5 @@
use core::mem;
use core::fmt::{self, Debug};
use error::Error;
use buffer::Buffer;
@ -66,6 +67,34 @@ pub struct Inode {
pub _os_specific_2: [u8; 12],
}
impl Debug for Inode {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
f.debug_struct("Inode")
.field("type_perm", unsafe { &self.type_perm })
.field("uid", unsafe { &self.uid })
.field("size_low", unsafe { &self.size_low })
.field("atime", unsafe { &self.atime })
.field("ctime", unsafe { &self.ctime })
.field("mtime", unsafe { &self.mtime })
.field("dtime", unsafe { &self.dtime })
.field("gid", unsafe { &self.gid })
.field("hard_links", unsafe { &self.hard_links })
.field("sectors_count", unsafe { &self.sectors_count })
.field("flags", unsafe { &self.flags })
.field("os_specific_1", &self._os_specific_1)
.field("direct_pointer", unsafe { &self.direct_pointer })
.field("indirect_pointer", unsafe { &self.indirect_pointer })
.field("doubly_indirect", unsafe { &self.doubly_indirect })
.field("triply_indirect", unsafe { &self.triply_indirect })
.field("gen_number", unsafe { &self.gen_number })
.field("ext_attribute_block", unsafe { &self.ext_attribute_block })
.field("size_high", unsafe { &self.size_high })
.field("frag_block_addr", unsafe { &self.frag_block_addr })
.field("os_specific_2", &self._os_specific_2)
.finish()
}
}
impl Inode {
pub unsafe fn find_inode<'a, E>(
haystack: &'a Buffer<u8, Error = E>,

View file

@ -1,4 +1,5 @@
use core::mem;
use core::fmt::{self, Debug};
use error::Error;
use buffer::Buffer;
@ -144,6 +145,54 @@ pub struct Superblock {
_reserved: [u8; 788],
}
impl Debug for Superblock {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
f.debug_struct("Superblock")
.field("inodes_count", unsafe { &self.inodes_count })
.field("blocks_count", unsafe { &self.blocks_count })
.field("r_blocks_count", unsafe { &self.r_blocks_count })
.field("free_blocks_count", unsafe { &self.free_blocks_count })
.field("free_inodes_count", unsafe { &self.free_inodes_count })
.field("first_data_block", unsafe { &self.first_data_block })
.field("log_block_size", unsafe { &self.log_block_size })
.field("log_frag_size", unsafe { &self.log_frag_size })
.field("blocks_per_group", unsafe { &self.blocks_per_group })
.field("frags_per_group", unsafe { &self.frags_per_group })
.field("inodes_per_group", unsafe { &self.inodes_per_group })
.field("mtime", unsafe { &self.mtime })
.field("wtime", unsafe { &self.wtime })
.field("mnt_count", unsafe { &self.mnt_count })
.field("max_mnt_count", unsafe { &self.max_mnt_count })
.field("magic", unsafe { &self.magic })
.field("state", unsafe { &self.state })
.field("errors", unsafe { &self.errors })
.field("rev_minor", unsafe { &self.rev_minor })
.field("lastcheck", unsafe { &self.lastcheck })
.field("checkinterval", unsafe { &self.checkinterval })
.field("creator_os", unsafe { &self.creator_os })
.field("rev_major", unsafe { &self.rev_major })
.field("block_uid", unsafe { &self.block_uid })
.field("block_gid", unsafe { &self.block_gid })
.field("first_inode", unsafe { &self.first_inode })
.field("inode_size", unsafe { &self.inode_size })
.field("block_group", unsafe { &self.block_group })
.field("features_opt", unsafe { &self.features_opt })
.field("features_req", unsafe { &self.features_req })
.field("features_ronly", unsafe { &self.features_ronly })
.field("fs_id", &self.fs_id)
.field("volume_name", &self.volume_name)
.field("last_mnt_path", &self.last_mnt_path.as_ref())
.field("compression", unsafe { &self.compression })
.field("prealloc_blocks_files", &self.prealloc_blocks_files)
.field("prealloc_blocks_dirs", &self.prealloc_blocks_dirs)
.field("journal_id", &self.journal_id)
.field("journal_inode", unsafe { &self.journal_inode })
.field("journal_dev", unsafe { &self.journal_dev })
.field("journal_orphan_head", unsafe { &self.journal_orphan_head })
.finish()
}
}
impl Superblock {
pub unsafe fn find<'a, E>(
haystack: &'a Buffer<u8, Error = E>,