| 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) |
| } |