From af64bde92b5f29cc1cb6519e29aae821b6afcf23 Mon Sep 17 00:00:00 2001 From: Roy Ivy III Date: Sun, 11 Jun 2023 19:45:06 -0500 Subject: [PATCH] fix/touch ~ time crate usage errors --- src/uu/touch/src/touch.rs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/uu/touch/src/touch.rs b/src/uu/touch/src/touch.rs index d3d4a08c5..f4784f155 100644 --- a/src/uu/touch/src/touch.rs +++ b/src/uu/touch/src/touch.rs @@ -85,12 +85,8 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { (Some(reference), Some(date)) => { let (atime, mtime) = stat(Path::new(reference), !matches.get_flag(options::NO_DEREF))?; if let Ok(offset) = parse_datetime::from_str(date) { - let mut seconds = offset.whole_seconds(); - let mut nanos = offset.subsec_nanoseconds(); - if nanos < 0 { - nanos += 1_000_000_000; - seconds -= 1; - } + let seconds = offset.num_seconds(); + let nanos = offset.num_nanoseconds().unwrap_or(0) % 1_000_000_000; let ref_atime_secs = atime.unix_seconds(); let ref_atime_nanos = atime.nanoseconds(); @@ -447,7 +443,11 @@ fn parse_date(s: &str) -> UResult { if let Ok(duration) = parse_datetime::from_str(s) { let now_local = time::OffsetDateTime::now_local().unwrap(); - let diff = now_local.checked_add(duration).unwrap(); + let diff = now_local + .checked_add(time::Duration::nanoseconds( + duration.num_nanoseconds().unwrap(), + )) + .unwrap(); return Ok(local_dt_to_filetime(diff)); }