You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
DateKeys/cmd/datekeys/term_windows.go

27 lines
709 B

//go:build windows
package main
import (
"os"
"syscall"
"unsafe"
)
var getConsoleScreenBufferInfo = syscall.NewLazyDLL("kernel32.dll").NewProc("GetConsoleScreenBufferInfo")
// termWidth returns the width of the window of the console f, and false when
// f is not a console: GetConsoleScreenBufferInfo fails on anything else.
func termWidth(f *os.File) (int, bool) {
var info struct {
size, cursor struct{ x, y int16 }
attributes uint16
left, top, right, bottom int16
maxX, maxY int16
}
if ok, _, _ := getConsoleScreenBufferInfo.Call(f.Fd(), uintptr(unsafe.Pointer(&info))); ok == 0 {
return 0, false
}
return int(info.right-info.left) + 1, true
}

Powered by TurnKey Linux.