]> Cypherpunks repositories - gostls13.git/commitdiff
os: use filepathlite.IsAbs
authorqmuntal <quimmuntal@gmail.com>
Tue, 30 Apr 2024 12:35:18 +0000 (14:35 +0200)
committerDamien Neil <dneil@google.com>
Tue, 30 Apr 2024 15:37:05 +0000 (15:37 +0000)
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>
src/os/file_windows.go
src/os/path_windows.go
src/os/types_windows.go

index d883eb5cb21e5680ebf324a5f66e69ee33d66e5a..d40f335d83c92dcb67a4c6206d6e6df63f1acc4e 100644 (file)
@@ -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,
index 48b4c153ad4383e82d4bd09260d31e20acf82c2b..47d5b443b3e458561fb037747da8fafe552a67f8 100644 (file)
@@ -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
index 16042fea510aca7a52f1714a6a7d9aed41e9cb78..c83fa4c353916d7becb13cd837c1d2f94a49ee4e 100644 (file)
@@ -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 {