mirror of
https://github.com/tailscale/tailscale.git
synced 2024-11-29 21:15:39 +00:00
abab0d4197
- Restyles tailfs -> tailFS - Defines interfaces for main TailFS types - Moves implemenatation of TailFS into tailfsimpl package Updates tailscale/corp#16827 Signed-off-by: Percy Wegmann <percy@tailscale.com>
34 lines
807 B
Go
34 lines
807 B
Go
// Copyright (c) Tailscale Inc & AUTHORS
|
|
// SPDX-License-Identifier: BSD-3-Clause
|
|
|
|
package compositefs
|
|
|
|
import (
|
|
"context"
|
|
"os"
|
|
|
|
"tailscale.com/tailfs/tailfsimpl/shared"
|
|
)
|
|
|
|
// RemoveAll implements webdav.File. The root of this file system is read-only,
|
|
// so attempting to call RemoveAll on the root will fail with os.ErrPermission.
|
|
// RemoveAll within a child will be handled by the respective child.
|
|
func (cfs *CompositeFileSystem) RemoveAll(ctx context.Context, name string) error {
|
|
if shared.IsRoot(name) {
|
|
// root directory is read-only
|
|
return os.ErrPermission
|
|
}
|
|
|
|
pathInfo, err := cfs.pathInfoFor(name)
|
|
if pathInfo.refersToChild {
|
|
// children can't be removed
|
|
return os.ErrPermission
|
|
}
|
|
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return pathInfo.child.FS.RemoveAll(ctx, pathInfo.pathOnChild)
|
|
}
|