@@ -13,7 +13,7 @@ use jiff::tz::{TimeZone, TimeZoneDatabase};
1313use jiff:: { Timestamp , Zoned } ;
1414use std:: collections:: HashMap ;
1515use std:: fs:: File ;
16- use std:: io:: { BufRead , BufReader } ;
16+ use std:: io:: { BufRead , BufReader , BufWriter , Write } ;
1717use std:: path:: PathBuf ;
1818use std:: sync:: OnceLock ;
1919use uucore:: display:: Quotable ;
@@ -428,24 +428,31 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> {
428428 } ;
429429
430430 let format_string = make_format_string ( & settings) ;
431+ let mut stdout = BufWriter :: new ( std:: io:: stdout ( ) . lock ( ) ) ;
431432
432433 // Format all the dates
433434 for date in dates {
434435 match date {
435436 // TODO: Switch to lenient formatting.
436437 Ok ( date) => match strtime:: format ( format_string, & date) {
437- Ok ( s) => println ! ( "{s}" ) ,
438+ Ok ( s) => writeln ! ( stdout, "{s}" ) . map_err ( |e| {
439+ USimpleError :: new ( 1 , translate ! ( "date-error-write" , "error" => e) )
440+ } ) ?,
438441 Err ( e) => {
442+ let _ = stdout. flush ( ) ;
439443 return Err ( USimpleError :: new (
440444 1 ,
441445 translate ! ( "date-error-invalid-format" , "format" => format_string, "error" => e) ,
442446 ) ) ;
443447 }
444448 } ,
445- Err ( ( input, _err) ) => show ! ( USimpleError :: new(
446- 1 ,
447- translate!( "date-error-invalid-date" , "date" => input)
448- ) ) ,
449+ Err ( ( input, _err) ) => {
450+ let _ = stdout. flush ( ) ;
451+ show ! ( USimpleError :: new(
452+ 1 ,
453+ translate!( "date-error-invalid-date" , "date" => input)
454+ ) ) ;
455+ }
449456 }
450457 }
451458
0 commit comments