diff options
| author | Josh Stone <jistone@redhat.com> | 2022-03-09 17:05:16 -0800 |
|---|---|---|
| committer | Josh Stone <jistone@redhat.com> | 2022-05-06 08:50:53 -0700 |
| commit | fec4818fdb40c82679f57fa7f26fcddc1a874c13 (patch) | |
| tree | 4c06a6e5b385e327257f7f7fe8f8746f422622d1 /library/std/src/os/linux | |
| parent | 97b49a0cc5bea5845dc89c1598a32d7f9fea985a (diff) | |
Use statx's 64-bit times on 32-bit linux-gnu
Diffstat (limited to 'library/std/src/os/linux')
| -rw-r--r-- | library/std/src/os/linux/fs.rs | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/library/std/src/os/linux/fs.rs b/library/std/src/os/linux/fs.rs index 9d18ccbeb24..23267c44685 100644 --- a/library/std/src/os/linux/fs.rs +++ b/library/std/src/os/linux/fs.rs @@ -356,19 +356,34 @@ impl MetadataExt for Metadata { self.as_inner().as_inner().st_size as u64 } fn st_atime(&self) -> i64 { - self.as_inner().as_inner().st_atime as i64 + let file_attr = self.as_inner(); + #[cfg(all(target_env = "gnu", target_pointer_width = "32"))] + if let Some(atime) = file_attr.stx_atime() { + return atime.tv_sec; + } + file_attr.as_inner().st_atime as i64 } fn st_atime_nsec(&self) -> i64 { self.as_inner().as_inner().st_atime_nsec as i64 } fn st_mtime(&self) -> i64 { - self.as_inner().as_inner().st_mtime as i64 + let file_attr = self.as_inner(); + #[cfg(all(target_env = "gnu", target_pointer_width = "32"))] + if let Some(mtime) = file_attr.stx_mtime() { + return mtime.tv_sec; + } + file_attr.as_inner().st_mtime as i64 } fn st_mtime_nsec(&self) -> i64 { self.as_inner().as_inner().st_mtime_nsec as i64 } fn st_ctime(&self) -> i64 { - self.as_inner().as_inner().st_ctime as i64 + let file_attr = self.as_inner(); + #[cfg(all(target_env = "gnu", target_pointer_width = "32"))] + if let Some(ctime) = file_attr.stx_ctime() { + return ctime.tv_sec; + } + file_attr.as_inner().st_ctime as i64 } fn st_ctime_nsec(&self) -> i64 { self.as_inner().as_inner().st_ctime_nsec as i64 |
