From 935faf3be200d6f469cccdbec27cee3741a97350 Mon Sep 17 00:00:00 2001 From: Yasuhiro Matsumoto Date: Wed, 11 Nov 2015 10:21:49 +0900 Subject: path/filepath: in Rel use case-insensitive comparison on Windows Fixes #10802 Compare Volume name and each path elements using strings.EqualFold. Change-Id: Ibdefdb801d0326e53755bc9cc8c10eed998094e5 Reviewed-on: https://go-review.googlesource.com/16795 Reviewed-by: Russ Cox --- src/path/filepath/path.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/path/filepath/path.go') diff --git a/src/path/filepath/path.go b/src/path/filepath/path.go index 5dc5cfd49e..681fdfa09f 100644 --- a/src/path/filepath/path.go +++ b/src/path/filepath/path.go @@ -269,7 +269,7 @@ func Rel(basepath, targpath string) (string, error) { // Can't use IsAbs - `\a` and `a` are both relative in Windows. baseSlashed := len(base) > 0 && base[0] == Separator targSlashed := len(targ) > 0 && targ[0] == Separator - if baseSlashed != targSlashed || baseVol != targVol { + if baseSlashed != targSlashed || !sameWord(baseVol, targVol) { return "", errors.New("Rel: can't make " + targ + " relative to " + base) } // Position base[b0:bi] and targ[t0:ti] at the first differing elements. @@ -283,7 +283,7 @@ func Rel(basepath, targpath string) (string, error) { for ti < tl && targ[ti] != Separator { ti++ } - if targ[t0:ti] != base[b0:bi] { + if !sameWord(targ[t0:ti], base[b0:bi]) { break } if bi < bl { -- cgit v1.3