cmd/go: Plan 9 compatible "env" output

Fixes the output of go env so that variables can be set
more accurately when using Plan 9's rc shell. Specifically,
GOPATH may have multiple components and the current
representation is plain wrong. In practice, we probably
ought to change os. Getenv to produce the right result, but
that requires considerably more thought.

LGTM=rsc
R=golang-codereviews, gobot, rsc
CC=golang-codereviews
https://golang.org/cl/66600043
This commit is contained in:
Lucio De Re 2014-02-24 19:48:06 +01:00 committed by David du Colombier
parent c687be423c
commit ff15e5c00f
1 changed files with 13 additions and 1 deletions

View File

@ -91,7 +91,19 @@ func runEnv(cmd *Command, args []string) {
default:
fmt.Printf("%s=\"%s\"\n", e.name, e.value)
case "plan9":
fmt.Printf("%s='%s'\n", e.name, strings.Replace(e.value, "'", "''", -1))
if strings.IndexByte(e.value, '\x00') < 0 {
fmt.Printf("%s='%s'\n", e.name, strings.Replace(e.value, "'", "''", -1))
} else {
v := strings.Split(e.value, "\x00")
fmt.Printf("%s=(", e.name)
for x, s := range v {
if x > 0 {
fmt.Printf(" ")
}
fmt.Printf("%s", s)
}
fmt.Printf(")\n")
}
case "windows":
fmt.Printf("set %s=%s\n", e.name, e.value)
}