diff --git a/src/uu/base32/src/base_common.rs b/src/uu/base32/src/base_common.rs index f6db40692..3f1436fb2 100644 --- a/src/uu/base32/src/base_common.rs +++ b/src/uu/base32/src/base_common.rs @@ -8,7 +8,7 @@ // that was distributed with this source code. use std::fs::File; -use std::io::{stdin, BufReader, Read}; +use std::io::{stdin, stdout, BufReader, Read, Write}; use std::path::Path; use uucore::encoding::{wrap_print, Data, Format}; @@ -85,7 +85,12 @@ fn handle_input( wrap_print(&data, encoded); } else { match data.decode() { - Ok(s) => print!("{}", String::from_utf8(s).unwrap()), + Ok(s) => { + if stdout().write_all(&s).is_err() { + // on windows console, writing invalid utf8 returns an error + crash!(1, "Cannot write non-utf8 data"); + } + } Err(_) => crash!(1, "invalid input"), } } diff --git a/src/uu/base64/src/base_common.rs b/src/uu/base64/src/base_common.rs index f6db40692..3f1436fb2 100644 --- a/src/uu/base64/src/base_common.rs +++ b/src/uu/base64/src/base_common.rs @@ -8,7 +8,7 @@ // that was distributed with this source code. use std::fs::File; -use std::io::{stdin, BufReader, Read}; +use std::io::{stdin, stdout, BufReader, Read, Write}; use std::path::Path; use uucore::encoding::{wrap_print, Data, Format}; @@ -85,7 +85,12 @@ fn handle_input( wrap_print(&data, encoded); } else { match data.decode() { - Ok(s) => print!("{}", String::from_utf8(s).unwrap()), + Ok(s) => { + if stdout().write_all(&s).is_err() { + // on windows console, writing invalid utf8 returns an error + crash!(1, "Cannot write non-utf8 data"); + } + } Err(_) => crash!(1, "invalid input"), } }