From 02f7ec027e04740b5f52db78cf1a2ef727dbdb40 Mon Sep 17 00:00:00 2001 From: German Service Network Date: Sat, 1 Nov 2025 07:30:05 +0100 Subject: [PATCH] Convert path tilde to env homedir --- README.md | 4 ---- src/main.rs | 13 ++++++++++++- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index eef2813..b753dd3 100644 --- a/README.md +++ b/README.md @@ -34,10 +34,6 @@ Or a complete directory EnergyLogger4000-Reader -d /mnt/ ``` -# Known bugs - -* An absolute path must always be specified. Unfortunately, a path such as `~/B08F9CD2.BIN` or `~/mypath/` does not work. - # Reference * http://wiki.td-er.nl/index.php?title=Energy_Logger_3500 \ No newline at end of file diff --git a/src/main.rs b/src/main.rs index 05effba..e40c592 100644 --- a/src/main.rs +++ b/src/main.rs @@ -54,6 +54,17 @@ fn print_version() { println!("{} - v{}", PROGRAM, VERSION); } +fn convert_tilde_homedir(path: &str) -> std::path::PathBuf { + if path.starts_with("~") { + let home_dir = env::var("HOME").expect("HOME environment variable not set"); + let mut extended_path = std::path::PathBuf::from(home_dir); + extended_path.push(&path[2..]); + extended_path + }else{ + std::path::PathBuf::from(path) + } +} + #[allow(dead_code)] fn print_debug_buffer(buffer: &[u8]) { println!("All bytes from the file:"); @@ -310,7 +321,7 @@ fn main() -> io::Result<()> { return Ok(()); } - let entries = fs::read_dir(load_directory).unwrap(); + let entries = fs::read_dir(convert_tilde_homedir(&load_directory)).unwrap(); for entry in entries { let entry = entry.unwrap(); -- 2.43.0