b8f2caa80a
If was a very shallow wrapper around symlink.FollowSymlinkInScope, so inline that code instead. Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
27 lines
902 B
Go
27 lines
902 B
Go
package containerfs // import "github.com/docker/docker/pkg/containerfs"
|
|
|
|
import (
|
|
"path/filepath"
|
|
|
|
"github.com/moby/sys/symlink"
|
|
)
|
|
|
|
// CleanScopedPath prepares the given path to be combined with a mount path or
|
|
// a drive-letter. On Windows, it removes any existing driveletter (e.g. "C:").
|
|
// The returned path is always prefixed with a [filepath.Separator].
|
|
func CleanScopedPath(path string) string {
|
|
if len(path) >= 2 {
|
|
if v := filepath.VolumeName(path); len(v) > 0 {
|
|
path = path[len(v):]
|
|
}
|
|
}
|
|
return filepath.Join(string(filepath.Separator), path)
|
|
}
|
|
|
|
// ResolveScopedPath evaluates the given path scoped to the root.
|
|
// For example, if root=/a, and path=/b/c, then this function would return /a/b/c.
|
|
//
|
|
// Deprecated: use [symlink.FollowSymlinkInScope].
|
|
func ResolveScopedPath(root, path string) (string, error) {
|
|
return symlink.FollowSymlinkInScope(filepath.Join(root, path), root)
|
|
}
|