@@ -204,81 +204,81 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> {
204204 } ;
205205
206206 return set_system_datetime ( date) ;
207+ }
208+
209+ // Get the current time, either in the local time zone or UTC.
210+ let now = if settings. utc {
211+ Timestamp :: now ( ) . to_zoned ( TimeZone :: UTC )
207212 } else {
208- // Get the current time, either in the local time zone or UTC.
209- let now = if settings. utc {
210- Timestamp :: now ( ) . to_zoned ( TimeZone :: UTC )
211- } else {
212- Zoned :: now ( )
213- } ;
213+ Zoned :: now ( )
214+ } ;
214215
215- // Iterate over all dates - whether it's a single date or a file.
216- let dates: Box < dyn Iterator < Item = _ > > = match settings. date_source {
217- DateSource :: Custom ( ref input) => {
218- let date = parse_date ( input) ;
219- let iter = std:: iter:: once ( date) ;
220- Box :: new ( iter)
221- }
222- DateSource :: Human ( relative_time) => {
223- // Double check the result is overflow or not of the current_time + relative_time
224- // it may cause a panic of chrono::datetime::DateTime add
225- match now. checked_add ( relative_time) {
226- Ok ( date) => {
227- let iter = std:: iter:: once ( Ok ( date) ) ;
228- Box :: new ( iter)
229- }
230- Err ( _) => {
231- return Err ( USimpleError :: new (
232- 1 ,
233- format ! ( "invalid date {relative_time}" ) ,
234- ) ) ;
235- }
216+ // Iterate over all dates - whether it's a single date or a file.
217+ let dates: Box < dyn Iterator < Item = _ > > = match settings. date_source {
218+ DateSource :: Custom ( ref input) => {
219+ let date = parse_date ( input) ;
220+ let iter = std:: iter:: once ( date) ;
221+ Box :: new ( iter)
222+ }
223+ DateSource :: Human ( relative_time) => {
224+ // Double check the result is overflow or not of the current_time + relative_time
225+ // it may cause a panic of chrono::datetime::DateTime add
226+ match now. checked_add ( relative_time) {
227+ Ok ( date) => {
228+ let iter = std:: iter:: once ( Ok ( date) ) ;
229+ Box :: new ( iter)
236230 }
237- }
238- DateSource :: Stdin => {
239- let lines = BufReader :: new ( std:: io:: stdin ( ) ) . lines ( ) ;
240- let iter = lines. map_while ( Result :: ok) . map ( parse_date) ;
241- Box :: new ( iter)
242- }
243- DateSource :: File ( ref path) => {
244- if path. is_dir ( ) {
231+ Err ( _) => {
245232 return Err ( USimpleError :: new (
246- 2 ,
247- format ! ( "expected file, got directory {}" , path . quote ( ) ) ,
233+ 1 ,
234+ format ! ( "invalid date {relative_time}" ) ,
248235 ) ) ;
249236 }
250- let file = File :: open ( path)
251- . map_err_context ( || path. as_os_str ( ) . to_string_lossy ( ) . to_string ( ) ) ?;
252- let lines = BufReader :: new ( file) . lines ( ) ;
253- let iter = lines. map_while ( Result :: ok) . map ( parse_date) ;
254- Box :: new ( iter)
255237 }
256- DateSource :: Now => {
257- let iter = std:: iter:: once ( Ok ( now) ) ;
258- Box :: new ( iter)
238+ }
239+ DateSource :: Stdin => {
240+ let lines = BufReader :: new ( std:: io:: stdin ( ) ) . lines ( ) ;
241+ let iter = lines. map_while ( Result :: ok) . map ( parse_date) ;
242+ Box :: new ( iter)
243+ }
244+ DateSource :: File ( ref path) => {
245+ if path. is_dir ( ) {
246+ return Err ( USimpleError :: new (
247+ 2 ,
248+ format ! ( "expected file, got directory {}" , path. quote( ) ) ,
249+ ) ) ;
259250 }
260- } ;
251+ let file = File :: open ( path)
252+ . map_err_context ( || path. as_os_str ( ) . to_string_lossy ( ) . to_string ( ) ) ?;
253+ let lines = BufReader :: new ( file) . lines ( ) ;
254+ let iter = lines. map_while ( Result :: ok) . map ( parse_date) ;
255+ Box :: new ( iter)
256+ }
257+ DateSource :: Now => {
258+ let iter = std:: iter:: once ( Ok ( now) ) ;
259+ Box :: new ( iter)
260+ }
261+ } ;
261262
262- let format_string = make_format_string ( & settings) ;
263-
264- // Format all the dates
265- for date in dates {
266- match date {
267- // TODO: Switch to lenient formatting.
268- Ok ( date) => match strtime:: format ( format_string, & date) {
269- Ok ( s) => println ! ( "{s}" ) ,
270- Err ( e) => {
271- return Err ( USimpleError :: new (
272- 1 ,
273- format ! ( "invalid format {} ({e})" , format_string) ,
274- ) ) ;
275- }
276- } ,
277- Err ( ( input, _err) ) => show ! ( USimpleError :: new(
278- 1 ,
279- format!( "invalid date {}" , input. quote( ) )
280- ) ) ,
281- }
263+ let format_string = make_format_string ( & settings) ;
264+
265+ // Format all the dates
266+ for date in dates {
267+ match date {
268+ // TODO: Switch to lenient formatting.
269+ Ok ( date) => match strtime:: format ( format_string, & date) {
270+ Ok ( s) => println ! ( "{s}" ) ,
271+ Err ( e) => {
272+ return Err ( USimpleError :: new (
273+ 1 ,
274+ format ! ( "invalid format {format_string} ({e})" ) ,
275+ ) ) ;
276+ }
277+ } ,
278+ Err ( ( input, _err) ) => show ! ( USimpleError :: new(
279+ 1 ,
280+ format!( "invalid date {}" , input. quote( ) )
281+ ) ) ,
282282 }
283283 }
284284
0 commit comments