aboutsummaryrefslogtreecommitdiff
path: root/src/path/filepath
diff options
context:
space:
mode:
authormiller <millerresearch@gmail.com>2022-05-08 13:29:27 +0100
committerDavid du Colombier <0intro@gmail.com>2022-05-09 14:44:54 +0000
commit50203976777808f03b01974076ddeb26f24be311 (patch)
treeed95f4992cfee69bb68872419b69758c37154f5e /src/path/filepath
parentc4311a47a0cb97f85e045a6d8f7c284cb6866da9 (diff)
downloadgo-50203976777808f03b01974076ddeb26f24be311.tar.xz
path/filepath: simplify EvalSymlinks for plan9
Plan 9 doesn't have symbolic links, so EvalSymlinks can be simplified just to check validity of the path and call Clean. This saves a lot of redundant file system activity. Updates #50775 Change-Id: I84c24ef1d5e6e38fd19df2d37c72fbf883f0140d Reviewed-on: https://go-review.googlesource.com/c/go/+/404954 Reviewed-by: Bryan Mills <bcmills@google.com> Reviewed-by: Dmitri Shuralyov <dmitshur@google.com> TryBot-Result: Gopher Robot <gobot@golang.org> Run-TryBot: David du Colombier <0intro@gmail.com> Reviewed-by: David du Colombier <0intro@gmail.com>
Diffstat (limited to 'src/path/filepath')
-rw-r--r--src/path/filepath/symlink_plan9.go27
-rw-r--r--src/path/filepath/symlink_unix.go2
2 files changed, 28 insertions, 1 deletions
diff --git a/src/path/filepath/symlink_plan9.go b/src/path/filepath/symlink_plan9.go
new file mode 100644
index 0000000000..820d150d97
--- /dev/null
+++ b/src/path/filepath/symlink_plan9.go
@@ -0,0 +1,27 @@
+// Copyright 2022 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package filepath
+
+import (
+ "os"
+ "strings"
+ "syscall"
+)
+
+func evalSymlinks(path string) (string, error) {
+ // Plan 9 doesn't have symbolic links, so no need for substitutions.
+ if len(path) > 0 {
+ // Check validity of path
+ _, err := os.Lstat(path)
+ if err != nil {
+ // Return the same error value as on other operating systems
+ if strings.HasSuffix(err.Error(), "not a directory") {
+ err = syscall.ENOTDIR
+ }
+ return "", err
+ }
+ }
+ return Clean(path), nil
+}
diff --git a/src/path/filepath/symlink_unix.go b/src/path/filepath/symlink_unix.go
index 7bfe17e2fd..f8980d5ad3 100644
--- a/src/path/filepath/symlink_unix.go
+++ b/src/path/filepath/symlink_unix.go
@@ -1,4 +1,4 @@
-//go:build !windows
+//go:build !windows && !plan9
package filepath