package cobol import ( "os" "go.wit.com/log" "golang.org/x/term" ) func osTerminalWidth() (int, bool) { w, _, err := ttyGetSize() if err == nil { return w, true } // term.IsTerminal checks if the given file descriptor is connected to a terminal. // We use os.Stdout.Fd() to check the standard output. if term.IsTerminal(int(os.Stdout.Fd())) { var err error // term.GetSize returns the dimensions of the given terminal. WIDTH, _, err = term.GetSize(int(os.Stdout.Fd())) if err != nil { // If we can't get the size for some reason, fall back to the default. log.Printf("could not get terminal size: %v", err) return WIDTH, false } return WIDTH, true } // If it's not a terminal, return the default width. return WIDTH, false } func ttyGetSize() (int, int, error) { tty, err := os.Open("/dev/tty") if err != nil { return 0, 0, err } w, h, err := term.GetSize(int(tty.Fd())) if err != nil { log.Info("linux.osTerminalWidth tty.Fd() err", w, h, err) } return w, h, err }