From d9f90df2b488b2fb7ca8c24d99f82878befb68f8 Mon Sep 17 00:00:00 2001 From: Austin Clements Date: Mon, 29 Aug 2022 17:24:01 -0400 Subject: [PATCH] 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 --- src/cmd/dist/exec.go | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) 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 } -- 2.50.0