Browse code

Use uintptr instead of int for Fd

Guillaume J. Charmes authored on 2013/06/02 07:55:05
Showing 3 changed files
... ...
@@ -1414,7 +1414,7 @@ func (cli *DockerCli) hijack(method, path string, setRawTerminal bool, in *os.Fi
1414 1414
 		return err
1415 1415
 	})
1416 1416
 
1417
-	if in != nil && setRawTerminal && term.IsTerminal(int(in.Fd())) && os.Getenv("NORAW") == "" {
1417
+	if in != nil && setRawTerminal && term.IsTerminal(in.Fd()) && os.Getenv("NORAW") == "" {
1418 1418
 		if oldState, err := term.SetRawTerminal(); err != nil {
1419 1419
 			return err
1420 1420
 		} else {
... ...
@@ -1433,7 +1433,7 @@ func (cli *DockerCli) hijack(method, path string, setRawTerminal bool, in *os.Fi
1433 1433
 		return err
1434 1434
 	}
1435 1435
 
1436
-	if !term.IsTerminal(int(os.Stdin.Fd())) {
1436
+	if !term.IsTerminal(os.Stdin.Fd()) {
1437 1437
 		if err := <-sendStdin; err != nil {
1438 1438
 			return err
1439 1439
 		}
... ...
@@ -128,21 +128,21 @@ func SetWinsize(fd uintptr, ws *Winsize) error {
128 128
 }
129 129
 
130 130
 // IsTerminal returns true if the given file descriptor is a terminal.
131
-func IsTerminal(fd int) bool {
131
+func IsTerminal(fd uintptr) bool {
132 132
 	var termios Termios
133
-	_, _, err := syscall.Syscall(syscall.SYS_IOCTL, uintptr(fd), uintptr(getTermios), uintptr(unsafe.Pointer(&termios)))
133
+	_, _, err := syscall.Syscall(syscall.SYS_IOCTL, fd, uintptr(getTermios), uintptr(unsafe.Pointer(&termios)))
134 134
 	return err == 0
135 135
 }
136 136
 
137 137
 // Restore restores the terminal connected to the given file descriptor to a
138 138
 // previous state.
139
-func Restore(fd int, state *State) error {
140
-	_, _, err := syscall.Syscall(syscall.SYS_IOCTL, uintptr(fd), uintptr(setTermios), uintptr(unsafe.Pointer(&state.termios)))
139
+func Restore(fd uintptr, state *State) error {
140
+	_, _, err := syscall.Syscall(syscall.SYS_IOCTL, fd, uintptr(setTermios), uintptr(unsafe.Pointer(&state.termios)))
141 141
 	return err
142 142
 }
143 143
 
144 144
 func SetRawTerminal() (*State, error) {
145
-	oldState, err := MakeRaw(int(os.Stdin.Fd()))
145
+	oldState, err := MakeRaw(os.Stdin.Fd())
146 146
 	if err != nil {
147 147
 		return nil, err
148 148
 	}
... ...
@@ -150,12 +150,12 @@ func SetRawTerminal() (*State, error) {
150 150
 	signal.Notify(c, os.Interrupt)
151 151
 	go func() {
152 152
 		_ = <-c
153
-		Restore(int(os.Stdin.Fd()), oldState)
153
+		Restore(os.Stdin.Fd(), oldState)
154 154
 		os.Exit(0)
155 155
 	}()
156 156
 	return oldState, err
157 157
 }
158 158
 
159 159
 func RestoreTerminal(state *State) {
160
-	Restore(int(os.Stdin.Fd()), state)
160
+	Restore(os.Stdin.Fd(), state)
161 161
 }
... ...
@@ -13,9 +13,9 @@ const (
13 13
 // MakeRaw put the terminal connected to the given file descriptor into raw
14 14
 // mode and returns the previous state of the terminal so that it can be
15 15
 // restored.
16
-func MakeRaw(fd int) (*State, error) {
16
+func MakeRaw(fd uintptr) (*State, error) {
17 17
 	var oldState State
18
-	if _, _, err := syscall.Syscall(syscall.SYS_IOCTL, uintptr(fd), getTermios, uintptr(unsafe.Pointer(&oldState.termios))); err != 0 {
18
+	if _, _, err := syscall.Syscall(syscall.SYS_IOCTL, fd, getTermios, uintptr(unsafe.Pointer(&oldState.termios))); err != 0 {
19 19
 		return nil, err
20 20
 	}
21 21
 
... ...
@@ -27,7 +27,7 @@ func MakeRaw(fd int) (*State, error) {
27 27
 	newState.Cflag &^= (syscall.CSIZE | syscall.PARENB)
28 28
 	newState.Cflag |= syscall.CS8
29 29
 
30
-	if _, _, err := syscall.Syscall(syscall.SYS_IOCTL, uintptr(fd), setTermios, uintptr(unsafe.Pointer(&newState))); err != 0 {
30
+	if _, _, err := syscall.Syscall(syscall.SYS_IOCTL, fd, setTermios, uintptr(unsafe.Pointer(&newState))); err != 0 {
31 31
 		return nil, err
32 32
 	}
33 33
 	return &oldState, nil