diff options
author | Sergey Grebenshchikov <sgreben@gmail.com> | 2018-03-30 15:16:54 +0200 |
---|---|---|
committer | Sergey Grebenshchikov <sgreben@gmail.com> | 2018-03-30 15:16:54 +0200 |
commit | e95edd478ddb5c796033772edaeee0e3adbe9ecf (patch) | |
tree | 581c9c2017314a5a2281d4b931e319edc1111e9a /pkg | |
parent | d9d6da484640d23fd88e0323ea3b80d14981d3fa (diff) |
Gracefully handle non-tty stdout1.1.5
Diffstat (limited to 'pkg')
-rw-r--r-- | pkg/terminal/terminal.go | 4 | ||||
-rw-r--r-- | pkg/terminal/terminal_sysioctl.go | 16 |
2 files changed, 15 insertions, 5 deletions
diff --git a/pkg/terminal/terminal.go b/pkg/terminal/terminal.go index 207275d..d15acee 100644 --- a/pkg/terminal/terminal.go +++ b/pkg/terminal/terminal.go @@ -31,7 +31,7 @@ func Width() int { col, _, err := getWinsize() if err != nil { - return -1 + return 79 } return col @@ -40,7 +40,7 @@ func Width() int { func Height() int { _, row, err := getWinsize() if err != nil { - return -1 + return 24 } return row } diff --git a/pkg/terminal/terminal_sysioctl.go b/pkg/terminal/terminal_sysioctl.go index 121b566..36bc1e2 100644 --- a/pkg/terminal/terminal_sysioctl.go +++ b/pkg/terminal/terminal_sysioctl.go @@ -11,9 +11,19 @@ import ( func getWinsize() (int, int, error) { ws, err := unix.IoctlGetWinsize(int(os.Stdout.Fd()), unix.TIOCGWINSZ) - if err != nil { - return 0, 0, os.NewSyscallError("GetWinsize", err) + if err == nil { + return int(ws.Col), int(ws.Row), nil } - return int(ws.Col), int(ws.Row), nil + ws, err = unix.IoctlGetWinsize(int(os.Stdin.Fd()), unix.TIOCGWINSZ) + if err == nil { + return int(ws.Col), int(ws.Row), nil + } + + ws, err = unix.IoctlGetWinsize(int(os.Stderr.Fd()), unix.TIOCGWINSZ) + if err == nil { + return int(ws.Col), int(ws.Row), nil + } + + return 0, 0, os.NewSyscallError("GetWinsize", err) } |