diff options
author | Ćukasz Czerniawski <33061335+lczerniawski@users.noreply.github.com> | 2024-11-13 05:35:04 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-11-13 13:35:04 +0900 |
commit | 7becd83a3828b35331d0fcb82c64146e520f154b (patch) | |
tree | edab8904c24802a3163427d8df9b41aa3cc4c3d1 /ext/io | |
parent | 43812ee8ff0eb2584c7beb18639da14d96d06817 (diff) |
feat(ext/fs): add ctime to Deno.stats and use it in node compat layer (#24801)
This PR fixes #24453, by introducing a ctime (using ctime for UNIX and
ChangeTime for Windows) to Deno.stats.
Co-authored-by: Yoshiya Hinosawa <stibium121@gmail.com>
Diffstat (limited to 'ext/io')
-rw-r--r-- | ext/io/fs.rs | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/ext/io/fs.rs b/ext/io/fs.rs index 885426520..7ef02315b 100644 --- a/ext/io/fs.rs +++ b/ext/io/fs.rs @@ -94,6 +94,7 @@ pub struct FsStat { pub mtime: Option<u64>, pub atime: Option<u64>, pub birthtime: Option<u64>, + pub ctime: Option<u64>, pub dev: u64, pub ino: u64, @@ -153,6 +154,16 @@ impl FsStat { } } + #[inline(always)] + fn get_ctime(ctime_or_0: i64) -> Option<u64> { + if ctime_or_0 > 0 { + // ctime return seconds since epoch, but we need milliseconds + return Some(ctime_or_0 as u64 * 1000); + } + + None + } + Self { is_file: metadata.is_file(), is_directory: metadata.is_dir(), @@ -162,6 +173,7 @@ impl FsStat { mtime: to_msec(metadata.modified()), atime: to_msec(metadata.accessed()), birthtime: to_msec(metadata.created()), + ctime: get_ctime(unix_or_zero!(ctime)), dev: unix_or_zero!(dev), ino: unix_or_zero!(ino), |