Create nice LBA file

This commit is contained in:
jaby 2022-11-18 04:24:53 +01:00
parent 80dadf1ac1
commit 925872ac3e
1 changed files with 15 additions and 3 deletions

View File

@ -10,6 +10,15 @@ use types::{CDDesc, Directory};
pub type CalculateLBAFunction = fn(&mut types::CDDesc);
struct ContentDumpAlignment {
name: usize,
lba: usize,
size: usize,
ex_size: usize,
}
const DEFAULT_CONTENT_ALIGNMENT:ContentDumpAlignment = ContentDumpAlignment{name: 24, lba: 8, size: 8, ex_size: 8};
pub fn process(config: config_reader::Configuration, calculate_lba: CalculateLBAFunction) -> Result<CDDesc, Error> {
let mut cd_desc = parse_configuration(config)?;
@ -27,7 +36,8 @@ pub fn dump_content(cd_desc: &CDDesc, mut out: Output) -> Result<(), Error> {
}
fn dump_dir(dir: &Directory, out: &mut Output, indent: usize) -> Result<(), Error> {
const INDENT_STEP:usize = 4;
const ARROW:&'static str = "|==>";
const INDENT_STEP:usize = 4;
for file in dir.file_iter() {
let file = file.borrow();
@ -36,7 +46,8 @@ pub fn dump_content(cd_desc: &CDDesc, mut out: Output) -> Result<(), Error> {
let file_size = file.properties.get_real_size();
let file_ex_size = file.get_extended_size();
writeln!(out, "{:indent$}File: {} @{} - {}/{}", " ", file_name, file_lba, file_size, file_ex_size, indent=indent)?;
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)?;
}
for dir in dir.dir_iter() {
@ -44,7 +55,8 @@ pub fn dump_content(cd_desc: &CDDesc, mut out: Output) -> Result<(), Error> {
let dir_name = dir.name.as_str().unwrap_or("<No name>");
let dir_lba = dir.get_track_rel_lba();
writeln!(out, "{:indent$}Dir: {} @{}", " ", dir_name, dir_lba, indent=indent)?;
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)?;
dump_dir(&dir, out, indent + INDENT_STEP)?;
}