diff options
author | Niall Sheridan <nsheridan@gmail.com> | 2017-10-18 13:15:14 +0100 |
---|---|---|
committer | Niall Sheridan <niall@intercom.io> | 2017-10-18 13:25:46 +0100 |
commit | 7b320119ba532fd409ec7dade7ad02011c309599 (patch) | |
tree | a39860f35b55e6cc499f8f5bfa969138c5dd6b73 /vendor/github.com/spf13/afero/mem | |
parent | 7c99874c7a3e7a89716f3ee0cdf696532e35ae35 (diff) |
Update dependencies
Diffstat (limited to 'vendor/github.com/spf13/afero/mem')
-rw-r--r-- | vendor/github.com/spf13/afero/mem/file.go | 40 |
1 files changed, 33 insertions, 7 deletions
diff --git a/vendor/github.com/spf13/afero/mem/file.go b/vendor/github.com/spf13/afero/mem/file.go index e41e012..5401a3b 100644 --- a/vendor/github.com/spf13/afero/mem/file.go +++ b/vendor/github.com/spf13/afero/mem/file.go @@ -74,14 +74,24 @@ func CreateDir(name string) *FileData { } func ChangeFileName(f *FileData, newname string) { + f.Lock() f.name = newname + f.Unlock() } func SetMode(f *FileData, mode os.FileMode) { + f.Lock() f.mode = mode + f.Unlock() } func SetModTime(f *FileData, mtime time.Time) { + f.Lock() + setModTime(f, mtime) + f.Unlock() +} + +func setModTime(f *FileData, mtime time.Time) { f.modtime = mtime } @@ -102,7 +112,7 @@ func (f *File) Close() error { f.fileData.Lock() f.closed = true if !f.readOnly { - SetModTime(f.fileData, time.Now()) + setModTime(f.fileData, time.Now()) } f.fileData.Unlock() return nil @@ -197,7 +207,7 @@ func (f *File) Truncate(size int64) error { } else { f.fileData.data = f.fileData.data[0:size] } - SetModTime(f.fileData, time.Now()) + setModTime(f.fileData, time.Now()) return nil } @@ -236,7 +246,7 @@ func (f *File) Write(b []byte) (n int, err error) { f.fileData.data = append(f.fileData.data[:cur], b...) f.fileData.data = append(f.fileData.data, tail...) } - SetModTime(f.fileData, time.Now()) + setModTime(f.fileData, time.Now()) atomic.StoreInt64(&f.at, int64(len(f.fileData.data))) return @@ -261,17 +271,33 @@ type FileInfo struct { // Implements os.FileInfo func (s *FileInfo) Name() string { + s.Lock() _, name := filepath.Split(s.name) + s.Unlock() return name } -func (s *FileInfo) Mode() os.FileMode { return s.mode } -func (s *FileInfo) ModTime() time.Time { return s.modtime } -func (s *FileInfo) IsDir() bool { return s.dir } -func (s *FileInfo) Sys() interface{} { return nil } +func (s *FileInfo) Mode() os.FileMode { + s.Lock() + defer s.Unlock() + return s.mode +} +func (s *FileInfo) ModTime() time.Time { + s.Lock() + defer s.Unlock() + return s.modtime +} +func (s *FileInfo) IsDir() bool { + s.Lock() + defer s.Unlock() + return s.dir +} +func (s *FileInfo) Sys() interface{} { return nil } func (s *FileInfo) Size() int64 { if s.IsDir() { return int64(42) } + s.Lock() + defer s.Unlock() return int64(len(s.data)) } |