Commit b34ec90e authored by Robert Daniel Kortschak's avatar Robert Daniel Kortschak Committed by Alex Brainman

cmd/api: make api check directory per-user

Fixes #6353.

R=golang-dev, bradfitz, alex.brainman
CC=golang-dev
https://golang.org/cl/13652043
parent b99fdb2a
......@@ -19,6 +19,7 @@ import (
"net/http"
"os"
"os/exec"
"os/user"
"path/filepath"
"strconv"
"strings"
......@@ -99,8 +100,13 @@ func forceAPICheck() bool {
func prepGoPath() string {
const tempBase = "go.tools.TMP"
u, err := user.Current()
if err != nil {
log.Fatalf("Error getting current user: %v", err)
}
// The GOPATH we'll return
gopath := filepath.Join(os.TempDir(), "gopath-api", goToolsVersion)
gopath := filepath.Join(os.TempDir(), "gopath-api-"+cleanUsername(u.Username), goToolsVersion)
// cloneDir is where we run "hg clone".
cloneDir := filepath.Join(gopath, "src", "code.google.com", "p")
......@@ -140,6 +146,18 @@ func prepGoPath() string {
return gopath
}
func cleanUsername(n string) string {
b := make([]rune, len(n))
for i, r := range n {
if r == '\\' || r == '/' || r == ':' {
b[i] = '_'
} else {
b[i] = r
}
}
return string(b)
}
func goToolsCheckoutGood(dir string) bool {
if _, err := os.Stat(dir); err != nil {
return false
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment