Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitaly.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/cloudflare/tableflip/process.go')
-rw-r--r--vendor/github.com/cloudflare/tableflip/process.go47
1 files changed, 47 insertions, 0 deletions
diff --git a/vendor/github.com/cloudflare/tableflip/process.go b/vendor/github.com/cloudflare/tableflip/process.go
new file mode 100644
index 000000000..c918a88c8
--- /dev/null
+++ b/vendor/github.com/cloudflare/tableflip/process.go
@@ -0,0 +1,47 @@
+package tableflip
+
+import (
+ "fmt"
+ "os"
+ "os/exec"
+)
+
+var initialWD, _ = os.Getwd()
+
+type process interface {
+ fmt.Stringer
+ Signal(sig os.Signal) error
+ Wait() error
+}
+
+type osProcess struct {
+ cmd *exec.Cmd
+}
+
+func newOSProcess(executable string, args []string, files []*os.File, env []string) (process, error) {
+ cmd := exec.Command(executable, args...)
+ cmd.Dir = initialWD
+ cmd.Stdin = os.Stdin
+ cmd.Stdout = os.Stdout
+ cmd.Stderr = os.Stderr
+ cmd.ExtraFiles = files
+ cmd.Env = env
+
+ if err := cmd.Start(); err != nil {
+ return nil, err
+ }
+
+ return &osProcess{cmd}, nil
+}
+
+func (osp *osProcess) Signal(sig os.Signal) error {
+ return osp.cmd.Process.Signal(sig)
+}
+
+func (osp *osProcess) Wait() error {
+ return osp.cmd.Wait()
+}
+
+func (osp *osProcess) String() string {
+ return fmt.Sprintf("pid=%d", osp.cmd.Process.Pid)
+}