25 lines
451 B
Go
25 lines
451 B
Go
//go:build linux || darwin || freebsd
|
|
|
|
package terminal
|
|
|
|
import (
|
|
"syscall"
|
|
"unsafe"
|
|
)
|
|
|
|
type winSize struct {
|
|
row, col uint16
|
|
xpixel, ypixel uint16
|
|
}
|
|
|
|
func (w *pagingWriter) getWindowSize() {
|
|
var ws winSize
|
|
ok, _, _ := syscall.Syscall(syscall.SYS_IOCTL, uintptr(syscall.Stdout), syscall.TIOCGWINSZ, uintptr(unsafe.Pointer(&ws)))
|
|
if int(ok) < 0 {
|
|
w.mode = pagingWriterNormal
|
|
return
|
|
}
|
|
w.lines = int(ws.row)
|
|
w.columns = int(ws.col)
|
|
}
|