diff options
author | qmuntal <quimmuntal@gmail.com> | 2024-04-30 14:35:18 +0200 |
---|---|---|
committer | Damien Neil <dneil@google.com> | 2024-04-30 15:37:05 +0000 |
commit | d95fa7aca75f498c0e7e3d65bb5ab8363e46e179 (patch) | |
tree | 054254101f7771f0d0ec3bdcade3b8d016b9ebae /src | |
parent | 150f45b2c463ba8411738adf637acf651a273e68 (diff) | |
download | go-d95fa7aca75f498c0e7e3d65bb5ab8363e46e179.tar.gz go-d95fa7aca75f498c0e7e3d65bb5ab8363e46e179.zip |
os: use filepathlite.IsAbs
It is better to have a single implementation of IsAbs, which is quite
tricky to get right on Windows.
Change-Id: I45933b0ceff2920d9eddb61e62aacb2602c3dc8c
Reviewed-on: https://go-review.googlesource.com/c/go/+/582498
Run-TryBot: Quim Muntal <quimmuntal@gmail.com>
Reviewed-by: Damien Neil <dneil@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@google.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/os/file_windows.go | 3 | ||||
-rw-r--r-- | src/os/path_windows.go | 15 | ||||
-rw-r--r-- | src/os/types_windows.go | 3 |
3 files changed, 6 insertions, 15 deletions
diff --git a/src/os/file_windows.go b/src/os/file_windows.go index d883eb5cb2..d40f335d83 100644 --- a/src/os/file_windows.go +++ b/src/os/file_windows.go @@ -6,6 +6,7 @@ package os import ( "errors" + "internal/filepathlite" "internal/godebug" "internal/poll" "internal/syscall/windows" @@ -313,7 +314,7 @@ func Symlink(oldname, newname string) error { return &LinkError{"symlink", oldname, newname, err} } var o *uint16 - if isAbs(oldname) { + if filepathlite.IsAbs(oldname) { o, err = syscall.UTF16PtrFromString(fixLongPath(oldname)) } else { // Do not use fixLongPath on oldname for relative symlinks, diff --git a/src/os/path_windows.go b/src/os/path_windows.go index 48b4c153ad..47d5b443b3 100644 --- a/src/os/path_windows.go +++ b/src/os/path_windows.go @@ -5,6 +5,7 @@ package os import ( + "internal/filepathlite" "internal/syscall/windows" "syscall" ) @@ -44,18 +45,6 @@ func basename(name string) string { return name } -func isAbs(path string) (b bool) { - v := volumeName(path) - if v == "" { - return false - } - path = path[len(v):] - if path == "" { - return false - } - return IsPathSeparator(path[0]) -} - func volumeName(path string) (v string) { if len(path) < 2 { return "" @@ -174,7 +163,7 @@ func addExtendedPrefix(path string) string { // The MSDN docs appear to say that a normal path that is 248 bytes long // will work; empirically the path must be less then 248 bytes long. pathLength := len(path) - if !isAbs(path) { + if !filepathlite.IsAbs(path) { // If the path is relative, we need to prepend the working directory // plus a separator to the path before we can determine if it's too long. // We don't want to call syscall.Getwd here, as that call is expensive to do diff --git a/src/os/types_windows.go b/src/os/types_windows.go index 16042fea51..c83fa4c353 100644 --- a/src/os/types_windows.go +++ b/src/os/types_windows.go @@ -5,6 +5,7 @@ package os import ( + "internal/filepathlite" "internal/godebug" "internal/syscall/windows" "sync" @@ -338,7 +339,7 @@ func (fs *fileStat) loadFileId() error { // and set name from path. func (fs *fileStat) saveInfoFromPath(path string) error { fs.path = path - if !isAbs(fs.path) { + if !filepathlite.IsAbs(fs.path) { var err error fs.path, err = syscall.FullPath(fs.path) if err != nil { |