From: Austin Clements Date: Mon, 29 Aug 2022 21:24:01 +0000 (-0400) Subject: cmd/dist: simplify exec.Cmd helpers X-Git-Tag: go1.20rc1~1026 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=d9f90df2b488b2fb7ca8c24d99f82878befb68f8;p=gostls13.git cmd/dist: simplify exec.Cmd helpers Now that the required Go bootstrap version is 1.17, we can simplify some of the logic for working with exec.Cmd.Env as those APIs have been simplified. Updates #44505. Change-Id: Ia62ab9830320c7daf65a15f2313471dfaba687b5 Reviewed-on: https://go-review.googlesource.com/c/go/+/427957 TryBot-Result: Gopher Robot Reviewed-by: Bryan Mills Run-TryBot: Austin Clements Reviewed-by: Ian Lance Taylor --- diff --git a/src/cmd/dist/exec.go b/src/cmd/dist/exec.go index 67305530ae..43f503cb6c 100644 --- a/src/cmd/dist/exec.go +++ b/src/cmd/dist/exec.go @@ -17,23 +17,11 @@ func setDir(cmd *exec.Cmd, dir string) { } // setEnv sets cmd.Env so that key = value. -// -// It first removes any existing values for key, so it is safe to call -// even from within cmdbootstrap. func setEnv(cmd *exec.Cmd, key, value string) { kv := key + "=" + value if cmd.Env == nil { cmd.Env = os.Environ() } - - prefix := kv[:len(key)+1] - for i, entry := range cmd.Env { - if strings.HasPrefix(entry, prefix) { - cmd.Env[i] = kv - return - } - } - cmd.Env = append(cmd.Env, kv) } @@ -44,10 +32,13 @@ func unsetEnv(cmd *exec.Cmd, key string) { } prefix := key + "=" - for i, entry := range cmd.Env { + newEnv := []string{} + for _, entry := range cmd.Env { if strings.HasPrefix(entry, prefix) { - cmd.Env = append(cmd.Env[:i], cmd.Env[i+1:]...) - return + continue } + newEnv = append(newEnv, entry) + // key may appear multiple times, so keep going. } + cmd.Env = newEnv }