1
0
Fork 1
mirror of https://github.com/TES3MP/openmw-tes3mp.git synced 2025-01-15 16:49:55 +00:00
openmw-tes3mp/components/debug/win32.cpp
Stanislaw Halik 56d79bd4e0 fix typo
2018-12-08 20:58:10 +01:00

60 lines
1.3 KiB
C++

#ifdef _WIN32
#include "win32.hpp"
#undef _CRT_SECURE_NO_WARNINGS
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cstdio>
#include <windows.h>
namespace Debug {
bool attachParentConsole()
{
// we already have a console window
if (GetConsoleWindow() != nullptr)
return true;
// our parent window has a console we can use
if (AttachConsole(ATTACH_PARENT_PROCESS))
{
// start with consistent state
fflush(stdout);
fflush(stderr);
std::cout.flush();
std::cerr.flush();
// fix fprintf(3) and fwprintf(3)
// this looks strange, but nothing is ever simple on Windows.
_wfreopen(L"CON", L"w", stdout);
_wfreopen(L"CON", L"w", stderr);
_wfreopen(L"CON", L"r", stdin);
freopen("CON", "w", stdout);
freopen("CON", "w", stderr);
freopen("CON", "r", stdin);
// it can be verified that input/output works as expected.
#if 0
fprintf(stdout, "ascii stdout\n");
fwprintf(stdout, L"wide stdout\n");
fprintf(stderr, "ascii stderr\n");
fwprintf(stderr, L"wide stderr\n");
std::cout << "ascii cout\n";
std::cout << L"wide cout\n";
std::cerr << "ascii cerr\n";
std::cerr << L"wide cerr\n";
#endif
return true;
}
return false;
}
} // ns Debug
#endif