mirror of
https://github.com/caddyserver/caddy.git
synced 2024-11-29 12:16:16 +08:00
6fde3632ef
The vendor/ folder was created with the help of @FiloSottile's gvt and vendorcheck. Any dependencies of Caddy plugins outside this repo are not vendored. We do not remove any unused, vendored packages because vendorcheck -u only checks using the current build configuration; i.e. packages that may be imported by files toggled by build tags of other systems. CI tests have been updated to ignore the vendor/ folder. When Go 1.9 is released, a few of the go commands should be revised to again use ./... as it will ignore the vendor folder by default.
39 lines
728 B
Go
39 lines
728 B
Go
// +build !appengine,linux freebsd darwin dragonfly netbsd openbsd
|
|
|
|
package kingpin
|
|
|
|
import (
|
|
"io"
|
|
"os"
|
|
"strconv"
|
|
"syscall"
|
|
"unsafe"
|
|
)
|
|
|
|
func guessWidth(w io.Writer) int {
|
|
// check if COLUMNS env is set to comply with
|
|
// http://pubs.opengroup.org/onlinepubs/009604499/basedefs/xbd_chap08.html
|
|
colsStr := os.Getenv("COLUMNS")
|
|
if colsStr != "" {
|
|
if cols, err := strconv.Atoi(colsStr); err == nil {
|
|
return cols
|
|
}
|
|
}
|
|
|
|
if t, ok := w.(*os.File); ok {
|
|
fd := t.Fd()
|
|
var dimensions [4]uint16
|
|
|
|
if _, _, err := syscall.Syscall6(
|
|
syscall.SYS_IOCTL,
|
|
uintptr(fd),
|
|
uintptr(syscall.TIOCGWINSZ),
|
|
uintptr(unsafe.Pointer(&dimensions)),
|
|
0, 0, 0,
|
|
); err == 0 {
|
|
return int(dimensions[1])
|
|
}
|
|
}
|
|
return 80
|
|
}
|