]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/dist: simplify exec.Cmd helpers
authorAustin Clements <austin@google.com>
Mon, 29 Aug 2022 21:24:01 +0000 (17:24 -0400)
committerAustin Clements <austin@google.com>
Fri, 16 Sep 2022 15:08:31 +0000 (15:08 +0000)
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 <gobot@golang.org>
Reviewed-by: Bryan Mills <bcmills@google.com>
Run-TryBot: Austin Clements <austin@google.com>
Reviewed-by: Ian Lance Taylor <iant@google.com>
src/cmd/dist/exec.go

index 67305530ae83fcbc6a30e1956ad25094d1935d30..43f503cb6c8b1f1d62acae7dd7f6646be118ae4d 100644 (file)
@@ -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
 }