From ff15e5c00f7fe3fcec1277f932fbca381fd2d2ad Mon Sep 17 00:00:00 2001 From: Lucio De Re Date: Mon, 24 Feb 2014 19:48:06 +0100 Subject: [PATCH] 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 --- src/cmd/go/env.go | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/cmd/go/env.go b/src/cmd/go/env.go index 05774c2cf5..26d37df4f9 100644 --- a/src/cmd/go/env.go +++ b/src/cmd/go/env.go @@ -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) } -- 2.48.1