aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastiaan van Stijn <github@gone.nl>2022-08-27 15:11:27 +0200
committerSebastiaan van Stijn <github@gone.nl>2022-08-27 15:11:27 +0200
commit2640aec0d78e4ba51e0d171cdcf79b14a38a6599 (patch)
treec33dc002e69f34158c59ac05801f72920c8eafed
parent3e8573a85a42d4882068bffab7d83f5d93d417e1 (diff)
pkg/system: make IsAbs() platform-agnostic
filepath.IsAbs() will short-circuit on Linux/Unix, so having a single implementation should not affect those platforms. Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
-rw-r--r--pkg/system/filesys.go19
-rw-r--r--pkg/system/filesys_unix.go10
-rw-r--r--pkg/system/filesys_windows.go15
3 files changed, 20 insertions, 24 deletions
diff --git a/pkg/system/filesys.go b/pkg/system/filesys.go
new file mode 100644
index 0000000000..ce5990c914
--- /dev/null
+++ b/pkg/system/filesys.go
@@ -0,0 +1,19 @@
+package system
+
+import (
+ "os"
+ "path/filepath"
+ "strings"
+)
+
+// IsAbs is a platform-agnostic wrapper for filepath.IsAbs.
+//
+// On Windows, golang filepath.IsAbs does not consider a path \windows\system32
+// as absolute as it doesn't start with a drive-letter/colon combination. However,
+// in docker we need to verify things such as WORKDIR /windows/system32 in
+// a Dockerfile (which gets translated to \windows\system32 when being processed
+// by the daemon). This SHOULD be treated as absolute from a docker processing
+// perspective.
+func IsAbs(path string) bool {
+ return filepath.IsAbs(path) || strings.HasPrefix(path, string(os.PathSeparator))
+}
diff --git a/pkg/system/filesys_unix.go b/pkg/system/filesys_unix.go
index 8b991201a9..61d5cd5b7b 100644
--- a/pkg/system/filesys_unix.go
+++ b/pkg/system/filesys_unix.go
@@ -3,10 +3,7 @@
package system // import "github.com/docker/docker/pkg/system"
-import (
- "os"
- "path/filepath"
-)
+import "os"
// MkdirAllWithACL is a wrapper for os.MkdirAll on unix systems.
func MkdirAllWithACL(path string, perm os.FileMode, sddl string) error {
@@ -19,11 +16,6 @@ func MkdirAll(path string, perm os.FileMode) error {
return os.MkdirAll(path, perm)
}
-// IsAbs is a platform-specific wrapper for filepath.IsAbs.
-func IsAbs(path string) bool {
- return filepath.IsAbs(path)
-}
-
// The functions below here are wrappers for the equivalents in the os and ioutils packages.
// They are passthrough on Unix platforms, and only relevant on Windows.
diff --git a/pkg/system/filesys_windows.go b/pkg/system/filesys_windows.go
index 8f79dc8fe0..00ba4728bb 100644
--- a/pkg/system/filesys_windows.go
+++ b/pkg/system/filesys_windows.go
@@ -5,7 +5,6 @@ import (
"path/filepath"
"regexp"
"strconv"
- "strings"
"sync"
"syscall"
"time"
@@ -122,20 +121,6 @@ func mkdirWithACL(name string, sddl string) error {
return nil
}
-// IsAbs is a platform-specific wrapper for filepath.IsAbs. On Windows,
-// golang filepath.IsAbs does not consider a path \windows\system32 as absolute
-// as it doesn't start with a drive-letter/colon combination. However, in
-// docker we need to verify things such as WORKDIR /windows/system32 in
-// a Dockerfile (which gets translated to \windows\system32 when being processed
-// by the daemon. This SHOULD be treated as absolute from a docker processing
-// perspective.
-func IsAbs(path string) bool {
- if filepath.IsAbs(path) || strings.HasPrefix(path, string(os.PathSeparator)) {
- return true
- }
- return false
-}
-
// The origin of the functions below here are the golang OS and windows packages,
// slightly modified to only cope with files, not directories due to the
// specific use case.