1// Copyright 2016 Keybase Inc. All rights reserved. 2// Use of this source code is governed by a BSD 3// license that can be found in the LICENSE file. 4 5package dokan 6 7import ( 8 "context" 9 "fmt" 10 "time" 11 12 "github.com/keybase/client/go/kbfs/dokan/winacl" 13) 14 15type errorFile struct { // nolint 16 fs FileSystem 17} 18 19func (ef *errorFile) print(method string, fi *FileInfo) error { 20 ef.fs.ErrorPrint(fmt.Errorf("INVALID FILE: %s %q", method, fi.Path())) 21 return ErrAccessDenied 22} 23 24func (ef *errorFile) ReadFile(ctx context.Context, fi *FileInfo, bs []byte, offset int64) (int, error) { 25 return 0, ef.print("ReadFile", fi) 26} 27func (ef *errorFile) WriteFile(ctx context.Context, fi *FileInfo, bs []byte, offset int64) (int, error) { 28 return 0, ef.print("WriteFile", fi) 29} 30func (ef *errorFile) FlushFileBuffers(ctx context.Context, fi *FileInfo) error { 31 return ef.print("FlushFileBuffers", fi) 32} 33func (ef *errorFile) GetFileInformation(ctx context.Context, fi *FileInfo) (*Stat, error) { 34 return nil, ef.print("GetFileInformation", fi) 35} 36func (ef *errorFile) FindFiles(ctx context.Context, fi *FileInfo, pattern string, fillStatCallback func(*NamedStat) error) error { 37 return ef.print("FindFiles", fi) 38} 39func (ef *errorFile) SetFileTime(ctx context.Context, fi *FileInfo, creation time.Time, lastAccess time.Time, lastWrite time.Time) error { 40 return ef.print("SetFileTime", fi) 41} 42func (ef *errorFile) SetFileAttributes(ctx context.Context, fi *FileInfo, fileAttributes FileAttribute) error { 43 return ef.print("SetFileAttributes", fi) 44} 45func (ef *errorFile) SetEndOfFile(ctx context.Context, fi *FileInfo, length int64) error { 46 return ef.print("SetEndOfFile", fi) 47} 48func (ef *errorFile) SetAllocationSize(ctx context.Context, fi *FileInfo, length int64) error { 49 return ef.print("SetAllocationSize", fi) 50} 51func (ef *errorFile) LockFile(ctx context.Context, fi *FileInfo, offset int64, length int64) error { 52 return ef.print("LockFile", fi) 53} 54func (ef *errorFile) UnlockFile(ctx context.Context, fi *FileInfo, offset int64, length int64) error { 55 return ef.print("UnlockFile", fi) 56} 57func (ef *errorFile) GetFileSecurity(ctx context.Context, fi *FileInfo, si winacl.SecurityInformation, sd *winacl.SecurityDescriptor) error { 58 return ef.print("GetFileSecurity", fi) 59} 60func (ef *errorFile) SetFileSecurity(ctx context.Context, fi *FileInfo, si winacl.SecurityInformation, sd *winacl.SecurityDescriptor) error { 61 return ef.print("SetFileSecurity", fi) 62} 63func (ef *errorFile) CanDeleteFile(ctx context.Context, fi *FileInfo) error { 64 return ef.print("CanDeleteFile", fi) 65} 66func (ef *errorFile) CanDeleteDirectory(ctx context.Context, fi *FileInfo) error { 67 return ef.print("CanDeleteDirectory", fi) 68} 69func (ef *errorFile) Cleanup(ctx context.Context, fi *FileInfo) { 70 ef.print("Cleanup", fi) 71} 72func (ef *errorFile) CloseFile(ctx context.Context, fi *FileInfo) { 73 ef.print("CloseFile", fi) 74} 75