diff options
| author | Emil Hessman <emil@hessman.se> | 2014-12-31 06:27:31 +0100 |
|---|---|---|
| committer | Alex Brainman <alex.brainman@gmail.com> | 2015-01-20 23:23:01 +0000 |
| commit | 8128b0116decc3b33e37a35d8d83182e2a19b61d (patch) | |
| tree | 358946b1bc3e27d04fe3df58fba68cde1b45db4f /src/path/filepath/path.go | |
| parent | 4e0618c99262260e5992dc77b60fa2fc93f8c9b6 (diff) | |
| download | go-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.go | 9 |
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. |
