Sfoglia il codice sorgente

Fixing newlines in attached mode

shin- 12 anni fa
parent
commit
b00ff47963
3 ha cambiato i file con 50 aggiunte e 23 eliminazioni
  1. 0 21
      term/term.go
  2. 25 1
      term/termios_darwin.go
  3. 25 1
      term/termios_linux.go

+ 0 - 21
term/term.go

@@ -114,27 +114,6 @@ func IsTerminal(fd int) bool {
 	return err == 0
 }
 
-// MakeRaw put the terminal connected to the given file descriptor into raw
-// mode and returns the previous state of the terminal so that it can be
-// restored.
-func MakeRaw(fd int) (*State, error) {
-	var oldState State
-	if _, _, err := syscall.Syscall6(syscall.SYS_IOCTL, uintptr(fd), uintptr(getTermios), uintptr(unsafe.Pointer(&oldState.termios)), 0, 0, 0); err != 0 {
-		return nil, err
-	}
-
-	newState := oldState.termios
-	newState.Iflag &^= ISTRIP | INLCR | IGNCR | IXON | IXOFF
-	newState.Iflag |= ICRNL
-	newState.Oflag |= ONLCR
-	newState.Lflag &^= ECHO | ICANON | ISIG
-	if _, _, err := syscall.Syscall6(syscall.SYS_IOCTL, uintptr(fd), uintptr(setTermios), uintptr(unsafe.Pointer(&newState)), 0, 0, 0); err != 0 {
-		return nil, err
-	}
-
-	return &oldState, nil
-}
-
 // Restore restores the terminal connected to the given file descriptor to a
 // previous state.
 func Restore(fd int, state *State) error {

+ 25 - 1
term/termios_darwin.go

@@ -1,8 +1,32 @@
 package term
 
-import "syscall"
+import (
+    "syscall"
+    "unsafe"
+)
 
 const (
 	getTermios = syscall.TIOCGETA
 	setTermios = syscall.TIOCSETA
 )
+
+// MakeRaw put the terminal connected to the given file descriptor into raw
+// mode and returns the previous state of the terminal so that it can be
+// restored.
+func MakeRaw(fd int) (*State, error) {
+    var oldState State
+    if _, _, err := syscall.Syscall6(syscall.SYS_IOCTL, uintptr(fd), uintptr(getTermios), uintptr(unsafe.Pointer(&oldState.termios)), 0, 0, 0); err != 0 {
+        return nil, err
+    }
+
+    newState := oldState.termios
+    newState.Iflag &^= ISTRIP | INLCR | IGNCR | IXON | IXOFF
+    newState.Iflag |= ICRNL
+    newState.Oflag |= ONLCR
+    newState.Lflag &^= ECHO | ICANON | ISIG
+    if _, _, err := syscall.Syscall6(syscall.SYS_IOCTL, uintptr(fd), uintptr(setTermios), uintptr(unsafe.Pointer(&newState)), 0, 0, 0); err != 0 {
+        return nil, err
+    }
+
+    return &oldState, nil
+}

+ 25 - 1
term/termios_linux.go

@@ -1,8 +1,32 @@
 package term
 
-import "syscall"
+import (
+    "syscall"
+    "unsafe"
+)
 
 const (
 	getTermios = syscall.TCGETS
 	setTermios = syscall.TCSETS
 )
+
+// MakeRaw put the terminal connected to the given file descriptor into raw
+// mode and returns the previous state of the terminal so that it can be
+// restored.
+func MakeRaw(fd int) (*State, error) {
+    var oldState State
+    if _, _, err := syscall.Syscall6(syscall.SYS_IOCTL, uintptr(fd), uintptr(getTermios), uintptr(unsafe.Pointer(&oldState.termios)), 0, 0, 0); err != 0 {
+        return nil, err
+    }
+
+    newState := oldState.termios
+    newState.Iflag &^= ISTRIP | IXON | IXOFF
+    newState.Iflag |= ICRNL
+    newState.Oflag |= ONLCR
+    newState.Lflag &^= ECHO | ICANON | ISIG
+    if _, _, err := syscall.Syscall6(syscall.SYS_IOCTL, uintptr(fd), uintptr(setTermios), uintptr(unsafe.Pointer(&newState)), 0, 0, 0); err != 0 {
+        return nil, err
+    }
+
+    return &oldState, nil
+}