Support changing mtime.

geesefs-0-30-9
Aaron Jacobs 2015-03-06 06:04:51 +11:00
parent 1698f1604a
commit a7d2944d2e
3 changed files with 12 additions and 3 deletions

View File

@ -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

View File

@ -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
}
}

View File

@ -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)