From a7d2944d2e1d8b7ebbc2f34bbc2db108ac52c304 Mon Sep 17 00:00:00 2001 From: Aaron Jacobs Date: Fri, 6 Mar 2015 06:04:51 +1100 Subject: [PATCH] Support changing mtime. --- samples/memfs/fs.go | 2 +- samples/memfs/inode.go | 11 ++++++++++- samples/memfs/memfs_test.go | 2 +- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/samples/memfs/fs.go b/samples/memfs/fs.go index 49a1f69..4a752a6 100644 --- a/samples/memfs/fs.go +++ b/samples/memfs/fs.go @@ -281,7 +281,7 @@ func (fs *memFS) SetInodeAttributes( defer inode.mu.Unlock() // Handle the request. - inode.SetAttributes(req.Size, req.Mode) + inode.SetAttributes(req.Size, req.Mode, req.Mtime) // Fill in the response. resp.Attributes = inode.attributes diff --git a/samples/memfs/inode.go b/samples/memfs/inode.go index 0ea3d5b..e906545 100644 --- a/samples/memfs/inode.go +++ b/samples/memfs/inode.go @@ -18,6 +18,7 @@ import ( "fmt" "io" "os" + "time" "github.com/jacobsa/fuse" "github.com/jacobsa/fuse/fuseutil" @@ -373,7 +374,10 @@ func (inode *inode) WriteAt(p []byte, off int64) (n int, err error) { // Update attributes from non-nil parameters. // // EXCLUSIVE_LOCKS_REQUIRED(inode.mu) -func (inode *inode) SetAttributes(size *uint64, mode *os.FileMode) { +func (inode *inode) SetAttributes( + size *uint64, + mode *os.FileMode, + mtime *time.Time) { // Update the modification time. inode.attributes.Mtime = inode.clock.Now() @@ -397,4 +401,9 @@ func (inode *inode) SetAttributes(size *uint64, mode *os.FileMode) { if mode != nil { inode.attributes.Mode = *mode } + + // Change mtime? + if mtime != nil { + inode.attributes.Mtime = *mtime + } } diff --git a/samples/memfs/memfs_test.go b/samples/memfs/memfs_test.go index c788a76..9c3d5ba 100644 --- a/samples/memfs/memfs_test.go +++ b/samples/memfs/memfs_test.go @@ -968,7 +968,7 @@ func (t *MemFSTest) Chtimes() { AssertEq(nil, err) // Chtimes it. - expectedMtime := time.Now().Add(123 * time.Millisecond) + expectedMtime := time.Now().Add(123 * time.Second).Round(time.Second) err = os.Chtimes(fileName, time.Time{}, expectedMtime) AssertEq(nil, err)