123456789101112131415161718192021222324252627 |
- package rcli
- import (
- "github.com/dotcloud/docker/term"
- "os"
- "os/signal"
- )
- //FIXME: move these function to utils.go (in rcli to avoid import loop)
- func SetRawTerminal() (*term.State, error) {
- oldState, err := term.MakeRaw(int(os.Stdin.Fd()))
- if err != nil {
- return nil, err
- }
- c := make(chan os.Signal, 1)
- signal.Notify(c, os.Interrupt)
- go func() {
- _ = <-c
- term.Restore(int(os.Stdin.Fd()), oldState)
- os.Exit(0)
- }()
- return oldState, err
- }
- func RestoreTerminal(state *term.State) {
- term.Restore(int(os.Stdin.Fd()), state)
- }
|