if newchild == nil {
delete(n.inodes, name)
} else if newchild != child {
- n.inodes[name] = newchild
newchild.SetParent(n, name)
+ n.inodes[name] = newchild
+ n.fileinfo.modTime = time.Now()
child = newchild
}
}
// Leave oldinode in olddir.
return oldinode
}
- //TODO: olddirf.setModTime(time.Now())
- //TODO: newdirf.setModTime(time.Now())
return nil
})
return err
if err := root.loadManifest(c.ManifestText); err != nil {
return nil, err
}
+ backdateTree(root, modTime)
fs.root = root
return fs, nil
}
+func backdateTree(n inode, modTime time.Time) {
+ switch n := n.(type) {
+ case *filenode:
+ n.fileinfo.modTime = modTime
+ case *dirnode:
+ n.fileinfo.modTime = modTime
+ for _, n := range n.inodes {
+ backdateTree(n, modTime)
+ }
+ }
+}
+
func (fs *collectionFileSystem) newNode(name string, perm os.FileMode, modTime time.Time) (node inode, err error) {
if name == "" || name == "." || name == ".." {
return nil, ErrInvalidArgument