summaryrefslogtreecommitdiffstats
path: root/vendor/filetime/src
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:18:25 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:18:25 +0000
commit5363f350887b1e5b5dd21a86f88c8af9d7fea6da (patch)
tree35ca005eb6e0e9a1ba3bb5dbc033209ad445dc17 /vendor/filetime/src
parentAdding debian version 1.66.0+dfsg1-1. (diff)
downloadrustc-5363f350887b1e5b5dd21a86f88c8af9d7fea6da.tar.xz
rustc-5363f350887b1e5b5dd21a86f88c8af9d7fea6da.zip
Merging upstream version 1.67.1+dfsg1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'vendor/filetime/src')
-rw-r--r--vendor/filetime/src/lib.rs17
-rw-r--r--vendor/filetime/src/unix/mod.rs7
-rw-r--r--vendor/filetime/src/unix/utimensat.rs8
3 files changed, 25 insertions, 7 deletions
diff --git a/vendor/filetime/src/lib.rs b/vendor/filetime/src/lib.rs
index 594d8a8ae..95ea5d4f7 100644
--- a/vendor/filetime/src/lib.rs
+++ b/vendor/filetime/src/lib.rs
@@ -47,7 +47,7 @@ cfg_if::cfg_if! {
} else if #[cfg(windows)] {
#[path = "windows.rs"]
mod imp;
- } else if #[cfg(target_family = "wasm")] {
+ } else if #[cfg(all(target_family = "wasm", not(target_os = "emscripten")))] {
#[path = "wasm.rs"]
mod imp;
} else {
@@ -561,11 +561,18 @@ mod tests {
set_file_times(&path, atime, mtime).unwrap();
let new_mtime = FileTime::from_unix_time(-10_000, 0);
- set_file_times(&path, atime, new_mtime).unwrap();
+ if cfg!(target_os = "aix") {
+ // On AIX, os checks if the unix timestamp is valid.
+ let result = set_file_times(&path, atime, new_mtime);
+ assert!(result.is_err());
+ assert!(result.err().unwrap().kind() == std::io::ErrorKind::InvalidInput);
+ } else {
+ set_file_times(&path, atime, new_mtime).unwrap();
- let metadata = fs::metadata(&path).unwrap();
- let mtime = FileTime::from_last_modification_time(&metadata);
- assert_eq!(mtime, new_mtime);
+ let metadata = fs::metadata(&path).unwrap();
+ let mtime = FileTime::from_last_modification_time(&metadata);
+ assert_eq!(mtime, new_mtime);
+ }
}
#[test]
diff --git a/vendor/filetime/src/unix/mod.rs b/vendor/filetime/src/unix/mod.rs
index 66f9fc219..8b7788837 100644
--- a/vendor/filetime/src/unix/mod.rs
+++ b/vendor/filetime/src/unix/mod.rs
@@ -15,7 +15,8 @@ cfg_if::cfg_if! {
mod utimes;
mod macos;
pub use self::macos::*;
- } else if #[cfg(any(target_os = "solaris",
+ } else if #[cfg(any(target_os = "aix",
+ target_os = "solaris",
target_os = "illumos",
target_os = "emscripten",
target_os = "freebsd",
@@ -46,6 +47,10 @@ fn to_timespec(ft: &Option<FileTime>) -> timespec {
} else if #[cfg(target_os = "haiku")] {
// https://git.haiku-os.org/haiku/tree/headers/posix/sys/stat.h?#n106
const UTIME_OMIT: i64 = 1000000001;
+ } else if #[cfg(target_os = "aix")] {
+ // AIX hasn't disclosed system header files yet.
+ // https://github.com/golang/go/blob/master/src/cmd/vendor/golang.org/x/sys/unix/zerrors_aix_ppc64.go#L1007
+ const UTIME_OMIT: i64 = -3;
} else {
// http://cvsweb.netbsd.org/bsdweb.cgi/src/sys/sys/stat.h?annotate=1.68.30.1
// https://github.com/emscripten-core/emscripten/blob/master/system/include/libc/sys/stat.h#L71
diff --git a/vendor/filetime/src/unix/utimensat.rs b/vendor/filetime/src/unix/utimensat.rs
index 42a1ada2c..c9153a67f 100644
--- a/vendor/filetime/src/unix/utimensat.rs
+++ b/vendor/filetime/src/unix/utimensat.rs
@@ -32,7 +32,7 @@ pub fn set_file_handle_times(
}
pub fn set_symlink_file_times(p: &Path, atime: FileTime, mtime: FileTime) -> io::Result<()> {
- set_times(p, Some(atime), Some(mtime), false)
+ set_times(p, Some(atime), Some(mtime), true)
}
fn set_times(
@@ -42,6 +42,12 @@ fn set_times(
symlink: bool,
) -> io::Result<()> {
let flags = if symlink {
+ if cfg!(target_os = "emscripten") {
+ return Err(io::Error::new(
+ io::ErrorKind::Other,
+ "emscripten does not support utimensat for symlinks",
+ ));
+ }
libc::AT_SYMLINK_NOFOLLOW
} else {
0