12345678910111213141516171819202122232425262728293031323334353637 |
- // +build linux darwin freebsd openbsd netbsd
- package liner
- import (
- "syscall"
- "unsafe"
- )
- func (mode *termios) ApplyMode() error {
- _, _, errno := syscall.Syscall(syscall.SYS_IOCTL, uintptr(syscall.Stdin), setTermios, uintptr(unsafe.Pointer(mode)))
- if errno != 0 {
- return errno
- }
- return nil
- }
- // TerminalMode returns the current terminal input mode as an InputModeSetter.
- //
- // This function is provided for convenience, and should
- // not be necessary for most users of liner.
- func TerminalMode() (ModeApplier, error) {
- mode, errno := getMode(syscall.Stdin)
- if errno != 0 {
- return nil, errno
- }
- return mode, nil
- }
- func getMode(handle int) (*termios, syscall.Errno) {
- var mode termios
- _, _, errno := syscall.Syscall(syscall.SYS_IOCTL, uintptr(handle), getTermios, uintptr(unsafe.Pointer(&mode)))
- return &mode, errno
- }
|