From 1c769a232fd98167481c5578c62dae5b0dbdd82f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Ortega=20Froysa?= Date: Mon, 29 Sep 2025 07:54:34 +0200 Subject: [PATCH] Enable writing to stdout. --- src/main.rs | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/main.rs b/src/main.rs index 15e7a04..76ad636 100644 --- a/src/main.rs +++ b/src/main.rs @@ -26,7 +26,7 @@ use std::env; use std::fs; use std::io; use std::io::Read; -use std::io::Write; +use std::boxed::Box; use std::process; // Read 1KiB of the file at a time. @@ -35,16 +35,21 @@ static BLOCK_SIZE:usize = 1024; fn main() -> io::Result<()> { let args:Vec = env::args().collect(); - if args.len() != 3 { - eprintln!("Usage: {} ", args[0]); + if args.len() < 2 || args.len() > 3 { + eprintln!("Usage: {} [out-file]", args[0]); process::exit(1); } let in_file = fs::File::open(&args[1])?; let mut in_reader = io::BufReader::new(in_file); - let out_file = fs::File::create(&args[2])?; - let mut out_writer = io::BufWriter::new(out_file); + let mut out_writer:Box; + if args.len() == 3 { + let out_file = fs::File::create(&args[2])?; + out_writer = Box::new(io::BufWriter::new(out_file)); + } else { + out_writer = Box::new(io::stdout()); + } let mut read_buf:[u8; BLOCK_SIZE] = [0; BLOCK_SIZE]; let mut last_ch:char = '\0'; @@ -89,5 +94,7 @@ fn main() -> io::Result<()> { } } + out_writer.flush()?; + Ok(()) }