mirror of
https://github.com/clearlinux/docker.git
synced 2026-08-27 03:08:04 +00:00
term/winconsole: Identify tty correctly, fix resize problem
This change fixes a bug where stdout/stderr handles are not identified
correctly.
Previously we used to set the window size to fixed size to fit the default
tty size on the host (80x24). Now the attach/exec commands can correctly
get the terminal size from windows.
We still do not `monitorTtySize()` correctly on windows and update the tty
size on the host-side, in order to fix that we'll provide a
platform-specific `monitorTtySize` implementation in the future.
Signed-off-by: Ahmet Alp Balkan <ahmetalpbalkan@gmail.com>
(cherry picked from commit 0532dcf3dc)
Docker-DCO-1.1-Signed-off-by: Jessie Frazelle <hugs@docker.com> (github: jfrazelle)
This commit is contained in:
committed by
Jessica Frazelle
parent
63cb03a55b
commit
054acc4bee
@@ -241,8 +241,6 @@ func StdStreams() (stdIn io.ReadCloser, stdOut io.Writer, stdErr io.Writer) {
|
||||
}
|
||||
handler.screenBufferInfo = screenBufferInfo
|
||||
|
||||
// Set the window size
|
||||
SetWindowSize(stdoutHandle, DEFAULT_WIDTH, DEFAULT_HEIGHT, DEFAULT_HEIGHT)
|
||||
buffer = make([]CHAR_INFO, screenBufferInfo.MaximumWindowSize.X*screenBufferInfo.MaximumWindowSize.Y)
|
||||
|
||||
stdOut = &terminalWriter{
|
||||
@@ -283,6 +281,12 @@ func GetHandleInfo(in interface{}) (uintptr, bool) {
|
||||
isTerminalIn = IsTerminal(inFd)
|
||||
}
|
||||
}
|
||||
if tr, ok := in.(*terminalWriter); ok {
|
||||
if file, ok := tr.wrappedWriter.(*os.File); ok {
|
||||
inFd = file.Fd()
|
||||
isTerminalIn = IsTerminal(inFd)
|
||||
}
|
||||
}
|
||||
return inFd, isTerminalIn
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user