console icon indicating copy to clipboard operation
console copied to clipboard

windows: Why `initStdios` ignores `GetConsoleMode` errors?

Open zhiburt opened this issue 3 years ago • 1 comments

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.

zhiburt avatar Sep 11 '21 12:09 zhiburt

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.

WithHolm avatar Feb 12 '23 13:02 WithHolm