2024-02-21 12:40:12 +00:00
|
|
|
// Copyright (c) Tailscale Inc & AUTHORS
|
|
|
|
// SPDX-License-Identifier: BSD-3-Clause
|
|
|
|
|
|
|
|
package dirfs
|
|
|
|
|
|
|
|
import (
|
|
|
|
"context"
|
|
|
|
"io/fs"
|
|
|
|
"os"
|
|
|
|
|
2024-04-02 20:32:30 +00:00
|
|
|
"tailscale.com/drive/driveimpl/shared"
|
2024-02-21 12:40:12 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
// Stat implements webdav.FileSystem.
|
|
|
|
func (dfs *FS) Stat(ctx context.Context, name string) (fs.FileInfo, error) {
|
|
|
|
nameWithoutStaticRoot, isStaticRoot := dfs.trimStaticRoot(name)
|
|
|
|
if isStaticRoot || shared.IsRoot(name) {
|
|
|
|
// Static root is a directory, always use now() as the modified time to
|
|
|
|
// bust caches.
|
|
|
|
fi := shared.ReadOnlyDirInfo(name, dfs.now())
|
|
|
|
return fi, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
child := dfs.childFor(nameWithoutStaticRoot)
|
|
|
|
if child == nil {
|
|
|
|
return nil, &os.PathError{Op: "stat", Path: name, Err: os.ErrNotExist}
|
|
|
|
}
|
|
|
|
|
|
|
|
return shared.ReadOnlyDirInfo(name, dfs.now()), nil
|
|
|
|
}
|