diff --git a/readline/readline.go b/readline/readline.go index 781ac8a3b..c4c73520e 100644 --- a/readline/readline.go +++ b/readline/readline.go @@ -192,14 +192,7 @@ func (i *Instance) Readline() (string, error) { case CharCtrlW: buf.DeleteWord() case CharCtrlZ: - if err := UnsetRawMode(fd, termios); err != nil { - return "", err - } - - syscall.Kill(0, syscall.SIGSTOP) - - // on resume... - return "", nil + return handleCharCtrlZ(fd, termios) case CharEnter: output := buf.String() if output != "" { diff --git a/readline/readline_unix.go b/readline/readline_unix.go new file mode 100644 index 000000000..a1e34d278 --- /dev/null +++ b/readline/readline_unix.go @@ -0,0 +1,18 @@ +//go:build !windows + +package readline + +import ( + "syscall" +) + +func handleCharCtrlZ(fd int, termios *Termios) (string, error) { + if err := UnsetRawMode(fd, termios); err != nil { + return "", err + } + + syscall.Kill(0, syscall.SIGSTOP) + + // on resume... + return "", nil +} diff --git a/readline/readline_windows.go b/readline/readline_windows.go new file mode 100644 index 000000000..c81789033 --- /dev/null +++ b/readline/readline_windows.go @@ -0,0 +1,6 @@ +package readline + +func handleCharCtrlZ(fd int, state *State) (string, error) { + // not supported + return "", nil +}