aboutsummaryrefslogtreecommitdiff
path: root/src/path/filepath/path.go
diff options
context:
space:
mode:
authorEmil Hessman <emil@hessman.se>2014-12-31 06:27:31 +0100
committerAlex Brainman <alex.brainman@gmail.com>2015-01-20 23:23:01 +0000
commit8128b0116decc3b33e37a35d8d83182e2a19b61d (patch)
tree358946b1bc3e27d04fe3df58fba68cde1b45db4f /src/path/filepath/path.go
parent4e0618c99262260e5992dc77b60fa2fc93f8c9b6 (diff)
downloadgo-8128b0116decc3b33e37a35d8d83182e2a19b61d.tar.xz
path/filepath: make Join handle UNC paths on Windows
Unless the first element is a Universal Naming Convention (UNC)[0] path, Join shouldn't create a UNC path on Windows. For example, Join inadvertently creates a UNC path on Windows when told to join at least three non-empty path elements, where the first element is `\` or `/`. This CL prevents creation of a UNC path prefix when the first path element isn't a UNC path. Since this introduces some amount of Windows-specific logic, Join is moved to a per GOOS implementation. Fixes #9167. [0]: http://msdn.microsoft.com/en-us/library/gg465305.aspx Change-Id: Ib6eda597106cb025137673b33c4828df1367f75b Reviewed-on: https://go-review.googlesource.com/2211 Reviewed-by: Alex Brainman <alex.brainman@gmail.com>
Diffstat (limited to 'src/path/filepath/path.go')
-rw-r--r--src/path/filepath/path.go9
1 files changed, 3 insertions, 6 deletions
diff --git a/src/path/filepath/path.go b/src/path/filepath/path.go
index 3bde14b91e..ebdd9f5968 100644
--- a/src/path/filepath/path.go
+++ b/src/path/filepath/path.go
@@ -196,13 +196,10 @@ func Split(path string) (dir, file string) {
// Join joins any number of path elements into a single path, adding
// a Separator if necessary. The result is Cleaned, in particular
// all empty strings are ignored.
+// On Windows, the result is a UNC path if and only if the first path
+// element is a UNC path.
func Join(elem ...string) string {
- for i, e := range elem {
- if e != "" {
- return Clean(strings.Join(elem[i:], string(Separator)))
- }
- }
- return ""
+ return join(elem)
}
// Ext returns the file name extension used by path.