From f1a073501f7467b05831c7917a06878f2c9247a8 Mon Sep 17 00:00:00 2001 From: Jakob Borg Date: Sun, 5 Feb 2017 12:54:08 +0000 Subject: [PATCH] lib/fs: A nil MtimeFS is valid (fixes #3958) GitHub-Pull-Request: https://github.com/syncthing/syncthing/pull/3961 --- lib/fs/mtimefs.go | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/lib/fs/mtimefs.go b/lib/fs/mtimefs.go index 1b9c16d1..b56679e2 100644 --- a/lib/fs/mtimefs.go +++ b/lib/fs/mtimefs.go @@ -24,7 +24,8 @@ type database interface { var osChtimes = os.Chtimes // The MtimeFS is a filesystem with nanosecond mtime precision, regardless -// of what shenanigans the underlying filesystem gets up to. +// of what shenanigans the underlying filesystem gets up to. A nil MtimeFS +// just does the underlying operations with no additions. type MtimeFS struct { db database } @@ -36,6 +37,10 @@ func NewMtimeFS(db database) *MtimeFS { } func (f *MtimeFS) Chtimes(name string, atime, mtime time.Time) error { + if f == nil { + return osChtimes(name, atime, mtime) + } + // Do a normal Chtimes call, don't care if it succeeds or not. osChtimes(name, atime, mtime) @@ -52,6 +57,10 @@ func (f *MtimeFS) Chtimes(name string, atime, mtime time.Time) error { } func (f *MtimeFS) Lstat(name string) (os.FileInfo, error) { + if f == nil { + return osutil.Lstat(name) + } + info, err := osutil.Lstat(name) if err != nil { return nil, err