console
console copied to clipboard
windows: Why `initStdios` ignores `GetConsoleMode` errors?
Hey there, Frankly good designed library.
Specifically I am not aware how golang
std
works but if it gets its streams using GetStdHandle
GetConsoleMode
will fail if a stream was redirected.
https://stackoverflow.com/questions/33476316/win32-getconsolemode-error-code-6
GetConsoleMode takes A handle to the console input buffer or the console screen buffer. https://docs.microsoft.com/en-us/windows/console/getconsolemode
The standard handles of a process may be redirected by a call to SetStdHandle, in which case GetStdHandle returns the redirected handle. If the standard handles have been redirected, you can specify the CONIN$ value in a call to the CreateFile function to get a handle to a console's input buffer. Similarly, you can specify the CONOUT$ value to get a handle to a console's active screen buffer. https://docs.microsoft.com/en-us/windows/console/getstdhandle
If this is the case it could be handled by oppening CONIN
CONOUT
. (I am not sure though how SetConsoleMode
will work on such handles).
But my point is if GetConsoleMode
fails maybe it'd better to return error in newMaster
?
https://github.com/containerd/console/blob/05dadd92d21fc51f0bf56eadcb4201955cfc98d8/console_windows.go#L32-L67
Thank you.
possibly fixed by #66 and #67 ? these have been in review for 4 months now. Is there any way for the pr's to be implemented? upstream dependencies essentially breaks windows terminal when piping output or setting variables from console commands.