From fc37a6ab2ed9429afde500286577eaaa21535143 Mon Sep 17 00:00:00 2001 From: Salem Talha Date: Mon, 15 Sep 2014 04:46:04 -0400 Subject: [PATCH 1/8] fix for platform inconsistency in creation time --- src/libnative/io/file_unix.rs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/libnative/io/file_unix.rs b/src/libnative/io/file_unix.rs index bc1d877dc547b..04700f9498d81 100644 --- a/src/libnative/io/file_unix.rs +++ b/src/libnative/io/file_unix.rs @@ -455,11 +455,22 @@ fn mkstat(stat: &libc::stat) -> rtio::FileStat { #[cfg(target_os = "linux")] #[cfg(target_os = "android")] fn gen(_stat: &libc::stat) -> u64 { 0 } + #[cfg(not(target_os = "linux"), not(target_os = "android"))] + fn created(stat: &libc::stat) -> u64 { mktime(stat.st_ctime as u64, stat.st_ctime_nsec as u64) } + #[cfg(target_os = "linux")] #[cfg(target_os = "android")] + fn created(_stat: &libc::stat) -> u64 { 0 } + + #[cfg(not(target_os = "linux"), not(target_os = "android"))] + fn changed(_stat: &libc::stat) -> u64 { 0 } + #[cfg(target_os = "linux")] #[cfg(target_os = "android")] + fn changed(stat: &libc::stat) -> u64 { mktime(stat.st_ctime as u64, stat.st_ctime_nsec as u64) } + rtio::FileStat { size: stat.st_size as u64, kind: stat.st_mode as u64, perm: stat.st_mode as u64, - created: mktime(stat.st_ctime as u64, stat.st_ctime_nsec as u64), + created: created(stat), + changed: changed(stat), modified: mktime(stat.st_mtime as u64, stat.st_mtime_nsec as u64), accessed: mktime(stat.st_atime as u64, stat.st_atime_nsec as u64), device: stat.st_dev as u64, From 0e304f14b2bb0eed6638bfb64fbbaf0ee2b0c9cc Mon Sep 17 00:00:00 2001 From: Salem Talha Date: Mon, 15 Sep 2014 11:22:55 -0400 Subject: [PATCH 2/8] add changed member to Filestat struct --- src/librustrt/rtio.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/librustrt/rtio.rs b/src/librustrt/rtio.rs index 1afd88edbc287..5842c9fe9f870 100644 --- a/src/librustrt/rtio.rs +++ b/src/librustrt/rtio.rs @@ -417,6 +417,7 @@ pub struct FileStat { pub kind: u64, pub perm: u64, pub created: u64, + pub changed: u64, pub modified: u64, pub accessed: u64, pub device: u64, From 956bacc16b796957206e9b1e5f6f564cc433f8bc Mon Sep 17 00:00:00 2001 From: Salem Talha Date: Mon, 15 Sep 2014 12:02:05 -0400 Subject: [PATCH 3/8] Changed platform targetting to be more accurate --- src/libnative/io/file_unix.rs | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/libnative/io/file_unix.rs b/src/libnative/io/file_unix.rs index 04700f9498d81..78a145127e597 100644 --- a/src/libnative/io/file_unix.rs +++ b/src/libnative/io/file_unix.rs @@ -455,15 +455,19 @@ fn mkstat(stat: &libc::stat) -> rtio::FileStat { #[cfg(target_os = "linux")] #[cfg(target_os = "android")] fn gen(_stat: &libc::stat) -> u64 { 0 } - #[cfg(not(target_os = "linux"), not(target_os = "android"))] - fn created(stat: &libc::stat) -> u64 { mktime(stat.st_ctime as u64, stat.st_ctime_nsec as u64) } - #[cfg(target_os = "linux")] #[cfg(target_os = "android")] + #[cfg(target_os = "linux")] fn created(_stat: &libc::stat) -> u64 { 0 } + #[cfg(target_os = "windows")] + fn created(stat: &libc::stat) -> u64 { mktime(stat.st_ctime as u64, stat.st_ctime_nsec as u64) } + #[cfg(target_os = "macos", target_arch = "x86_64")] + fn created(stat: &libc::stat) -> u64 { mktime(stat.st_birthtime as u64, stat.st_birthtime_nsec as u64) } + #[cfg(target_os = "freebsd")] + fn created(stat: &libc::stat) -> u64 { mktime(stat.st_birthtime as u64, stat.st_birthtime_nsec as u64) } - #[cfg(not(target_os = "linux"), not(target_os = "android"))] + #[cfg(target_family = "unix")] + fn created(stat: &libc::stat) -> u64 { mktime(stat.st_ctime as u64, stat.st_ctime_nsec as u64) } + #[cfg(target_os = "windows")] fn changed(_stat: &libc::stat) -> u64 { 0 } - #[cfg(target_os = "linux")] #[cfg(target_os = "android")] - fn changed(stat: &libc::stat) -> u64 { mktime(stat.st_ctime as u64, stat.st_ctime_nsec as u64) } rtio::FileStat { size: stat.st_size as u64, From 6caa237db4409d259b6405f4a6ecd35ec463a937 Mon Sep 17 00:00:00 2001 From: Salem Talha Date: Mon, 15 Sep 2014 12:20:29 -0400 Subject: [PATCH 4/8] fix mistake --- src/libnative/io/file_unix.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libnative/io/file_unix.rs b/src/libnative/io/file_unix.rs index 78a145127e597..7d1e52d8bfa72 100644 --- a/src/libnative/io/file_unix.rs +++ b/src/libnative/io/file_unix.rs @@ -465,7 +465,7 @@ fn mkstat(stat: &libc::stat) -> rtio::FileStat { fn created(stat: &libc::stat) -> u64 { mktime(stat.st_birthtime as u64, stat.st_birthtime_nsec as u64) } #[cfg(target_family = "unix")] - fn created(stat: &libc::stat) -> u64 { mktime(stat.st_ctime as u64, stat.st_ctime_nsec as u64) } + fn changed(stat: &libc::stat) -> u64 { mktime(stat.st_ctime as u64, stat.st_ctime_nsec as u64) } #[cfg(target_os = "windows")] fn changed(_stat: &libc::stat) -> u64 { 0 } From d6cacd38cc0fdf795fdb751e0c84d659fac14926 Mon Sep 17 00:00:00 2001 From: Salem Talha Date: Mon, 15 Sep 2014 12:22:42 -0400 Subject: [PATCH 5/8] Changed structs where necessary --- src/libstd/io/fs.rs | 3 ++- src/libstd/io/mod.rs | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/libstd/io/fs.rs b/src/libstd/io/fs.rs index b7b7d1fb93d1a..a5b765c5021f9 100644 --- a/src/libstd/io/fs.rs +++ b/src/libstd/io/fs.rs @@ -374,7 +374,7 @@ fn from_rtio(s: rtio::FileStat) -> FileStat { type Mode = libc::mode_t; let rtio::FileStat { - size, kind, perm, created, modified, + size, kind, perm, created, changed, modified, accessed, device, inode, rdev, nlink, uid, gid, blksize, blocks, flags, gen } = s; @@ -391,6 +391,7 @@ fn from_rtio(s: rtio::FileStat) -> FileStat { }, perm: FilePermission::from_bits_truncate(perm as u32), created: created, + changed: changed, modified: modified, accessed: accessed, unstable: UnstableFileStat { diff --git a/src/libstd/io/mod.rs b/src/libstd/io/mod.rs index 7a2bcab8706da..58633ca966a92 100644 --- a/src/libstd/io/mod.rs +++ b/src/libstd/io/mod.rs @@ -1748,6 +1748,9 @@ pub struct FileStat { /// The time that the file was created at, in platform-dependent /// milliseconds pub created: u64, + /// The time that the file was changed (in metadata or content) + /// in platform-dependent milliseconds + pub changed: u64, /// The time that this file was last modified, in platform-dependent /// milliseconds pub modified: u64, From 53178835c4e0b0313d3a9c1a7409aa561bb073a2 Mon Sep 17 00:00:00 2001 From: Salem Talha Date: Mon, 15 Sep 2014 12:30:30 -0400 Subject: [PATCH 6/8] fix line length --- src/libnative/io/file_unix.rs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/libnative/io/file_unix.rs b/src/libnative/io/file_unix.rs index 7d1e52d8bfa72..e326badc4ab88 100644 --- a/src/libnative/io/file_unix.rs +++ b/src/libnative/io/file_unix.rs @@ -460,10 +460,13 @@ fn mkstat(stat: &libc::stat) -> rtio::FileStat { #[cfg(target_os = "windows")] fn created(stat: &libc::stat) -> u64 { mktime(stat.st_ctime as u64, stat.st_ctime_nsec as u64) } #[cfg(target_os = "macos", target_arch = "x86_64")] - fn created(stat: &libc::stat) -> u64 { mktime(stat.st_birthtime as u64, stat.st_birthtime_nsec as u64) } + fn created(stat: &libc::stat) -> u64 { + mktime(stat.st_birthtime as u64, stat.st_birthtime_nsec as u64) + } #[cfg(target_os = "freebsd")] - fn created(stat: &libc::stat) -> u64 { mktime(stat.st_birthtime as u64, stat.st_birthtime_nsec as u64) } - + fn created(stat: &libc::stat) -> u64 { + mktime(stat.st_birthtime as u64, stat.st_birthtime_nsec as u64) + } #[cfg(target_family = "unix")] fn changed(stat: &libc::stat) -> u64 { mktime(stat.st_ctime as u64, stat.st_ctime_nsec as u64) } #[cfg(target_os = "windows")] From 0fe7fd0507a0266902d3a848edc2c43daf01071b Mon Sep 17 00:00:00 2001 From: Salem Talha Date: Mon, 15 Sep 2014 13:28:53 -0400 Subject: [PATCH 7/8] removed extra whitespace --- src/libnative/io/file_unix.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libnative/io/file_unix.rs b/src/libnative/io/file_unix.rs index e326badc4ab88..4fe39d9956f2c 100644 --- a/src/libnative/io/file_unix.rs +++ b/src/libnative/io/file_unix.rs @@ -460,11 +460,11 @@ fn mkstat(stat: &libc::stat) -> rtio::FileStat { #[cfg(target_os = "windows")] fn created(stat: &libc::stat) -> u64 { mktime(stat.st_ctime as u64, stat.st_ctime_nsec as u64) } #[cfg(target_os = "macos", target_arch = "x86_64")] - fn created(stat: &libc::stat) -> u64 { + fn created(stat: &libc::stat) -> u64 { mktime(stat.st_birthtime as u64, stat.st_birthtime_nsec as u64) } #[cfg(target_os = "freebsd")] - fn created(stat: &libc::stat) -> u64 { + fn created(stat: &libc::stat) -> u64 { mktime(stat.st_birthtime as u64, stat.st_birthtime_nsec as u64) } #[cfg(target_family = "unix")] From ce6849ec290182055ea671fee5424ceaea815b9b Mon Sep 17 00:00:00 2001 From: Salem Talha Date: Mon, 15 Sep 2014 13:30:43 -0400 Subject: [PATCH 8/8] add changed field to librustuv struct --- src/librustuv/file.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/librustuv/file.rs b/src/librustuv/file.rs index f42f42d211160..d4cad94d80b0e 100644 --- a/src/librustuv/file.rs +++ b/src/librustuv/file.rs @@ -283,6 +283,7 @@ impl FsRequest { kind: stat.st_mode as u64, perm: stat.st_mode as u64, created: to_msec(stat.st_birthtim), + changed: to_msec(stat.st_ctim), modified: to_msec(stat.st_mtim), accessed: to_msec(stat.st_atim), device: stat.st_dev as u64,