1
mirror of https://github.com/rclone/rclone synced 2024-12-28 21:03:45 +01:00

vfs: rename Lookup to Stat to be more in keeping with os

This commit is contained in:
Nick Craig-Wood 2017-10-29 11:36:38 +00:00
parent e8883e9fdb
commit 7e065440fb
4 changed files with 21 additions and 36 deletions

View File

@ -120,7 +120,7 @@ func (of *openFiles) Close(fh uint64) (errc int) {
// lookup a Node given a path
func (fsys *FS) lookupNode(path string) (node vfs.Node, errc int) {
node, err := fsys.VFS.Lookup(path)
node, err := fsys.VFS.Stat(path)
return node, translateError(err)
}

View File

@ -79,7 +79,7 @@ var _ fusefs.NodeRequestLookuper = (*Dir)(nil)
// Lookup need not to handle the names "." and "..".
func (d *Dir) Lookup(ctx context.Context, req *fuse.LookupRequest, resp *fuse.LookupResponse) (node fusefs.Node, err error) {
defer fs.Trace(d, "name=%q", req.Name)("node=%+v, err=%v", &node, &err)
mnode, err := d.Dir.Lookup(req.Name)
mnode, err := d.Dir.Stat(req.Name)
if err != nil {
return nil, translateError(err)
}

View File

@ -219,10 +219,10 @@ func (d *Dir) _readDir() error {
return nil
}
// lookup a single item in the directory
// stat a single item in the directory
//
// returns ENOENT if not found.
func (d *Dir) lookup(leaf string) (Node, error) {
func (d *Dir) stat(leaf string) (Node, error) {
d.mu.Lock()
defer d.mu.Unlock()
err := d._readDir()
@ -269,23 +269,23 @@ func (d *Dir) SetModTime(modTime time.Time) error {
return nil
}
// Lookup looks up a specific entry in the receiver.
// Stat looks up a specific entry in the receiver.
//
// Lookup should return a Node corresponding to the entry. If the
// name does not exist in the directory, Lookup should return ENOENT.
// Stat should return a Node corresponding to the entry. If the
// name does not exist in the directory, Stat should return ENOENT.
//
// Lookup need not to handle the names "." and "..".
func (d *Dir) Lookup(name string) (node Node, err error) {
// Stat need not to handle the names "." and "..".
func (d *Dir) Stat(name string) (node Node, err error) {
path := path.Join(d.path, name)
// fs.Debugf(path, "Dir.Lookup")
node, err = d.lookup(name)
// fs.Debugf(path, "Dir.Stat")
node, err = d.stat(name)
if err != nil {
if err != ENOENT {
fs.Errorf(path, "Dir.Lookup error: %v", err)
fs.Errorf(path, "Dir.Stat error: %v", err)
}
return nil, err
}
// fs.Debugf(path, "Dir.Lookup OK")
// fs.Debugf(path, "Dir.Stat OK")
return node, nil
}
@ -408,7 +408,7 @@ func (d *Dir) RemoveName(name string) error {
}
path := path.Join(d.path, name)
// fs.Debugf(path, "Dir.Remove")
node, err := d.lookup(name)
node, err := d.stat(name)
if err != nil {
fs.Errorf(path, "Dir.Remove error: %v", err)
return err
@ -424,7 +424,7 @@ func (d *Dir) Rename(oldName, newName string, destDir *Dir) error {
oldPath := path.Join(d.path, oldName)
newPath := path.Join(destDir.path, newName)
// fs.Debugf(oldPath, "Dir.Rename to %q", newPath)
oldNode, err := d.lookup(oldName)
oldNode, err := d.stat(oldName)
if err != nil {
fs.Errorf(oldPath, "Dir.Rename error: %v", err)
return err

View File

@ -129,8 +129,11 @@ func NewInode() (inode uint64) {
return atomic.AddUint64(&inodeCount, 1)
}
// Lookup finds the Node by path starting from the root
func (vfs *VFS) Lookup(path string) (node Node, err error) {
// Stat finds the Node by path starting from the root
//
// It is the equivalent of os.Stat - Node contains the os.FileInfo
// interface.
func (vfs *VFS) Stat(path string) (node Node, err error) {
node = vfs.root
for path != "" {
i := strings.IndexRune(path, '/')
@ -148,28 +151,10 @@ func (vfs *VFS) Lookup(path string) (node Node, err error) {
// We need to look in a directory, but found a file
return nil, ENOENT
}
node, err = dir.Lookup(name)
node, err = dir.Stat(name)
if err != nil {
return nil, err
}
}
return
}
// Statfs is called to obtain file system metadata.
// It should write that data to resp.
func (vfs *VFS) Statfs() error {
/* FIXME
const blockSize = 4096
const fsBlocks = (1 << 50) / blockSize
resp.Blocks = fsBlocks // Total data blocks in file system.
resp.Bfree = fsBlocks // Free blocks in file system.
resp.Bavail = fsBlocks // Free blocks in file system if you're not root.
resp.Files = 1E9 // Total files in file system.
resp.Ffree = 1E9 // Free files in file system.
resp.Bsize = blockSize // Block size
resp.Namelen = 255 // Maximum file name length?
resp.Frsize = blockSize // Fragment size, smallest addressable data size in the file system.
*/
return nil
}