diff options
author | Junegunn Choi <junegunn.c@gmail.com> | 2023-02-14 23:21:34 +0900 |
---|---|---|
committer | Junegunn Choi <junegunn.c@gmail.com> | 2023-02-15 23:24:42 +0900 |
commit | 4e305eca26924a14d05758fb381edca1c5a5f55b (patch) | |
tree | 293e1e551d6d79e7037bba6510fe1b49a822a25e | |
parent | 9e9c0ceaf48ddbc3fe09850fb403708438edbed2 (diff) |
become: Set stdin to /dev/tty
-rw-r--r-- | src/terminal.go | 1 | ||||
-rw-r--r-- | src/util/util_unix.go | 6 | ||||
-rw-r--r-- | src/util/util_windows.go | 4 |
3 files changed, 11 insertions, 0 deletions
diff --git a/src/terminal.go b/src/terminal.go index 18f83530..8ab5434c 100644 --- a/src/terminal.go +++ b/src/terminal.go @@ -2876,6 +2876,7 @@ func (t *Terminal) Loop() { if t.history != nil { t.history.append(string(t.input)) } + util.SetStdin(tui.TtyIn()) syscall.Exec(shellPath, []string{shell, "-c", command}, os.Environ()) } } diff --git a/src/util/util_unix.go b/src/util/util_unix.go index a76f770a..2991fd2c 100644 --- a/src/util/util_unix.go +++ b/src/util/util_unix.go @@ -6,6 +6,8 @@ import ( "os" "os/exec" "syscall" + + "golang.org/x/sys/unix" ) // ExecCommand executes the given command with $SHELL @@ -45,3 +47,7 @@ func SetNonblock(file *os.File, nonblock bool) { func Read(fd int, b []byte) (int, error) { return syscall.Read(int(fd), b) } + +func SetStdin(file *os.File) { + unix.Dup2(int(file.Fd()), 0) +} diff --git a/src/util/util_windows.go b/src/util/util_windows.go index b3f4e016..aa69b99d 100644 --- a/src/util/util_windows.go +++ b/src/util/util_windows.go @@ -81,3 +81,7 @@ func SetNonblock(file *os.File, nonblock bool) { func Read(fd int, b []byte) (int, error) { return syscall.Read(syscall.Handle(fd), b) } + +func SetStdin(file *os.File) { + // No-op +} |