| 12345678910111213141516171819202122232425262728293031323334 |
- // +build !windows
- package term
- import (
- "sync"
- "github.com/pkg/term/termios"
- "golang.org/x/sys/unix"
- )
- var (
- saveTermios unix.Termios
- saveTermiosFD int
- saveTermiosOnce sync.Once
- )
- func getOriginalTermios(fd int) (unix.Termios, error) {
- var err error
- saveTermiosOnce.Do(func() {
- saveTermiosFD = fd
- err = termios.Tcgetattr(uintptr(fd), &saveTermios)
- })
- return saveTermios, err
- }
- // Restore terminal's mode.
- func Restore() error {
- o, err := getOriginalTermios(saveTermiosFD)
- if err != nil {
- return err
- }
- return termios.Tcsetattr(uintptr(saveTermiosFD), termios.TCSANOW, &o)
- }
|