readline/utils_unix.go

31 lines
500 B
Go
Raw Normal View History

2015-09-27 06:41:05 +03:00
// +build darwin dragonfly freebsd linux,!appengine netbsd openbsd
package readline
import (
"syscall"
"unsafe"
)
type winsize struct {
Row uint16
Col uint16
Xpixel uint16
Ypixel uint16
}
// get width of the terminal
func getWidth(stdoutFd int) int {
2015-09-27 06:41:05 +03:00
ws := &winsize{}
retCode, _, errno := syscall.Syscall(syscall.SYS_IOCTL,
uintptr(stdoutFd),
2015-09-27 06:41:05 +03:00
uintptr(syscall.TIOCGWINSZ),
uintptr(unsafe.Pointer(ws)))
if int(retCode) == -1 {
_ = errno
return -1
2015-09-27 06:41:05 +03:00
}
return int(ws.Col)
}