You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
30 lines
535 B
30 lines
535 B
// Copyright (c) Tailscale Inc & AUTHORS
|
|
// SPDX-License-Identifier: BSD-3-Clause
|
|
|
|
//go:build !unix
|
|
|
|
package main
|
|
|
|
import (
|
|
"errors"
|
|
"os"
|
|
"os/exec"
|
|
)
|
|
|
|
func doExec(cmd string, args []string, env []string) error {
|
|
c := exec.Command(cmd, args[1:]...)
|
|
c.Env = env
|
|
c.Stdin = os.Stdin
|
|
c.Stdout = os.Stdout
|
|
c.Stderr = os.Stderr
|
|
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
|
|
}
|
|
|