Skip to content

Commit d9f90df

Browse files
committed
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 <[email protected]> Reviewed-by: Bryan Mills <[email protected]> Run-TryBot: Austin Clements <[email protected]> Reviewed-by: Ian Lance Taylor <[email protected]>
1 parent 88b51d2 commit d9f90df

File tree

1 file changed

+6
-15
lines changed

1 file changed

+6
-15
lines changed

src/cmd/dist/exec.go

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -17,23 +17,11 @@ func setDir(cmd *exec.Cmd, dir string) {
1717
}
1818

1919
// setEnv sets cmd.Env so that key = value.
20-
//
21-
// It first removes any existing values for key, so it is safe to call
22-
// even from within cmdbootstrap.
2320
func setEnv(cmd *exec.Cmd, key, value string) {
2421
kv := key + "=" + value
2522
if cmd.Env == nil {
2623
cmd.Env = os.Environ()
2724
}
28-
29-
prefix := kv[:len(key)+1]
30-
for i, entry := range cmd.Env {
31-
if strings.HasPrefix(entry, prefix) {
32-
cmd.Env[i] = kv
33-
return
34-
}
35-
}
36-
3725
cmd.Env = append(cmd.Env, kv)
3826
}
3927

@@ -44,10 +32,13 @@ func unsetEnv(cmd *exec.Cmd, key string) {
4432
}
4533

4634
prefix := key + "="
47-
for i, entry := range cmd.Env {
35+
newEnv := []string{}
36+
for _, entry := range cmd.Env {
4837
if strings.HasPrefix(entry, prefix) {
49-
cmd.Env = append(cmd.Env[:i], cmd.Env[i+1:]...)
50-
return
38+
continue
5139
}
40+
newEnv = append(newEnv, entry)
41+
// key may appear multiple times, so keep going.
5242
}
43+
cmd.Env = newEnv
5344
}

0 commit comments

Comments
 (0)