os: use filepathlite.FromSlash

Change-Id: Id15ebd9e97a8626e64665f6830a662e62432a619
Reviewed-on: https://go-review.googlesource.com/c/go/+/582500
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Damien Neil <dneil@google.com>
Reviewed-by: Ian Lance Taylor <iant@google.com>
diff --git a/src/os/file_windows.go b/src/os/file_windows.go
index 245f994..cf652ca 100644
--- a/src/os/file_windows.go
+++ b/src/os/file_windows.go
@@ -288,7 +288,7 @@
 // If there is an error, it will be of type *LinkError.
 func Symlink(oldname, newname string) error {
 	// '/' does not work in link's content
-	oldname = fromSlash(oldname)
+	oldname = filepathlite.FromSlash(oldname)
 
 	// need the exact location of the oldname when it's relative to determine if it's a directory
 	destpath := oldname
diff --git a/src/os/path_windows.go b/src/os/path_windows.go
index 162b631..4d7bdb2 100644
--- a/src/os/path_windows.go
+++ b/src/os/path_windows.go
@@ -45,28 +45,6 @@
 	return name
 }
 
-func fromSlash(path string) string {
-	// Replace each '/' with '\\' if present
-	var pathbuf []byte
-	var lastSlash int
-	for i, b := range path {
-		if b == '/' {
-			if pathbuf == nil {
-				pathbuf = make([]byte, len(path))
-			}
-			copy(pathbuf[lastSlash:], path[lastSlash:i])
-			pathbuf[i] = '\\'
-			lastSlash = i + 1
-		}
-	}
-	if pathbuf == nil {
-		return path
-	}
-
-	copy(pathbuf[lastSlash:], path[lastSlash:])
-	return string(pathbuf)
-}
-
 func dirname(path string) string {
 	vol := filepathlite.VolumeName(path)
 	i := len(path) - 1