]> Cypherpunks repositories - gostls13.git/commitdiff
path/filepath: simplify EvalSymlinks for plan9
authormiller <millerresearch@gmail.com>
Sun, 8 May 2022 12:29:27 +0000 (13:29 +0100)
committerDavid du Colombier <0intro@gmail.com>
Mon, 9 May 2022 14:44:54 +0000 (14:44 +0000)
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>
src/path/filepath/symlink_plan9.go [new file with mode: 0644]
src/path/filepath/symlink_unix.go

diff --git a/src/path/filepath/symlink_plan9.go b/src/path/filepath/symlink_plan9.go
new file mode 100644 (file)
index 0000000..820d150
--- /dev/null
@@ -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
+}
index 7bfe17e2fd1746dceec7951f60acf03d361d3db8..f8980d5ad3886e7f5917d622142429a244e85bbd 100644 (file)
@@ -1,4 +1,4 @@
-//go:build !windows
+//go:build !windows && !plan9
 
 package filepath