Bug 753856 - Use CONOUT$ for stderr on Windows. r=ted

This commit is contained in:
Alexandre Poirot 2012-05-24 16:11:34 +02:00
parent 019cfa6b7f
commit 95752b9fb6

View File

@ -336,15 +336,16 @@ nsNativeAppSupportWin::CheckConsole() {
// It will succeed when the parent process is a command line,
// so that stdio will be displayed in it.
if (AttachConsole(ATTACH_PARENT_PROCESS)) {
// Change std handles to refer to new console handles.
// Before doing so, ensure that stdout/stderr haven't been redirected to a valid file
// Change std handles to refer to new console handles. Before doing so,
// ensure that stdout/stderr haven't been redirected to a valid file
if (_fileno(stdout) == -1 || _get_osfhandle(fileno(stdout)) == -1)
freopen("CONOUT$", "w", stdout);
// There isn't any `CONERR$`, so that we merge stderr into CONOUT$
// http://msdn.microsoft.com/en-us/library/windows/desktop/ms683231%28v=vs.85%29.aspx
if (_fileno(stderr) == -1 || _get_osfhandle(fileno(stderr)) == -1)
freopen("CONERR$", "w", stderr);
freopen("CONOUT$", "w", stderr);
if (_fileno(stdin) == -1 || _get_osfhandle(fileno(stdin)) == -1)
freopen("CONIN$", "r", stdin);
return;
}
for ( int i = 1; i < gArgc; i++ ) {