Imported Upstream version 4.8.1
[platform/upstream/gcc48.git] / libgo / go / path / filepath / path_windows.go
index 3dcd030..db2b57e 100644 (file)
@@ -14,29 +14,27 @@ func isSlash(c uint8) bool {
 
 // IsAbs returns true if the path is absolute.
 func IsAbs(path string) (b bool) {
-       v := VolumeName(path)
-       if v == "" {
+       l := volumeNameLen(path)
+       if l == 0 {
                return false
        }
-       path = path[len(v):]
+       path = path[l:]
        if path == "" {
                return false
        }
        return isSlash(path[0])
 }
 
-// VolumeName returns leading volume name.  
-// Given "C:\foo\bar" it returns "C:" under windows.
-// Given "\\host\share\foo" it returns "\\host\share".
-// On other platforms it returns "".
-func VolumeName(path string) (v string) {
+// volumeNameLen returns length of the leading volume name on Windows.
+// It returns 0 elsewhere.
+func volumeNameLen(path string) int {
        if len(path) < 2 {
-               return ""
+               return 0
        }
        // with drive letter
        c := path[0]
        if path[1] == ':' && ('a' <= c && c <= 'z' || 'A' <= c && c <= 'Z') {
-               return path[:2]
+               return 2
        }
        // is it UNC
        if l := len(path); l >= 5 && isSlash(path[0]) && isSlash(path[1]) &&
@@ -56,13 +54,13 @@ func VolumeName(path string) (v string) {
                                                        break
                                                }
                                        }
-                                       return path[:n]
+                                       return n
                                }
                                break
                        }
                }
        }
-       return ""
+       return 0
 }
 
 // HasPrefix exists for historical compatibility and should not be used.