diff --git a/vendor.conf b/vendor.conf index c4bcf0b447..4d1edaca52 100644 --- a/vendor.conf +++ b/vendor.conf @@ -16,7 +16,7 @@ github.com/moby/term 7f0af18e79f2784809e9cef63d0d # could be either `mountinfo/vX.Y.Z` or `mount/vX.Y.Z`. github.com/moby/sys 9a75fe61baf4b9788826b48b0518abecffb79b16 # mountinfo v0.4.0 -github.com/creack/pty 3a6a957789163cacdfe0e291617a1c8e80612c11 # v1.1.9 +github.com/creack/pty 2a38352e8b4d7ab6c336eef107e42a55e72e7fbc # v1.1.11 github.com/sirupsen/logrus 6699a89a232f3db797f2e280639854bbc4b89725 # v1.7.0 github.com/tchap/go-patricia a7f0089c6f496e8e70402f61733606daa326cac5 # v2.3.0 golang.org/x/net ab34263943818b32f575efc978a3d24e80b04bd7 diff --git a/vendor/github.com/creack/pty/run.go b/vendor/github.com/creack/pty/run.go index 959be26b20..b07942514d 100644 --- a/vendor/github.com/creack/pty/run.go +++ b/vendor/github.com/creack/pty/run.go @@ -11,6 +11,8 @@ import ( // Start assigns a pseudo-terminal tty os.File to c.Stdin, c.Stdout, // and c.Stderr, calls c.Start, and returns the File of the tty's // corresponding pty. +// +// Starts the process in a new session and sets the controlling terminal. func Start(c *exec.Cmd) (pty *os.File, err error) { return StartWithSize(c, nil) } @@ -19,16 +21,35 @@ func Start(c *exec.Cmd) (pty *os.File, err error) { // and c.Stderr, calls c.Start, and returns the File of the tty's // corresponding pty. // -// This will resize the pty to the specified size before starting the command +// This will resize the pty to the specified size before starting the command. +// Starts the process in a new session and sets the controlling terminal. func StartWithSize(c *exec.Cmd, sz *Winsize) (pty *os.File, err error) { + if c.SysProcAttr == nil { + c.SysProcAttr = &syscall.SysProcAttr{} + } + c.SysProcAttr.Setsid = true + c.SysProcAttr.Setctty = true + return StartWithAttrs(c, sz, c.SysProcAttr) +} + +// StartWithAttrs assigns a pseudo-terminal tty os.File to c.Stdin, c.Stdout, +// and c.Stderr, calls c.Start, and returns the File of the tty's +// corresponding pty. +// +// This will resize the pty to the specified size before starting the command if a size is provided. +// The `attrs` parameter overrides the one set in c.SysProcAttr. +// +// This should generally not be needed. Used in some edge cases where it is needed to create a pty +// without a controlling terminal. +func StartWithAttrs(c *exec.Cmd, sz *Winsize, attrs *syscall.SysProcAttr) (pty *os.File, err error) { pty, tty, err := Open() if err != nil { return nil, err } defer tty.Close() + if sz != nil { - err = Setsize(pty, sz) - if err != nil { + if err := Setsize(pty, sz); err != nil { pty.Close() return nil, err } @@ -42,15 +63,11 @@ func StartWithSize(c *exec.Cmd, sz *Winsize) (pty *os.File, err error) { if c.Stdin == nil { c.Stdin = tty } - if c.SysProcAttr == nil { - c.SysProcAttr = &syscall.SysProcAttr{} - } - c.SysProcAttr.Setctty = true - c.SysProcAttr.Setsid = true - c.SysProcAttr.Ctty = int(tty.Fd()) - err = c.Start() - if err != nil { - pty.Close() + + c.SysProcAttr = attrs + + if err := c.Start(); err != nil { + _ = pty.Close() return nil, err } return pty, err diff --git a/vendor/github.com/creack/pty/ztypes_freebsd_arm64.go b/vendor/github.com/creack/pty/ztypes_freebsd_arm64.go new file mode 100644 index 0000000000..4418139b26 --- /dev/null +++ b/vendor/github.com/creack/pty/ztypes_freebsd_arm64.go @@ -0,0 +1,13 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs types_freebsd.go + +package pty + +const ( + _C_SPECNAMELEN = 0xff +) + +type fiodgnameArg struct { + Len int32 + Buf *byte +} diff --git a/vendor/github.com/creack/pty/ztypes_openbsd_386.go b/vendor/github.com/creack/pty/ztypes_openbsd_32bit_int.go similarity index 61% rename from vendor/github.com/creack/pty/ztypes_openbsd_386.go rename to vendor/github.com/creack/pty/ztypes_openbsd_32bit_int.go index ccb3aab9ae..d7cab4a2ab 100644 --- a/vendor/github.com/creack/pty/ztypes_openbsd_386.go +++ b/vendor/github.com/creack/pty/ztypes_openbsd_32bit_int.go @@ -1,5 +1,5 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs types_openbsd.go +// +build openbsd +// +build 386 amd64 arm arm64 package pty diff --git a/vendor/github.com/creack/pty/ztypes_openbsd_amd64.go b/vendor/github.com/creack/pty/ztypes_openbsd_amd64.go deleted file mode 100644 index e67051688f..0000000000 --- a/vendor/github.com/creack/pty/ztypes_openbsd_amd64.go +++ /dev/null @@ -1,13 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs types_openbsd.go - -package pty - -type ptmget struct { - Cfd int32 - Sfd int32 - Cn [16]int8 - Sn [16]int8 -} - -var ioctl_PTMGET = 0x40287401