diff options
| author | beetrees <b@beetr.ee> | 2023-03-30 15:15:42 +0100 |
|---|---|---|
| committer | beetrees <b@beetr.ee> | 2023-04-08 19:33:28 +0100 |
| commit | d5304737448b82e0535fa83e6d661f8740d8cdd3 (patch) | |
| tree | 6ea46d4adadc5c2f7dc38a9dc71ef9383e5f8253 /library/std/src/sys/unix/time.rs | |
| parent | 4f87a63edcef5c8c06229ff13e0f64f427537378 (diff) | |
| download | rust-d5304737448b82e0535fa83e6d661f8740d8cdd3.tar.gz rust-d5304737448b82e0535fa83e6d661f8740d8cdd3.zip | |
Add 64-bit `time_t` support on 32-bit glibc Linux to `set_times`
Diffstat (limited to 'library/std/src/sys/unix/time.rs')
| -rw-r--r-- | library/std/src/sys/unix/time.rs | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/library/std/src/sys/unix/time.rs b/library/std/src/sys/unix/time.rs index 6f53583409d..a61d926ca8b 100644 --- a/library/std/src/sys/unix/time.rs +++ b/library/std/src/sys/unix/time.rs @@ -166,6 +166,16 @@ impl Timespec { } self.to_timespec() } + + #[cfg(all( + target_os = "linux", + target_env = "gnu", + target_pointer_width = "32", + not(target_arch = "riscv32") + ))] + pub fn to_timespec64(&self) -> __timespec64 { + __timespec64::new(self.tv_sec, self.tv_nsec.0 as _) + } } impl From<libc::timespec> for Timespec { @@ -196,6 +206,18 @@ pub(in crate::sys::unix) struct __timespec64 { target_pointer_width = "32", not(target_arch = "riscv32") ))] +impl __timespec64 { + pub(in crate::sys::unix) fn new(tv_sec: i64, tv_nsec: i32) -> Self { + Self { tv_sec, tv_nsec, _padding: 0 } + } +} + +#[cfg(all( + target_os = "linux", + target_env = "gnu", + target_pointer_width = "32", + not(target_arch = "riscv32") +))] impl From<__timespec64> for Timespec { fn from(t: __timespec64) -> Timespec { Timespec::new(t.tv_sec, t.tv_nsec.into()) |
