File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 33package cli
44
55import (
6+ "errors"
7+
68 "golang.org/x/sys/windows"
79)
810
911type terminalState struct {
10- mode uint32
12+ handle windows.Handle
13+ mode uint32
1114}
1215
1316func makeRaw (fd int ) (* terminalState , error ) {
14- handle := windows .Handle (fd )
17+ handle , err := windows .GetStdHandle (windows .STD_INPUT_HANDLE )
18+ if err != nil {
19+ return nil , err
20+ }
1521 var original uint32
1622 if err := windows .GetConsoleMode (handle , & original ); err != nil {
23+ if errors .Is (err , windows .ERROR_INVALID_HANDLE ) {
24+ return nil , nil
25+ }
1726 return nil , err
1827 }
1928
@@ -27,13 +36,12 @@ func makeRaw(fd int) (*terminalState, error) {
2736 return nil , err
2837 }
2938
30- return & terminalState {mode : original }, nil
39+ return & terminalState {handle : handle , mode : original }, nil
3140}
3241
3342func restore (fd int , state * terminalState ) {
3443 if state == nil {
3544 return
3645 }
37- handle := windows .Handle (fd )
38- _ = windows .SetConsoleMode (handle , state .mode )
46+ _ = windows .SetConsoleMode (state .handle , state .mode )
3947}
You can’t perform that action at this time.
0 commit comments