stdout not used or locked unless verbosity >= 0

This commit is contained in:
ascendforever 2024-10-13 12:03:52 -04:00
parent 54824b7d83
commit 92cf7b6f83

View file

@ -215,20 +215,29 @@ fn run(paths: Vec<PathBuf>, cfg: &Config) -> Result<(), Box<dyn std::error::Erro
} }
registry.retain(|_,files| files.len() >= 2); registry.retain(|_,files| files.len() >= 2);
let mut stdout_buffer = if cfg.verbosity >= 0 {
let stdout = std::io::stdout(); let stdout = std::io::stdout();
let mut stdout_buffer = std::io::BufWriter::new(stdout.lock()); let stdout_buffer = std::io::BufWriter::new(stdout.lock());
Some(stdout_buffer)
} else {
None
};
if cfg.verbosity > 0 { if let Some(stdout_buffer) = &mut stdout_buffer {
if cfg.verbosity >= 0 {
writeln!(stdout_buffer, "Considering {} total files for duplicates", registry.iter().map(|(_,files)| files.len()).sum::<usize>()).unwrap(); writeln!(stdout_buffer, "Considering {} total files for duplicates", registry.iter().map(|(_,files)| files.len()).sum::<usize>()).unwrap();
} }
}
for (fsize, mut files) in registry { for (fsize, mut files) in registry {
if files.len() > 8 { if files.len() > 8 {
files.sort_by_key(|path| path.file_name().unwrap_or_default().to_string_lossy().to_string()); files.sort_by_key(|path| path.file_name().unwrap_or_default().to_string_lossy().to_string());
} }
if let Some(stdout_buffer) = &mut stdout_buffer {
if cfg.verbosity > 1 { if cfg.verbosity > 1 {
writeln!(stdout_buffer, "Considering {} files of size {} for duplicates", files.len(), fsize).unwrap(); writeln!(stdout_buffer, "Considering {} files of size {} for duplicates", files.len(), fsize).unwrap();
} }
}
for i in (0..files.len()).rev() { for i in (0..files.len()).rev() {
let f1 = &files[i]; let f1 = &files[i];
for j in (0..i).rev() { for j in (0..i).rev() {
@ -240,6 +249,7 @@ fn run(paths: Vec<PathBuf>, cfg: &Config) -> Result<(), Box<dyn std::error::Erro
continue continue
} }
} }
if let Some(stdout_buffer) = &mut stdout_buffer {
if cfg.verbosity >= 0 { if cfg.verbosity >= 0 {
writeln!(stdout_buffer, "hardlinked {}", format_pair(f1, f2, cfg)).unwrap(); writeln!(stdout_buffer, "hardlinked {}", format_pair(f1, f2, cfg)).unwrap();
} }
@ -247,6 +257,7 @@ fn run(paths: Vec<PathBuf>, cfg: &Config) -> Result<(), Box<dyn std::error::Erro
} }
} }
} }
}
Ok(()) Ok(())
} }