Merge pull request #1727 from pmorjan/update-console

Update console dependency to fix runc exec on BE
This commit is contained in:
Qiang Huang 2018-02-22 15:40:44 +08:00 committed by GitHub
commit b50fa98d9e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 9 additions and 13 deletions

View File

@ -21,5 +21,5 @@ github.com/urfave/cli d53eb991652b1d438abdd34ce4bfa3ef1539108e
golang.org/x/sys 7ddbeae9ae08c6a06a59597f0c9edbc5ff2444ce https://github.com/golang/sys golang.org/x/sys 7ddbeae9ae08c6a06a59597f0c9edbc5ff2444ce https://github.com/golang/sys
# console dependencies # console dependencies
github.com/containerd/console 84eeaae905fa414d03e07bcd6c8d3f19e7cf180e github.com/containerd/console 2748ece16665b45a47f884001d5831ec79703880
github.com/pkg/errors v0.8.0 github.com/pkg/errors v0.8.0

View File

@ -13,25 +13,21 @@ const (
cmdTcSet = unix.TCSETS cmdTcSet = unix.TCSETS
) )
func ioctl(fd, flag, data uintptr) error { // unlockpt unlocks the slave pseudoterminal device corresponding to the master pseudoterminal referred to by f.
if _, _, err := unix.Syscall(unix.SYS_IOCTL, fd, flag, data); err != 0 { // unlockpt should be called before opening the slave side of a pty.
func unlockpt(f *os.File) error {
var u int32
if _, _, err := unix.Syscall(unix.SYS_IOCTL, f.Fd(), unix.TIOCSPTLCK, uintptr(unsafe.Pointer(&u))); err != 0 {
return err return err
} }
return nil return nil
} }
// unlockpt unlocks the slave pseudoterminal device corresponding to the master pseudoterminal referred to by f.
// unlockpt should be called before opening the slave side of a pty.
func unlockpt(f *os.File) error {
var u int32
return ioctl(f.Fd(), unix.TIOCSPTLCK, uintptr(unsafe.Pointer(&u)))
}
// ptsname retrieves the name of the first available pts for the given master. // ptsname retrieves the name of the first available pts for the given master.
func ptsname(f *os.File) (string, error) { func ptsname(f *os.File) (string, error) {
n, err := unix.IoctlGetInt(int(f.Fd()), unix.TIOCGPTN) var u uint32
if err != nil { if _, _, err := unix.Syscall(unix.SYS_IOCTL, f.Fd(), unix.TIOCGPTN, uintptr(unsafe.Pointer(&u))); err != 0 {
return "", err return "", err
} }
return fmt.Sprintf("/dev/pts/%d", n), nil return fmt.Sprintf("/dev/pts/%d", u), nil
} }