Docker-DCO-1.1-Signed-off-by: Guillaume J. Charmes <guillaume@charmes.net> (github: creack)
| ... | ... |
@@ -9,16 +9,24 @@ const ( |
| 9 | 9 |
getTermios = syscall.TIOCGETA |
| 10 | 10 |
setTermios = syscall.TIOCSETA |
| 11 | 11 |
|
| 12 |
- ECHO = 0x00000008 |
|
| 13 |
- ONLCR = 0x2 |
|
| 14 |
- ISTRIP = 0x20 |
|
| 15 |
- INLCR = 0x40 |
|
| 16 |
- ISIG = 0x80 |
|
| 17 |
- IGNCR = 0x80 |
|
| 18 |
- ICANON = 0x100 |
|
| 19 |
- ICRNL = 0x100 |
|
| 20 |
- IXOFF = 0x400 |
|
| 21 |
- IXON = 0x200 |
|
| 12 |
+ IGNBRK = syscall.IGNBRK |
|
| 13 |
+ PARMRK = syscall.PARMRK |
|
| 14 |
+ INLCR = syscall.INLCR |
|
| 15 |
+ IGNCR = syscall.IGNCR |
|
| 16 |
+ ECHONL = syscall.ECHONL |
|
| 17 |
+ CSIZE = syscall.CSIZE |
|
| 18 |
+ ICRNL = syscall.ICRNL |
|
| 19 |
+ ISTRIP = syscall.ISTRIP |
|
| 20 |
+ PARENB = syscall.PARENB |
|
| 21 |
+ ECHO = syscall.ECHO |
|
| 22 |
+ ICANON = syscall.ICANON |
|
| 23 |
+ ISIG = syscall.ISIG |
|
| 24 |
+ IXON = syscall.IXON |
|
| 25 |
+ BRKINT = syscall.BRKINT |
|
| 26 |
+ INPCK = syscall.INPCK |
|
| 27 |
+ OPOST = syscall.OPOST |
|
| 28 |
+ CS8 = syscall.CS8 |
|
| 29 |
+ IEXTEN = syscall.IEXTEN |
|
| 22 | 30 |
) |
| 23 | 31 |
|
| 24 | 32 |
type Termios struct {
|
| ... | ... |
@@ -41,10 +49,13 @@ func MakeRaw(fd uintptr) (*State, error) {
|
| 41 | 41 |
} |
| 42 | 42 |
|
| 43 | 43 |
newState := oldState.termios |
| 44 |
- newState.Iflag &^= (ISTRIP | INLCR | IGNCR | IXON | IXOFF) |
|
| 45 |
- newState.Iflag |= ICRNL |
|
| 46 |
- newState.Oflag |= ONLCR |
|
| 47 |
- newState.Lflag &^= (ECHO | ICANON | ISIG) |
|
| 44 |
+ newState.Iflag &^= (IGNBRK | BRKINT | PARMRK | ISTRIP | INLCR | IGNCR | ICRNL | IXON) |
|
| 45 |
+ newState.Oflag &^= OPOST |
|
| 46 |
+ newState.Lflag &^= (ECHO | ECHONL | ICANON | ISIG | IEXTEN) |
|
| 47 |
+ newState.Cflag &^= (CSIZE | PARENB) |
|
| 48 |
+ newState.Cflag |= CS8 |
|
| 49 |
+ newState.Cc[syscall.VMIN] = 1 |
|
| 50 |
+ newState.Cc[syscall.VTIME] = 0 |
|
| 48 | 51 |
|
| 49 | 52 |
if _, _, err := syscall.Syscall(syscall.SYS_IOCTL, fd, uintptr(setTermios), uintptr(unsafe.Pointer(&newState))); err != 0 {
|
| 50 | 53 |
return nil, err |
| ... | ... |
@@ -47,8 +47,6 @@ func MakeRaw(fd uintptr) (*State, error) {
|
| 47 | 47 |
if _, _, err := syscall.Syscall(syscall.SYS_IOCTL, fd, uintptr(getTermios), uintptr(unsafe.Pointer(&oldState.termios))); err != 0 {
|
| 48 | 48 |
return nil, err |
| 49 | 49 |
} |
| 50 |
- // C.makeraw() |
|
| 51 |
- // return &oldState, nil |
|
| 52 | 50 |
|
| 53 | 51 |
newState := oldState.termios |
| 54 | 52 |
newState.Iflag &^= (IGNBRK | BRKINT | PARMRK | ISTRIP | INLCR | IGNCR | ICRNL | IXON) |