]> git.gsnw.org Git - EnergyLogger4000-Reader.git/commitdiff
Convert path tilde to env homedir
authorGerman Service Network <support@gsnw.de>
Sat, 1 Nov 2025 06:30:05 +0000 (07:30 +0100)
committerGerman Service Network <support@gsnw.de>
Sat, 1 Nov 2025 06:30:05 +0000 (07:30 +0100)
README.md
src/main.rs

index eef281305a8cb900eab4b40e51d48eaedb265230..b753dd381502f92d8eb9bd467a7e2a945def0fab 100644 (file)
--- 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
index 05effba5dfc7c917b63e3ab33b6c6447b4862837..e40c592984f9ac600f73622679fe6d94e2a031be 100644 (file)
@@ -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();