1234567891011121314151617181920212223242526272829303132333435 |
- package pty
- import (
- "os"
- "syscall"
- "unsafe"
- )
- // Getsize returns the number of rows (lines) and cols (positions
- // in each line) in terminal t.
- func Getsize(t *os.File) (rows, cols int, err error) {
- var ws winsize
- err = windowrect(&ws, t.Fd())
- return int(ws.ws_row), int(ws.ws_col), err
- }
- type winsize struct {
- ws_row uint16
- ws_col uint16
- ws_xpixel uint16
- ws_ypixel uint16
- }
- func windowrect(ws *winsize, fd uintptr) error {
- _, _, errno := syscall.Syscall(
- syscall.SYS_IOCTL,
- fd,
- syscall.TIOCGWINSZ,
- uintptr(unsafe.Pointer(ws)),
- )
- if errno != 0 {
- return syscall.Errno(errno)
- }
- return nil
- }
|