2023-02-21 16:07:33 -08:00
|
|
|
// Copyright (c) Tailscale Inc & AUTHORS
|
|
|
|
|
// SPDX-License-Identifier: BSD-3-Clause
|
|
|
|
|
|
|
|
|
|
//go:build !unix
|
|
|
|
|
|
|
|
|
|
package main
|
|
|
|
|
|
|
|
|
|
import (
|
2025-09-15 11:40:34 -06:00
|
|
|
"errors"
|
2023-02-21 16:07:33 -08:00
|
|
|
"os"
|
|
|
|
|
"os/exec"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
func doExec(cmd string, args []string, env []string) error {
|
2025-07-21 14:14:02 -06:00
|
|
|
c := exec.Command(cmd, args[1:]...)
|
2023-02-21 16:07:33 -08:00
|
|
|
c.Env = env
|
|
|
|
|
c.Stdin = os.Stdin
|
|
|
|
|
c.Stdout = os.Stdout
|
|
|
|
|
c.Stderr = os.Stderr
|
2025-09-15 11:40:34 -06:00
|
|
|
err := c.Run()
|
|
|
|
|
|
|
|
|
|
// Propagate ExitErrors within this func to give us similar semantics to
|
|
|
|
|
// the Unix variant.
|
|
|
|
|
var ee *exec.ExitError
|
|
|
|
|
if errors.As(err, &ee) {
|
|
|
|
|
os.Exit(ee.ExitCode())
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return err
|
2023-02-21 16:07:33 -08:00
|
|
|
}
|