github.com/keybase/client/go@v0.0.0-20241007131713-f10651d043c8/kbfs/libdokan/fakeroot.go (about)

     1  // Copyright 2017 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  
     5  package libdokan
     6  
     7  import (
     8  	"github.com/keybase/client/go/kbfs/dokan"
     9  	"github.com/keybase/client/go/libkb"
    10  	"golang.org/x/net/context"
    11  )
    12  
    13  type fakeRoot struct {
    14  	EmptyFolder
    15  }
    16  
    17  func openFakeRoot(ctx context.Context, fs *FS, fi *dokan.FileInfo) (dokan.File, dokan.CreateStatus, error) {
    18  	path := fi.Path()
    19  	fs.vlog.CLogf(ctx, libkb.VLog1, "openFakeRoot %q", path)
    20  	switch path {
    21  	case `\` + WrongUserErrorFileName:
    22  		return stringReadFile(WrongUserErrorContents), dokan.ExistingFile, nil
    23  	case `\`:
    24  		return &fakeRoot{}, dokan.ExistingDir, nil
    25  	}
    26  	return nil, 0, dokan.ErrAccessDenied
    27  }
    28  
    29  // FindFiles for dokan.
    30  func (fr *fakeRoot) FindFiles(ctx context.Context, fi *dokan.FileInfo, ignored string, callback func(*dokan.NamedStat) error) (err error) {
    31  	var ns dokan.NamedStat
    32  	ns.FileAttributes = dokan.FileAttributeNormal | dokan.FileAttributeReadonly
    33  	ns.Name = WrongUserErrorFileName
    34  	ns.FileSize = int64(len(WrongUserErrorContents))
    35  	return callback(&ns)
    36  }