1
0
forked from x/icebergs
icebergs/misc/xterm/winsize_unix.go
2023-04-23 12:06:58 +08:00

32 lines
545 B
Go

//go:build !windows
// +build !windows
package xterm
import (
"os"
"os/exec"
"syscall"
"unsafe"
)
func Setsize(t *os.File, ws *Winsize) error {
return ioctl(t.Fd(), syscall.TIOCSWINSZ, uintptr(unsafe.Pointer(ws)))
}
const (
TIOCGWINSZ = syscall.TIOCGWINSZ
TIOCSWINSZ = syscall.TIOCSWINSZ
)
func ioctl(fd, cmd, ptr uintptr) error {
_, _, e := syscall.Syscall(syscall.SYS_IOCTL, fd, cmd, ptr)
if e != 0 {
return e
}
return nil
}
func Setsid(cmd *exec.Cmd) {
cmd.SysProcAttr = &syscall.SysProcAttr{Setsid: true, Setctty: true}
}