From a319d2aab1d0d7b47e9a04d201cfa813bc03ba27 Mon Sep 17 00:00:00 2001 From: Dukantic Date: Tue, 8 Apr 2025 22:30:58 +0200 Subject: [PATCH] header work --- src/main.rs | 38 ++++++++++++++++++-------------------- 1 file changed, 18 insertions(+), 20 deletions(-) diff --git a/src/main.rs b/src/main.rs index c99e989..9131146 100644 --- a/src/main.rs +++ b/src/main.rs @@ -53,29 +53,22 @@ fn main() -> std::io::Result<()> { let mut to_print = File::open(f)?; let mut buffer = [0u8; 4]; to_print.read_exact(&mut buffer)?; - eprintln!("buffer = {:?}", buffer); let mut len_head = u32::from_be_bytes(buffer); to_print.read_exact(&mut buffer)?; - eprintln!("buffer = {:?}", buffer); let len_tree = u32::from_be_bytes(buffer); - eprintln!("len_head = {:?}", len_head); - eprintln!("len_tree = {:?}", len_tree); + //eprintln!("len_head = {:?}", len_head); + //eprintln!("len_tree = {:?}", len_tree); let len_chars = len_head - len_tree; - eprintln!("len_chars = {:?}", len_chars); let tree_bin = read_n_bytes(&mut to_print, len_tree); - eprintln!("tree_bin = {:?}", tree_bin); let tree_str = binary_to_string(tree_bin, len_tree); - eprintln!("tree_str = {:?}", tree_str); + //eprintln!("tree_str = {:?}", tree_str); let chars_bin = read_n_bytes(&mut to_print, len_chars); - eprintln!("chars_bin = {:?}", &chars_bin); let chars_str = String::from_utf8(chars_bin).unwrap(); - eprintln!("tree_str = {:?}", tree_str); - eprintln!("chars_str = {:?}", chars_str); - //let mut root = read_tree(&tree_str, &chars_str.chars().collect()); - //let txt = tree_to_string(&mut root); - //eprintln!("txt = {:?}", txt); + let mut root = read_tree(&tree_str, &chars_str.chars().collect()); + let txt = tree_to_string(&mut root); + eprintln!("txt = {:?}", txt); } None => { println!("No file name!"); @@ -176,14 +169,19 @@ fn nodes_at_vec(map: HashMap) -> Vec { fn read_n_bytes(file: &mut File, len: u32) -> Vec { let mut n = 0; let mut out: Vec = Vec::new(); - let mut buffer = [0u8, 1]; - loop { - let _ = file.read_exact(&mut buffer); - out.push(buffer[0]); - n += 8; - if n >= len { - break; + let mut buffer = vec![0u8; 1]; + while n < len { + let read = file.read_exact(&mut buffer); + eprintln!("buffer = {:?}", buffer); + match read { + Ok(_c) => { + out.push(buffer[0]); + } + Err(e) => { + println!("Problem {}", e); + } } + n += 8; } out }