Improve LBA output even more

This commit is contained in:
jaby 2022-11-19 02:12:48 +01:00
parent 925872ac3e
commit 1855a0686a
1 changed files with 21 additions and 14 deletions

View File

@ -27,36 +27,43 @@ pub fn process(config: config_reader::Configuration, calculate_lba: CalculateLBA
}
pub fn dump_content(cd_desc: &CDDesc, mut out: Output) -> Result<(), Error> {
fn write_intro(out: &mut Output) -> Result<(), Error> {
writeln!(out, "File: <File name> @<Track relative LBA> - <Size in Bytes>/<Extended size in bytes>")?;
writeln!(out, "Dir: <Directory name> @<Track relative LBA>")?;
writeln!(out, "")?;
const NO_NAME:&'static str = "<No Name>";
const ARROW:&'static str = "|==>";
const INDENT_STEP:usize = 4;
Ok(())
fn write_file(out: &mut Output, indent: usize, file_name: String, file_lba: usize, file_size: usize, file_ex_size: usize) -> Result<(), Error> {
Ok(writeln!(out, "{:>indent$}File: {:<name_align$} @{:<lba_align$} ={:<size_align$} >{:<ex_size_align$}", ARROW, file_name, file_lba, file_size, file_ex_size,
indent=indent + ARROW.len(), name_align=DEFAULT_CONTENT_ALIGNMENT.name, lba_align=DEFAULT_CONTENT_ALIGNMENT.lba, size_align=DEFAULT_CONTENT_ALIGNMENT.size, ex_size_align=DEFAULT_CONTENT_ALIGNMENT.ex_size)?)
}
fn write_dir(out: &mut Output, indent: usize, dir_name: &str, dir_lba: usize) -> Result<(), Error> {
Ok(writeln!(out, "{:>indent$}Dir: {:<name_align$} @{:<lba_align$}", ARROW, dir_name, dir_lba,
indent=indent + ARROW.len(), name_align=DEFAULT_CONTENT_ALIGNMENT.name, lba_align=DEFAULT_CONTENT_ALIGNMENT.lba)?)
}
fn write_intro(out: &mut Output) -> Result<(), Error> {
writeln!(out, "{:>indent$}Type: {:<name_align$} @{:<lba_align$} ={:<size_align$} >{:<ex_size_align$}", "", "NAME", "LBA", "SIZE", "EXTENDED SIZE",
indent=ARROW.len(), name_align=DEFAULT_CONTENT_ALIGNMENT.name, lba_align=DEFAULT_CONTENT_ALIGNMENT.lba, size_align=DEFAULT_CONTENT_ALIGNMENT.size, ex_size_align=DEFAULT_CONTENT_ALIGNMENT.ex_size)?;
Ok(writeln!(out, "")?)
}
fn dump_dir(dir: &Directory, out: &mut Output, indent: usize) -> Result<(), Error> {
const ARROW:&'static str = "|==>";
const INDENT_STEP:usize = 4;
for file in dir.file_iter() {
let file = file.borrow();
let file_name = file.name.as_string().unwrap_or("<No name>".to_owned());
let file_name = file.name.as_string().unwrap_or(NO_NAME.to_owned());
let file_lba = file.get_track_rel_lba();
let file_size = file.properties.get_real_size();
let file_ex_size = file.get_extended_size();
writeln!(out, "{:>indent$}File: {:<name_align$} @{:<lba_align$} ={:<size_align$} >{:<ex_size_align$}", ARROW, file_name, file_lba, file_size, file_ex_size,
indent=indent + ARROW.len(), name_align=DEFAULT_CONTENT_ALIGNMENT.name, lba_align=DEFAULT_CONTENT_ALIGNMENT.lba, size_align=DEFAULT_CONTENT_ALIGNMENT.size, ex_size_align=DEFAULT_CONTENT_ALIGNMENT.ex_size)?;
write_file(out, indent, file_name, file_lba, file_size, file_ex_size)?;
}
for dir in dir.dir_iter() {
let dir = dir.borrow();
let dir_name = dir.name.as_str().unwrap_or("<No name>");
let dir_name = dir.name.as_str().unwrap_or(NO_NAME);
let dir_lba = dir.get_track_rel_lba();
writeln!(out, "{:>indent$}Dir: {:<name_align$} @{:<lba_align$}", ARROW, dir_name, dir_lba,
indent=indent + ARROW.len(), name_align=DEFAULT_CONTENT_ALIGNMENT.name, lba_align=DEFAULT_CONTENT_ALIGNMENT.lba)?;
write_dir(out, indent, dir_name, dir_lba)?;
dump_dir(&dir, out, indent + INDENT_STEP)?;
}