diff --git a/mount/redox/resource.rs b/mount/redox/resource.rs index e2477a3501029417ebdbe0313d351eef28422823..c7f0a29701bd8b115e016a113b088abb08c639f3 100644 --- a/mount/redox/resource.rs +++ b/mount/redox/resource.rs @@ -1,6 +1,7 @@ use redoxfs::FileSystem; use std::cmp::{min, max}; +use std::time::{SystemTime, UNIX_EPOCH}; use syscall::error::{Error, Result, EBADF, EINVAL}; use syscall::flag::{O_ACCMODE, O_RDONLY, O_WRONLY, O_RDWR, F_GETFL, F_SETFL}; @@ -152,7 +153,8 @@ impl Resource for FileResource { fn write(&mut self, buf: &[u8], fs: &mut FileSystem) -> Result<usize> { if self.flags & O_ACCMODE == O_RDWR || self.flags & O_ACCMODE == O_WRONLY { - let count = fs.write_node(self.block, self.seek, buf)?; + let mtime = SystemTime::now().duration_since(UNIX_EPOCH).unwrap(); + let count = fs.write_node(self.block, self.seek, buf, mtime.as_secs(), mtime.subsec_nanos())?; self.seek += count as u64; Ok(count) } else { diff --git a/mount/redox/scheme.rs b/mount/redox/scheme.rs index dcde8448198135034c7b0c4d09109c7e1aead572..eb144c5a6ed1c38487adb5559d91e234626086ea 100644 --- a/mount/redox/scheme.rs +++ b/mount/redox/scheme.rs @@ -6,6 +6,7 @@ use std::cell::RefCell; use std::collections::BTreeMap; use std::str; use std::sync::atomic::{AtomicUsize, Ordering}; +use std::time::{SystemTime, UNIX_EPOCH}; use syscall::data::{Stat, StatVfs}; use syscall::error::{Error, Result, EACCES, EEXIST, EISDIR, ENOTDIR, EPERM, ENOENT, EBADF, ELOOP, EINVAL}; @@ -262,7 +263,8 @@ impl Scheme for FileScheme { Node::MODE_FILE }; - let mut node = fs.create_node(mode_type | (flags as u16 & Node::MODE_PERM), &last_part, parent.0)?; + let ctime = SystemTime::now().duration_since(UNIX_EPOCH).unwrap(); + let mut node = fs.create_node(mode_type | (flags as u16 & Node::MODE_PERM), &last_part, parent.0, ctime.as_secs(), ctime.subsec_nanos())?; node.1.uid = uid; node.1.gid = gid; fs.write_at(node.0, &node.1)?;